Este projeto implementa uma API completa para gerenciamento de Professores, Turmas e Alunos, utilizando Flask e SQLAlchemy, com documentação interativa via Swagger e suporte a execução via Docker.
✅ CRUD completo para Professores, Turmas e Alunos
✅ Persistência com SQLite (ORM SQLAlchemy)
✅ Estrutura MVC (Model - Controller - sem View)
✅ Documentação Swagger via Flasgger
✅ Containerização com Docker
✅ Código versionado no GitHub
api-colegio/
│
├── app/
│ ├── __init__.py # Criação e configuração do app Flask
│ ├── extensions.py # Instância do SQLAlchemy
│ ├── models/ # Modelos do banco (Professor, Turma, Aluno)
│ ├── controllers/ # Rotas e lógica de CRUD
│ └── docs/ # Arquivos YAML do Swagger
│
├── instance/ # Banco de dados SQLite (gerado automaticamente)
├── requirements.txt # Dependências do projeto
├── Dockerfile # Instruções para build da imagem Docker
├── docker-compose.yml # Configuração do serviço Docker
├── .dockerignore # Arquivos ignorados pelo Docker
├── .gitignore # Arquivos ignorados pelo Git
└── run.py # Arquivo principal para executar o app
python -m venv .venv
.venv\Scripts\activatepip install -r requirements.txtpython run.pyAcesse: 👉 http://127.0.0.1:5000/apidocs/
- Docker Desktop instalado e em execução
- Docker Compose (já vem junto com o Docker Desktop)
1️⃣ Clone o repositório
git clone https://github.com/<seu-usuario>/<nome-do-repositorio>.git
cd <nome-do-repositorio>2️⃣ Construa e suba o container
docker-compose up --build3️⃣ Acesse a API Depois que o build terminar, o terminal exibirá algo como:
* Running on http://0.0.0.0:5000
Acesse no navegador: 👉 http://127.0.0.1:5000/apidocs/
Lá estará a documentação Swagger com todos os endpoints disponíveis.
| Ação | Comando |
|---|---|
| Rodar em segundo plano | docker-compose up -d |
| Parar o container | docker-compose down |
| Ver logs em tempo real | docker-compose logs -f |
| Ver containers ativos | docker ps |
| Remover imagens e containers antigos | docker system prune -f |
O banco SQLite é criado automaticamente dentro da pasta instance/ no container.
Graças ao volume configurado em docker-compose.yml, os dados são persistidos entre execuções.
| Arquivo | Função |
|---|---|
Dockerfile |
Define como a imagem é construída (instala dependências e roda o app). |
.dockerignore |
Evita copiar arquivos desnecessários (venv, cache, etc.). |
docker-compose.yml |
Define os serviços, volumes e portas. |
Geovane Soares da Silva
Richard Ferreira
Projeto desenvolvido para a disciplina de Desenvolvimento de APIs e Microsserviços (DAM).
📘 Licença: Uso acadêmico e educacional.