Bootcamp Luizalabs - Back-end com Python.
🏋️♂️ API Workout Python
API RESTful para gerenciamento de atletas, categorias e centros de treinamento, construída com FastAPI, SQLAlchemy, Alembic e Docker.
Projetada com arquitetura modular, testes automatizados e integração contínua.
🧭 Índice
- ⚡ Tecnologias
- 🖥️ Requisitos de Hardware e Software
- 📁 Estrutura de Pastas
- 🧰 Arquivos Importantes
- 🚀 Como Rodar o Projeto
- 📡 Exemplos de Requisições
- 🧪 Testes Automatizados
- 🐳 Uso com Docker
- 📬 Coleção Postman
- 📜 Licença
⚡ Tecnologias
- Linguagem: Python 3.11+
- Framework: FastAPI
- ORM: SQLAlchemy
- Migrações: Alembic
- Banco de Dados: PostgreSQL
- Testes: Pytest
- Containerização: Docker + Docker Compose
- CI/CD: GitHub Actions
🖥️ Requisitos de Hardware e Software
Hardware (mínimo recomendado)
-
CPU Dual-Core (2 GHz+)
-
4 GB de RAM
-
500 MB de espaço em disco para o projeto e dependências
Software
-
Docker e Docker Compose (opcional, para execução containerizada)
📁 Estrutura de Pastas
🧰 Arquivos Importantes
| Arquivo | Função |
|---|---|
app/exceptions/handlers.py |
Define handlers globais de exceções (ex: 404, 500). |
app/utils/pagination.py |
Funções auxiliares para paginação de resultados nas rotas. |
tests/conftest.py |
Configuração global dos testes (ex: fixtures de BD e client). |
tests/test_atleta.py |
Testes automatizados dos endpoints de Atleta. |
migrations/ |
Diretório gerado pelo Alembic para versionar schema do banco. |
docker/Dockerfile |
Receita de build da imagem da aplicação. |
docker/gunicorn_conf.py |
Configuração do Gunicorn para produção. |
docker-compose.yml |
Sobe os containers de app e banco com um comando. |
.env.example |
Modelo de variáveis de ambiente (DB_HOST, DB_USER, etc). |
.gitignore |
Arquivos e pastas ignorados pelo Git. |
Makefile |
Comandos prontos: make run, make test, make migrate. |
requirements.txt |
Lista de pacotes Python necessários. |
🚀 Como Rodar o Projeto
1️⃣ Clonar o repositório
git clone https://github.com/Santosdevbjj/apiWorkoutPython.git
cd apiWorkoutPython
---2️⃣ Configurar variáveis de ambiente
cp .env.example .env
3️⃣ Instalar dependências
python -m venv venv source venv/bin/activate # (Windows: venv\Scripts\activate) pip install -r requirements.txt
4️⃣ Criar banco de dados e aplicar migrações
alembic upgrade head
5️⃣ Rodar servidor de desenvolvimento
uvicorn app.main:app --reload
Acesse 👉 http://localhost:8000/docs para testar a API.
📡 Exemplos de Requisições
✅ Criar Atleta (POST /api/v1/atletas/)
cURL
curl -X POST http://localhost:8000/api/v1/atletas/
-H "Content-Type: application/json"
-d '{
"nome": "João Silva",
"idade": 25,
"categoria_id": 1,
"centro_treinamento_id": 1
}'
Postman
Método: POST
URL: http://localhost:8000/api/v1/atletas/
Body: raw (JSON) conforme exemplo acima.
📋 Listar Atletas (GET /api/v1/atletas/)
curl http://localhost:8000/api/v1/atletas/?page=1&size=10
✏️ Atualizar Atleta (PUT /api/v1/atletas/{id})
curl -X PUT http://localhost:8000/api/v1/atletas/1
-H "Content-Type: application/json"
-d '{"nome": "João Souza"}'
🗑️ Deletar Atleta (DELETE /api/v1/atletas/{id})
curl -X DELETE http://localhost:8000/api/v1/atletas/1
🧪 Testes Automatizados
Executar todos os testes com Pytest:
pytest -v
🐳 Uso com Docker
Build + Start
docker-compose up --build
A aplicação estará disponível em: http://localhost:8000
📬 Coleção Postman
Você pode importar a coleção Postman disponível em:
postman/apiWorkoutPython.postman_collection.json
A coleção inclui exemplos prontos de requisições para todos os endpoints principais.
📜 Licença
Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.
✨ Autor
Sérgio Santos 📌 Desenvolvedor | Analista de Sistemas
Contato:
