This application allows users to create and manage tasks and projects, link them together, and enforce strict business rules around deadlines and completion states.
The project structure, base configuration, and test setup were derived from my own custom FastAPI DDD Template - available at 👉 github.com/veNNNx/fastAPI-bookshop-DDD-template
- Managing Tasks and Projects
- Enforcing deadline and completion constraints
- Maintaining clear domain boundaries
- Providing Swagger API documentation
- Running via Docker Compose
- Testing via pytest
- CI via GitHub Actions
- JWT-based authentication
- Create, retrieve, update, and delete tasks
- Mark tasks as completed or reopened
- Filter tasks by completion state, overdue status, or project
- Create, retrieve, update, and delete projects
- Get all tasks linked to a specific project
- Link or unlink tasks to/from projects
- A task can belong to only one project
- Prevent linking/unlinking tasks from completed projects
- Deadline Constraints:
- A task's deadline cannot exceed the project's deadline.
- If a project’s deadline is shortened, associated task deadlines are adjusted accordingly.
- Completion Lifecycle:
- A project can only be completed if all tasks are completed.
- Reopening a completed task reopens its project.
- Configurable auto-complete behavior when the last open task is finished.
- Logs when a task is marked completed
- Logs warnings for tasks nearing their deadline (<24h)
To automate testing and code quality checks, this project includes a GitHub Actions workflow that:
Runs on every pull request and push
- Installs Python 3.11 and Poetry
- Installs dependencies
- Runs pre-commit hooks for linting/formatting checks
- Executes the test suite with pytest
- FastAPI – async web framework for the API layer
- Domain-Driven Design (DDD) architecture
- Dependency Injection – via
dependency-injector - SQLAlchemy – ORM with SQLite backend
- Poetry – dependency & virtual environment management
- Pre-commit hooks – code quality checks
- Docker Compose – containerized setup for easy deployment
- Swagger / OpenAPI – interactive API docs at
/docs
This project uses Poetry for dependency management and virtual environments.
poetry install --no-rootThis project uses pre-commit to automate code quality checks and enforce best practices before commits.