This is a web-based TODO application built using the Symfony PHP framework. The application provides user authentication and task management functionality, allowing users to create, track, and manage their personal TODO lists. Application can also be configured to delete tasks after a specified period of time.
- User Registration and Authentication
- Create new tasks
- Mark tasks as finished
- Delete tasks
- Persistent storage of tasks in database
- Secure user-specific task management
- Automatic task deletion
This assignment is under active development. The main branch (master
) contains the stable implementation of the core features as specified.
- Git
- Docker and docker-compose package
- Clone the repository
git clone https://github.com/gitnjole/todo-be.git
cd todo-be
- Create and fill .env file
cp .env.example .env
- Build Docker containers
docker compose build
- Start Docker
docker compose up -d
- Access the application at localhost:8080
src
├── Command # Handles scheduled task deletion
│ ├── ConfigureTaskDeletionCommand.php
│ └── ScheduleTaskDeletionCommand.php
├── Controller # Handles HTTP requests and responses
│ ├── SecurityController.php
│ ├── TaskController.php
│ └── UserController.php
├── Entity # Database entity definitions
│ ├── Task.php
│ └── User.php
├── Form # Form type definitions
│ ├── RegistrationType.php
│ └── TaskType.php
├── Repository # Database query repositories
│ ├── TaskRepository.php
│ └── UserRepository.php
├── Security # Authentication and authorization
│ ├── AppAuthenticator.php
│ └── TaskVoter.php
└── Service # Business logic services
├── TaskAutoDeleteService.php
├── TaskService.php
└── UserService.php
- New users can register via the registration form
- Registered users can log in with their credentials
- After login, users are directed to their personal TODO list
- Password hashing
- User-specific task access control
- CSRF protection
- Authentication firewall
- Environment defined login for services
php bin/phpunit
Currently, there are two tests, TaskServiceTest
and UserServiceTest
which both cover core business logic.
docker compose exec php vendor/bin/phpstan analyse src
Expected output:
[OK] No errors