-
Crete a
.envfile in the root directory with the following parameters:- MYSQL_DATABASE = "Name of the MySQL database to create/use."
- MYSQL_USER = "Name of the MySQL user the application will use."
- MYSQL_PASSWORD = "Password for the MySQL user the application will use."
- MYSQL_ROOT_PASSWORD = "Password to set up for the MySQL root user."
- JWT_SECRET_KEY = "256-bit key used to generate the Mercure JWTs."
-
To set up the project for the first time, use the
make runcommand in the root directory. Docker needs to be installed and running.- From this point onwards, using the
make startcommand in the root directory is enough.
- From this point onwards, using the
This project makes use of several Domain-Driven Design practices and other related concepts. Specifically, the project follows the Hexagonal Architecture pattern, and uses Command Query Responsibility Segregation.
-
Stimulus as a light JavaScript framework.
-
Turbo to improve perceived performance by performing requests in the background and updating instead of reloading the page.
-
Chart.js to display charts.
-
FontAwesome for icons.
-
Webpack Encore to manage, process and bundle assets.
-
Mercure for realtime server->client communication.
-
Monolog to write study logs to a file (in bulk).
-
Elastic Stack to efficiently structure and index logs from said file.
-
Doctrine ORM as an Object-Relational-Mapper.
-
Twig to define and render templates from the backend.
-
Symfony as the main framework. Including the following components:
- Symfony Security to manage user accounts with the new authenticator system.
- Symfony Messenger to implement Command, Query and Domain Event buses.
- Symfony UX Turbo to bridge Turbo and Symfony.
- Symfony UX Chart.js to bridge Chart.js and Symfony.
- Other bundles for the rest of the relevant technologies (Twig, Mercure, Monolog...)
-
Ramsey UUID to provide UUID-v4 unique entity identifiers.