Uma API RESTful completa desenvolvida com FastAPI para gerenciamento de tarefas (To-Do List). Este projeto foi criado como resposta ao #DesafioDaSemana, implementando todas as operações CRUD (Create, Read, Update, Delete) de forma profissional e eficiente.
A API oferece funcionalidades avançadas como filtragem por status e prioridade, paginação, estatísticas de tarefas e documentação interativa automática.
- ✅ Criar tarefas com título, descrição, status e prioridade
 - 📋 Listar todas as tarefas com filtros opcionais
 - 🔍 Buscar tarefa específica por ID
 - ✏️ Atualizar tarefas (parcial ou completa)
 - 🗑️ Deletar tarefas
 - 📊 Estatísticas (total, concluídas, pendentes, taxa de conclusão)
 - 🎯 Sistema de prioridades (baixa, média, alta)
 - 🔄 Paginação para grandes volumes de dados
 - 📚 Documentação interativa automática (Swagger UI e ReDoc)
 - 🌐 CORS habilitado para integração com frontends
 
- FastAPI: Framework web moderno e de alta performance
 - Pydantic: Validação de dados e serialização
 - Uvicorn: Servidor ASGI de alta performance
 - Python 3.11+: Linguagem de programação
 
- Python 3.11 ou superior
 - pip (gerenciador de pacotes Python)
 
git clone https://github.com/gabriellafis/fastapi-todo-api.git
cd fastapi-todo-apipython -m venv venv
source venv/bin/activate  # Linux/Mac
# ou
venv\Scripts\activate  # Windowspip install -r requirements.txtuvicorn main:app --reloadA API estará disponível em: http://localhost:8000
Após iniciar o servidor, acesse:
- Swagger UI (interativa): http://localhost:8000/docs
 - ReDoc (alternativa): http://localhost:8000/redoc
 
| Método | Endpoint | Descrição | 
|---|---|---|
GET | 
/ | 
Página inicial da API | 
POST | 
/tasks | 
Criar nova tarefa | 
GET | 
/tasks | 
Listar todas as tarefas | 
GET | 
/tasks/{task_id} | 
Buscar tarefa específica | 
PUT | 
/tasks/{task_id} | 
Atualizar tarefa | 
DELETE | 
/tasks/{task_id} | 
Deletar tarefa | 
GET | 
/tasks/stats/summary | 
Obter estatísticas | 
curl -X POST "http://localhost:8000/tasks" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Estudar FastAPI",
    "description": "Completar tutorial oficial",
    "priority": "high",
    "completed": false
  }'curl -X GET "http://localhost:8000/tasks"curl -X GET "http://localhost:8000/tasks?completed=false&priority=high"curl -X PUT "http://localhost:8000/tasks/{task_id}" \
  -H "Content-Type: application/json" \
  -d '{
    "completed": true
  }'curl -X DELETE "http://localhost:8000/tasks/{task_id}"curl -X GET "http://localhost:8000/tasks/stats/summary"fastapi-todo-api/
├── main.py              # Aplicação principal
├── requirements.txt     # Dependências do projeto
├── .gitignore          # Arquivos ignorados pelo Git
└── README.md           # Documentação
{
  "id": "uuid-string",
  "title": "Título da tarefa",
  "description": "Descrição opcional",
  "completed": false,
  "priority": "medium",
  "created_at": "2025-10-01T10:00:00",
  "updated_at": "2025-10-01T10:00:00"
}Campos:
id(string): Identificador único (UUID)title(string): Título da tarefa (obrigatório, 1-200 caracteres)description(string): Descrição detalhada (opcional, até 1000 caracteres)completed(boolean): Status de conclusão (padrão: false)priority(string): Prioridade - "low", "medium" ou "high" (padrão: "medium")created_at(datetime): Data/hora de criaçãoupdated_at(datetime): Data/hora da última atualização
- Persistência em banco de dados (PostgreSQL/MongoDB)
 - Autenticação e autorização (JWT)
 - Testes automatizados (pytest)
 - Sistema de tags para categorização
 - Datas de vencimento e lembretes
 - Dockerização da aplicação
 - Deploy em produção (Heroku/Railway/Render)
 
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Gabriel Demetrios Lafis
- GitHub: @gabriellafis
 
