Skip to content

estevaoMG/workout-api

Repository files navigation

🏋️‍♂️ Workout API

Uma API RESTful desenvolvida em Python + FastAPI para gerenciamento de atletas, centros de treinamento e categorias esportivas.
Projetada para ser simples, moderna e escalável --- ideal para estudos, testes técnicos e projetos reais.


📖 Sumário


🚀 Visão Geral

A Workout API permite: - Cadastro e listagem de Atletas - Gerenciamento de Centros de Treinamento - Controle de Categorias Esportivas - Uso de SQLAlchemy ORM - Migrações com Alembic - Servidor moderno e rápido com FastAPI + Uvicorn

Ideal para: - Estudos de back-end com Python - Bootcamps e portfólio - Projetos voluntários e testes técnicos


🧱 Arquitetura

A API segue princípios modernos: - Estrutura modular - Pastas divididas por domínio - Versionamento e migrações do banco - Separação clara entre modelo, schema e rotas - Testes automatizados


⚙️ Tecnologias

  • Python 3.12+
  • FastAPI
  • Uvicorn
  • SQLAlchemy
  • Alembic
  • Pydantic
  • Docker & Docker‑Compose
  • Pytest

💻 Instalação e Execução (sem Docker)

1. Clonar repositório

git clone https://github.com/estevaoMG/workout-api.git
cd workout-api

2. Criar ambiente virtual

python3 -m venv venv
source venv/bin/activate

3. Instalar dependências

pip install -r requirements.txt

4. Rodar servidor

uvicorn main:app --reload

Acesse:
👉 **http://localhost:8000**\ 👉 Documentação automática: /docs ou /redoc


🐳 Rodando com Docker

Build + Run

docker-compose up --build

Aplicar migrações

docker-compose exec app alembic upgrade head

🗂️ Estrutura do Projeto

workout-api/
│  main.py
│  requirements.txt
│  docker-compose.yml
│
├── atleta/
│   ├── models.py
│   ├── schemas.py
│   └── router.py
│
├── centro_treinamento/
│   ├── models.py
│   ├── schemas.py
│   └── router.py
│
├── categorias/
│   ├── models.py
│   ├── schemas.py
│   └── router.py
│
├── alembic/
│   └── versions/
│
└── configs/
    ├── database.py
    └── settings.py

📡 Rotas Principais

🏃 Atletas

Método Rota Descrição


GET /atletas Lista todos os atletas POST /atletas Cria atleta GET /atletas/{id} Detalhes PUT /atletas/{id} Atualiza DELETE /atletas/{id} Remove


🏫 Centros de Treinamento

Método Rota


GET /centros POST /centros


🏷️ Categorias

Método Rota


GET /categorias POST /categorias


🧬 Migrações com Alembic

Criar nova migração

alembic revision --autogenerate -m "mensagem da migração"

Aplicar

alembic upgrade head

🧪 Testes

Rodar testes:

pytest -v

🤝 Contribuição

Contribuições são bem‑vindas!
Siga estes passos: 1. Faça um fork 2. Crie uma branch: git checkout -b feature/minha-feature 3. Faça um commit: git commit -m "minha nova feature" 4. Envie: git push origin feature/minha-feature 5. Abra um Pull Request


📜 Licença

Este projeto está sob a licença MIT.
Sinta‑se livre para usar, modificar e melhorar.


🙌 Autor

Projeto desenvolvido por Estevão Gouveia.
Se este código te ajudou, deixe uma ⭐ no repositório!

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors