Skip to content

Commit ff4c795

Browse files
authored
Update README.md
1 parent 64f27a4 commit ff4c795

File tree

1 file changed

+227
-0
lines changed

1 file changed

+227
-0
lines changed

README.md

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,233 @@
1111
---
1212

1313

14+
# 🏋️‍♂️ API Workout Python
15+
16+
![Python](https://img.shields.io/badge/Python-3.11-blue?logo=python)
17+
![FastAPI](https://img.shields.io/badge/FastAPI-0.100+-brightgreen?logo=fastapi)
18+
![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15-blue?logo=postgresql)
19+
![Docker](https://img.shields.io/badge/Docker-Ready-blue?logo=docker)
20+
![CI](https://github.com/Santosdevbjj/apiWorkoutPython/actions/workflows/ci.yml/badge.svg)
21+
![License](https://img.shields.io/badge/License-MIT-yellow.svg)
22+
23+
> API RESTful para gerenciamento de **atletas**, **categorias** e **centros de treinamento**, construída com FastAPI, SQLAlchemy, Alembic e Docker.
24+
> Projetada com arquitetura modular, testes automatizados e integração contínua.
25+
26+
---
27+
28+
## 🧭 Índice
29+
30+
- [⚡ Tecnologias](#-tecnologias)
31+
- [🖥️ Requisitos de Hardware e Software](#️-requisitos-de-hardware-e-software)
32+
- [📁 Estrutura de Pastas](#-estrutura-de-pastas)
33+
- [🧰 Arquivos Importantes](#-arquivos-importantes)
34+
- [🚀 Como Rodar o Projeto](#-como-rodar-o-projeto)
35+
- [📡 Exemplos de Requisições](#-exemplos-de-requisições)
36+
- [🧪 Testes Automatizados](#-testes-automatizados)
37+
- [🐳 Uso com Docker](#-uso-com-docker)
38+
- [📬 Coleção Postman](#-coleção-postman)
39+
- [📜 Licença](#-licença)
40+
41+
---
42+
43+
## ⚡ Tecnologias
44+
45+
- **Linguagem:** Python 3.11+
46+
- **Framework:** FastAPI
47+
- **ORM:** SQLAlchemy
48+
- **Migrações:** Alembic
49+
- **Banco de Dados:** PostgreSQL
50+
- **Testes:** Pytest
51+
- **Containerização:** Docker + Docker Compose
52+
- **CI/CD:** GitHub Actions
53+
54+
---
55+
56+
## 🖥️ Requisitos de Hardware e Software
57+
58+
### Hardware (mínimo recomendado)
59+
- CPU Dual-Core (2 GHz+)
60+
- 4 GB de RAM
61+
- 500 MB de espaço em disco para o projeto e dependências
62+
63+
### Software
64+
- [Python 3.11+](https://www.python.org/downloads/)
65+
- [PostgreSQL 15+](https://www.postgresql.org/)
66+
- [Docker](https://www.docker.com/) e [Docker Compose](https://docs.docker.com/compose/) (opcional, para execução containerizada)
67+
- [Git](https://git-scm.com/)
68+
69+
---
70+
71+
## 📁 Estrutura de Pastas
72+
73+
<img width="838" height="1766" alt="Screenshot_20251011-191149" src="https://github.com/user-attachments/assets/a570aae9-8a25-4520-9aed-4a031f4b4afe" />
74+
75+
76+
---
77+
78+
---
79+
80+
## 🧰 Arquivos Importantes
81+
82+
| Arquivo | Função |
83+
|---------|--------|
84+
| `app/exceptions/handlers.py` | Define handlers globais de exceções (ex: 404, 500). |
85+
| `app/utils/pagination.py` | Funções auxiliares para paginação de resultados nas rotas. |
86+
| `tests/conftest.py` | Configuração global dos testes (ex: fixtures de BD e client). |
87+
| `tests/test_atleta.py` | Testes automatizados dos endpoints de Atleta. |
88+
| `migrations/` | Diretório gerado pelo Alembic para versionar schema do banco. |
89+
| `docker/Dockerfile` | Receita de build da imagem da aplicação. |
90+
| `docker/gunicorn_conf.py` | Configuração do Gunicorn para produção. |
91+
| `docker-compose.yml` | Sobe os containers de app e banco com um comando. |
92+
| `.env.example` | Modelo de variáveis de ambiente (DB_HOST, DB_USER, etc). |
93+
| `.gitignore` | Arquivos e pastas ignorados pelo Git. |
94+
| `Makefile` | Comandos prontos: `make run`, `make test`, `make migrate`. |
95+
| `requirements.txt` | Lista de pacotes Python necessários. |
96+
97+
---
98+
99+
## 🚀 Como Rodar o Projeto
100+
101+
### 1️⃣ Clonar o repositório
102+
```bash
103+
git clone https://github.com/Santosdevbjj/apiWorkoutPython.git
104+
cd apiWorkoutPython
105+
106+
107+
---
108+
```
109+
110+
111+
112+
2️⃣ **Configurar variáveis de ambiente**
113+
114+
cp .env.example .env
115+
# Edite as variáveis conforme seu ambiente (DB, PORTA, etc.)
116+
117+
3️⃣ **Instalar dependências**
118+
119+
python -m venv venv
120+
source venv/bin/activate # (Windows: venv\Scripts\activate)
121+
pip install -r requirements.txt
122+
123+
4️⃣ **Criar banco de dados e aplicar migrações**
124+
125+
alembic upgrade head
126+
127+
5️⃣ **Rodar servidor de desenvolvimento**
128+
129+
uvicorn app.main:app --reload
130+
131+
Acesse 👉 http://localhost:8000/docs para testar a API.
132+
133+
134+
---
135+
136+
📡 **Exemplos de Requisições**
137+
138+
**Criar Atleta (POST /api/v1/atletas/)**
139+
140+
cURL
141+
142+
curl -X POST http://localhost:8000/api/v1/atletas/ \
143+
-H "Content-Type: application/json" \
144+
-d '{
145+
"nome": "João Silva",
146+
"idade": 25,
147+
"categoria_id": 1,
148+
"centro_treinamento_id": 1
149+
}'
150+
151+
**Postman**
152+
153+
Método: POST
154+
155+
URL: http://localhost:8000/api/v1/atletas/
156+
157+
Body: raw (JSON) conforme exemplo acima.
158+
159+
160+
161+
---
162+
163+
📋 **Listar Atletas (GET /api/v1/atletas/)**
164+
165+
curl http://localhost:8000/api/v1/atletas/?page=1&size=10
166+
167+
168+
---
169+
170+
✏️ **Atualizar Atleta (PUT /api/v1/atletas/{id})**
171+
172+
curl -X PUT http://localhost:8000/api/v1/atletas/1 \
173+
-H "Content-Type: application/json" \
174+
-d '{"nome": "João Souza"}'
175+
176+
177+
---
178+
179+
🗑️ **Deletar Atleta (DELETE /api/v1/atletas/{id})**
180+
181+
curl -X DELETE http://localhost:8000/api/v1/atletas/1
182+
183+
184+
---
185+
186+
🧪 **Testes Automatizados**
187+
188+
Executar todos os testes com Pytest:
189+
190+
pytest -v
191+
192+
193+
---
194+
195+
🐳 **Uso com Docker**
196+
197+
Build + Start
198+
199+
docker-compose up --build
200+
201+
A aplicação estará disponível em: http://localhost:8000
202+
203+
204+
---
205+
206+
📬 **Coleção Postman**
207+
208+
Você pode importar a coleção Postman disponível em:
209+
210+
postman/apiWorkoutPython.postman_collection.json
211+
212+
> A coleção inclui exemplos prontos de requisições para todos os endpoints principais.
213+
214+
215+
216+
217+
---
218+
219+
📜 **Licença**
220+
221+
Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.
222+
223+
224+
---
225+
226+
**Autor**
227+
228+
Sérgio Santos
229+
📌 Desenvolvedor | Analista de Sistemas
230+
231+
232+
---
233+
234+
235+
236+
237+
238+
239+
240+
14241

15242

16243

0 commit comments

Comments
 (0)