API REST para gerenciamento de tarefas e projetos, inspirada em ferramentas como Trello e Jira. Construída seguindo padrões de arquitetura em camadas usados em ambientes profissionais, como projeto de portfólio para vagas de Estágio e Desenvolvedor Backend Júnior.
REST API for task and project management, inspired by tools like Trello and Jira. Built following layered architecture patterns used in professional environments, as a portfolio project for Internship and Junior Backend Developer roles.
- Python 3.13
- FastAPI — async web framework
- PostgreSQL + SQLAlchemy 2.0 (modern style,
Mapped/mapped_column) - psycopg3 — async PostgreSQL driver
- Alembic — database migrations
- JWT — authentication
- Docker + Docker Compose
- Pytest — automated testing
- GitHub Actions — continuous integration
app/api/: HTTP routes (thin controllers, no business logic)app/services/: business rules (from Step 5 onward)app/repositories/: data access (from Step 5 onward)app/models/: ORM entities (SQLAlchemy) (from Step 2 onward)app/schemas/: API input/output contracts (Pydantic) (from Step 3 onward)app/core/: cross-cutting configuration, security, logging, exceptions
- Copy the environment variables file / Copie o arquivo de variáveis de ambiente:
cp .env.example .env- Start the containers / Suba os containers:
docker compose up --build- The API will be available at / A API estará disponível em
http://localhost:8000. - Interactive docs (Swagger) / Documentação interativa:
http://localhost:8000/docs
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements-dev.txt
pytest -v- Step 1 — Project setup (Docker, config, logging, health check)
- Step 2 — Database layer (SQLAlchemy + Alembic)
- Step 3 — Authentication (JWT)
- Step 4 — Global exception handling
- Step 5 — Projects CRUD
- Step 6 — Tasks CRUD
- Step 7 — Pagination, filtering, search and sorting
- Step 8 — Test suite consolidation
- Step 9 — Stats dashboard
- Step 10 — CSV export
- Step 11 — File attachments upload
- Step 12 — Overdue tasks automation
- Step 13 — CI with GitHub Actions
- Step 14 — Final documentation