Contribuições, issues e feature requests são bem-vindos!
A complete RESTful API developed with FastAPI for task management (To-Do List). This project was created as a response to the #WeeklyChallenge, implementing all CRUD operations (Create, Read, Update, Delete) in a professional and efficient manner.
The API offers advanced features such as filtering by status and priority, pagination, task statistics, and automatic interactive documentation.
- ✅ Create tasks with title, description, status, and priority
 - 📋 List all tasks with optional filters
 - 🔍 Search specific task by ID
 - ✏️ Update tasks (partial or complete)
 - 🗑️ Delete tasks
 - 📊 Statistics (total, completed, pending, completion rate)
 - 🎯 Priority system (low, medium, high)
 - 🔄 Pagination for large data volumes
 - 📚 Automatic interactive documentation (Swagger UI and ReDoc)
 - 🌐 CORS enabled for frontend integration
 
- FastAPI: Modern, high-performance web framework
 - Pydantic: Data validation and serialization
 - Uvicorn: High-performance ASGI server
 - Python 3.11+: Programming language
 
- Python 3.11 or higher
 - pip (Python package manager)
 
git clone https://github.com/gabriellafis/fastapi-todo-api.git
cd fastapi-todo-apipython -m venv venv
source venv/bin/activate  # Linux/Mac
# or
venv\Scripts\activate  # Windowspip install -r requirements.txtuvicorn main:app --reloadThe API will be available at: http://localhost:8000
After starting the server, access:
- Swagger UI (interactive): http://localhost:8000/docs
 - ReDoc (alternative): http://localhost:8000/redoc
 
| Method | Endpoint | Description | 
|---|---|---|
GET | 
/ | 
API home page | 
POST | 
/tasks | 
Create new task | 
GET | 
/tasks | 
List all tasks | 
GET | 
/tasks/{task_id} | 
Get specific task | 
PUT | 
/tasks/{task_id} | 
Update task | 
DELETE | 
/tasks/{task_id} | 
Delete task | 
GET | 
/tasks/stats/summary | 
Get statistics | 
curl -X POST "http://localhost:8000/tasks" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Study FastAPI",
    "description": "Complete official tutorial",
    "priority": "high",
    "completed": false
  }'curl -X GET "http://localhost:8000/tasks"curl -X GET "http://localhost:8000/tasks?completed=false&priority=high"curl -X PUT "http://localhost:8000/tasks/{task_id}" \
  -H "Content-Type: application/json" \
  -d '{
    "completed": true
  }'curl -X DELETE "http://localhost:8000/tasks/{task_id}"curl -X GET "http://localhost:8000/tasks/stats/summary"fastapi-todo-api/
├── main.py              # Main application
├── requirements.txt     # Project dependencies
├── .gitignore          # Files ignored by Git
└── README.md           # Documentation
{
  "id": "uuid-string",
  "title": "Task title",
  "description": "Optional description",
  "completed": false,
  "priority": "medium",
  "created_at": "2025-10-01T10:00:00",
  "updated_at": "2025-10-01T10:00:00"
}Campos:
id(string): Identificador único (UUID)title(string): Título da tarefa (obrigatório, 1-200 caracteres)description(string): Descrição detalhada (opcional, até 1000 caracteres)completed(boolean): Status de conclusão (padrão: false)priority(string): Prioridade - "low", "medium" ou "high" (padrão: "medium")created_at(datetime): Data/hora de criaçãoupdated_at(datetime): Data/hora da última atualização
- Database persistence (PostgreSQL/MongoDB)
 - Authentication and authorization (JWT)
 - Automated tests (pytest)
 - Tag system for categorization
 - Due dates and reminders
 - Docker containerization
 - Production deployment (Heroku/Railway/Render)
 
This project is under the MIT license. See the LICENSE file for more details.
Gabriel Demetrios Lafis
- GitHub: @gabriellafis
 
Contribuições, issues, and feature requests are welcome!
⭐ If you liked this project, give it a star! ⭐
