A powerful API backend to make our quiz app work using best practices, in a scalable way. The API is GraphQL ready, ElasticSearch ready, with support for JSON, JSON hydra.
Live version available here: quizz-api.xtipper.com/api Frontend application is available here: quizz.xtipper.com
To understand the entire architecture and step by step guide behind this project, please follow this blog post
- Create a
.env
file at the root of the project, and replace the placeholders with your own credentials
# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
#
# * .env contains default values for the environment variables needed by the app
# * .env.local uncommitted file with local overrides
# * .env.$APP_ENV committed environment-specific defaults
# * .env.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env files.
#
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
# https://symfony.com/doc/current/configuration/secrets.html
#
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=5daa2084ade944054653163da1e87ef7
###< symfony/framework-bundle ###
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
DATABASE_URL="mysql://__MYSQL_USER__:__MYSQL_PASSWORD__@127.0.0.1:3306/__MYSQL_DATABASE__?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
#DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=15&charset=utf8"
###< doctrine/doctrine-bundle ###
###> nelmio/cors-bundle ###
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
###< nelmio/cors-bundle ###
-
Copy the nginx file
nginx_quiz-api
to your nginx sites-enabled folder (make sure to change directories and ports accordingly) -
Run the below commands
composer install
bin/console doctrine:schema:drop
bin/console doctrine:schema:create
- Start Built-in server
symfony serve
service nginx restart
If you do not have symfony
command, please refer to that tutorial.
-
Setup the standalone websocket server located here
-
Setup the frontend SPA application built under VueJS here
-
Visit your exposed API using Swagger at this location
http://localhost/api