Thesis management system based on Symfony 7.2
This project is for teachers and students whose interest is to streamline the process of leading the final work. This is especially true for those teachers who carry out the final theses of several dozen students a year.
- PHP 8.3 or higher
- MySQL
- Redis
- RabbitMq
- Elasticsearch
- Composer
- NPM
- Mercure
- Minio
- Kibana
- or you can use docker
- Administration panel
- Management of users(student, opponent, consultant)
- Management of thesis
- Assigning tasks to students
- Scheduling of meetings by the supervisor
- Uploading unfinished/finished versions of final thesis and downloading them
- Chat communication between the supervisor and others
- Sending a bulk message to users
- Email notification of new events in the system
- Multi languages
- An API that covers most of the data
- Unit test
- Cypress test
- and more other features
- API Platform - API Platform is a next-generation web framework designed to easily create API-first projects
- EasyAdmin - EasyAdmin creates administration backends. erd diagram
- KnpMenuBundle - The KnpMenuBundle integrates the KnpMenu PHP library with Symfony
- KnpMarkdownBundle - Provide markdown conversion (based on Michel Fortin work) to your Symfony projects
- RedisBundle - This bundle integrates Predis and phpredis into your Symfony application
- OverblogGraphQLBundle - This Symfony bundle provides integration of GraphQL
- OverblogGraphiQLBundle - This Symfony bundle provides integration of GraphiQL interface to your Symfony application
- Doctrine Behavioral Extensions - This package contains extensions tools to use Doctrine more efficiently
- RabbitMqBundle - Incorporates messaging in your application via RabbitMQ using the php-amqplib library
- FOSElasticaBundle - his bundle provides integration with Elasticsearch and Elastica
- AsyncBundle - Symfony bundle provides simple delayed function call
- CacheResponseBundle - Symfony bundle provides cache controller response
- DoctrineEntityDtoBundle - The Symfony bundle provides a simple mechanism to convert Doctrine entities to DTO objects
- HashidsBundle - Integrates hashids/hashids in a Symfony project
- ObjectToArrayTransformBundle - Symfony bundle provides convert object to an array by configuration fields
- ParameterBundle - Symfony bundle provides comfortable getting parameters from config
- PermissionMiddlewareBundle - Symfony bundle provides simple mechanism control permission for class or his method
- RenderServiceTwigExtensionBundle - Symfony twig extension bundle provides rendering service method
- SelectAutocompleterBundle - Symfony bundle provides simple integration with select2
- Symfony console input validation - Provide a simple method for adding input validation to Symfony console commands
- TranslatorBundle - Symfony bundle provides simple management of system translations
Higher resolution: git/readme/erd_diagram.png
This project utilizes the OpenTelemetry API SDK
, manually configured specifically for this project using hooks.
You can change configuration in the file:
file: .env or .env.local
Configure the database connection, SMTP and other connection:
DATABASE_URL=mysql://root:@mysql:3306/final_work_system
MESSENGER_TRANSPORT_DSN=amqp://guest:guest@rabbitmq:5672
ELASTICSEARCH_URL=http://elasticsearch:9200/
MAILER_DSN=smtp://user:pass@localhost:25
REDIS_HOST=redis
REDIS_PORT=6379
Google api keys:
GOOGLE_ANALYTICS_CODE=GOOGLE_ANALYTICS_CODE
GOOGLE_MAPS_KEY=GOOGLE_MAPS_KEY
Email notifications:
EMAIL_NOTIFICATION_SENDER=[email protected]
EMAIL_NOTIFICATION_ENABLE_SEND=true
EMAIL_NOTIFICATION_MESSENGER=true
EMAIL_NOTIFICATION_ENABLE_ADD_TO_QUEUE=true
Install all the necessary npm dependencies:
$ bin/npm-first-install.sh
Install all the necessary php dependencies:
$ bin/composer-first-install.sh
Create user
$ bin/console app:user-add
or you can import test data dump.sql
$ bin/console app:import-sql docker/mysql/data/dump.sql
Run docker:
docker-compose -f docker-compose.yml up -d
Run command under node image CLI or you can docker-compose:
docker-compose exec -T node sh bin/npm-first-install.sh
Run command under php image CLI or you can docker-compose:
docker-compose exec -T php sh bin/composer-first-install.sh
Now you can access the application via localhost:9090.
FinalWork application is completely free and released under the MIT License.
Created by Vladimir Danilov.