An open API service indexing awesome lists of open source software.

https://github.com/mateus-dev-me/task-manager-fastapi

Rest API for task management written in Python with FastAPI.
https://github.com/mateus-dev-me/task-manager-fastapi

continues-integration docker-compose fastapi postgresql pyproject-toml python testdrivendevlopment

Last synced: about 2 months ago
JSON representation

Rest API for task management written in Python with FastAPI.

Awesome Lists containing this project

README

          

# šŸš€ TaskManager FastAPI
[![Python Version](https://img.shields.io/badge/Python-3.13%2B-blue)](https://www.python.org/downloads/release)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.115.8%2B-green)](https://docs.djangoproject.com/en/stable/releases/)

TaskManager é uma API RESTful desenvolvida com **FastAPI** para gerenciar usuÔrios e tarefas. A API fornece autenticação baseada em token e operações CRUD para usuÔrios e tarefas. Você pode executÔ-la localmente ou dentro de contêineres Docker.

## šŸ“– Documentação da API

A documentação interativa da API estÔ disponível no Swagger UI:

- **[TaskManager API Docs (Swagger UI)](https://task-manager-fastapi.fly.dev/docs)**

## šŸ“Œ Tecnologias Utilizadas

- **Python 3.13+**
- **FastAPI** (Framework principal)
- **Uvicorn** (Servidor ASGI)
- **SQLAlchemy 2.0** (ORM)
- **PostgreSQL**
- **Pydantic** (Validação e tipagem)
- **JWT (JSON Web Token)** (Autenticação)
- **Pytest** (TDD)
- **Alembic** (MigraƧƵes de banco de dados)
- **Docker & Docker Compose** (Containerização)
- **Github Actions** (Integração Contínua)
- **Fly.io** (Hospedagem)

---

## Endpoints da API

### šŸ” Autenticação

| Método | Rota | Descrição |
|-------:|:------------------------------|:---------------------------|
| `POST` | `/api/v1/auth/token` | Obter token de acesso |
| `POST` | `/api/v1/auth/refresh_token` | Renovar token de acesso |

### šŸ‘¤ UsuĆ”rios

| Método | Rota | Descrição |
|---------:|:--------------------------|:---------------------|
| `POST` | `/api/v1/users/` | Criar usuƔrio |
| `GET` | `/api/v1/users/` | Listar usuƔrios |
| `GET` | `/api/v1/users/{user_id}` | Obter detalhes |
| `PUT` | `/api/v1/users/{user_id}` | Atualizar usuƔrio |
| `DELETE` | `/api/v1/users/{user_id}` | Excluir usuƔrio |

### āœ… Tarefas

| Método | Rota | Descrição |
|---------:|:---------------------------|:---------------------|
| `POST` | `/api/v1/tasks/` | Criar tarefa |
| `GET` | `/api/v1/tasks/` | Listar tarefas |
| `PATCH` | `/api/v1/tasks/{task_id}` | Atualizar tarefa |
| `DELETE` | `/api/v1/tasks/{task_id}` | Excluir tarefa |

---

# šŸ“ Descrição dos Diretórios

A estrutura do projeto estÔ organizada para promover uma separação clara de responsabilidades, facilitando a manutenção, escalabilidade e testes. A seguir, uma breve descrição de cada diretório e seus arquivos:

## app/
- **main.py**
Ponto de entrada da aplicação. Inicializa a instância do FastAPI, registra os routers e configurações iniciais do servidor.

## app/core/
- **config.py**
ResponsÔvel por carregar as configurações globais da aplicação (ex.: variÔveis de ambiente, URL do banco, chave secreta).
- **security.py**
Contém funções e classes relacionadas à segurança, como a implementação e verificação de tokens JWT.

## app/database/
- **models.py**
Define os modelos de dados utilizando um ORM (por exemplo, SQLAlchemy) para representar as tabelas do banco de dados.
- **session.py**
Gerencia a sessão de conexão com o banco de dados, facilitando a execução de queries e a gestão de transações.

## app/repositories/
- **task_repository.py**
Implementa a camada de acesso a dados para as tarefas, encapsulando operaƧƵes CRUD.
- **user_repository.py**
Implementa a camada de acesso a dados para os usuÔrios, abstraindo as operações de persistência.

## app/routers/
- **v1/**
Diretório destinado à versão 1 da API, permitindo o versionamento das rotas.
- **endpoints/**
ContƩm os controladores que definem os endpoints da API.
- **auth_controller.py**
Gerencia os endpoints de autenticação (login, renovação de token, etc.).
- **task_controller.py**
Define os endpoints para o gerenciamento das tarefas (criação, listagem, atualização e exclusão).
- **user_controller.py**
Define os endpoints para o gerenciamento dos usuÔrios (criação, listagem, atualização e exclusão).

## app/schemas/
- **base.py**
Define esquemas bÔsicos e modelos compartilhados entre diferentes partes da aplicação.
- **tasks.py**
Esquemas para a validação e serialização dos dados relacionados às tarefas.
- **token.py**
Esquemas para manipulação dos dados dos tokens JWT, facilitando a geração e validação.
- **users.py**
Esquemas para a validação e serialização dos dados dos usuÔrios.

## app/services/
- **task_service.py**
Contém a lógica de negócio para operações relacionadas às tarefas, coordenando a interação entre repositórios e controladores.
- **user_service.py**
Contém a lógica de negócio para operações relacionadas aos usuÔrios, encapsulando regras de validação e manipulação de dados.

---

## šŸ“œ LicenƧa
Este projeto estƔ sob a licenƧa **MIT**. Sinta-se Ơ vontade para usƔ-lo, modificƔ-lo e contribuir!