API REST para gerenciamento de tarefas, com autenticação de usuários, construída como projeto de estudo aplicado, cobrindo o ciclo completo de desenvolvimento: back-end, testes automatizados, containerização, deploy em nuvem e front-end de consumo.
🔗 Front-end (GitHub Pages): https://sugixp.github.io/task-api/
Este projeto evoluiu a partir de um CRUD simples em Python/SQLite para uma API mais robusta, com o objetivo de demonstrar na prática conceitos usados em ambientes profissionais: autenticação segura, isolamento de dados por usuário, testes automatizados, containerização e deploy em nuvem.
- Python 3 — linguagem principal
- FastAPI — framework web para construção da API
- SQLAlchemy — ORM para modelagem e acesso ao banco de dados
- SQLite — banco de dados relacional
- Pydantic — validação de dados de entrada e saída
- JWT (python-jose) — autenticação baseada em token
- Passlib + bcrypt — hash seguro de senhas
- Pytest — testes automatizados
- Docker — containerização da aplicação
- AWS Elastic Beanstalk — deploy e hospedagem em nuvem
- HTML, CSS e JavaScript — front-end de consumo da API
- Cadastro e login de usuários, com senha protegida por hash
- Autenticação via token JWT
- CRUD completo de tarefas (criar, listar, atualizar, remover)
- Cada usuário só acessa suas próprias tarefas (isolamento por autenticação)
- Documentação interativa automática (Swagger) em
/docs - Testes automatizados cobrindo os principais fluxos (sucesso e erro)
- Front-end simples para demonstrar o consumo real da API
task-api/
├── main.py # Rotas da API
├── models.py # Modelos de dados (SQLAlchemy)
├── database.py # Configuração de conexão com o banco
├── auth.py # Lógica de hash de senha e geração de token JWT
├── test_main.py # Testes automatizados (pytest)
├── requirements.txt # Dependências do projeto
├── Dockerfile # Definição do container
├── docs/ # Front-end (HTML, CSS, JS) publicado via GitHub Pages
│ ├── index.html
│ ├── style.css
│ └── script.js
└── README.md
# Clonar o repositório
git clone https://github.com/sugixp/task-api.git
cd task-api
# Criar e ativar ambiente virtual
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# Instalar dependências
pip install -r requirements.txt
# Rodar o servidor
uvicorn main:app --reloadA API estará disponível em http://127.0.0.1:8000, com documentação interativa em http://127.0.0.1:8000/docs.
eb init # se necessário reconfigurar localmente
eb create task-api-envApós alguns minutos, o comando retorna a URL pública do ambiente ativo.
docker build -t task-api .
docker run -p 8000:8000 task-apipytest -v| Método | Rota | Descrição | Autenticação |
|---|---|---|---|
| POST | /registrar |
Cria um novo usuário | Não |
| POST | /login |
Autentica e retorna token JWT | Não |
| GET | /tarefas |
Lista as tarefas do usuário logado | Sim |
| POST | /tarefas |
Cria uma nova tarefa | Sim |
| GET | /tarefas/{id} |
Busca uma tarefa específica | Sim |
| PUT | /tarefas/{id} |
Atualiza uma tarefa | Sim |
| DELETE | /tarefas/{id} |
Remove uma tarefa | Sim |
Uma interface simples em HTML, CSS e JavaScript puro consome a API para demonstrar seu uso real: tela de login/registro e gerenciamento de tarefas (criar, marcar como concluída, remover). Está publicada via GitHub Pages, na pasta docs/ deste mesmo repositório.
Este projeto tem fins de estudo e portfólio, e algumas decisões refletem esse escopo:
- Banco de dados SQLite dentro do container: os dados não persistem entre reinicializações do ambiente na AWS. Em um cenário de produção, seria usado um banco gerenciado externo.
- Próximos passos planejados: migrar para um banco de dados persistente, e adicionar paginação nas listagens.
Henrique Sadao Sugi Estudante de Análise e Desenvolvimento de Sistemas — PUCPR LinkedIn · GitHub · Portfólio