O SchoolAPI é uma API REST robusta desenvolvida para o gerenciamento completo de instituições de ensino. O projeto foca na organização de departamentos, turmas, professores e alunos, com uma lógica centralizada para o cálculo de GPA (Grade Point Average) e monitoramento de desempenho acadêmico.
Este projeto representa o consolidado dos meus estudos em Backend Development, unindo minha base acadêmica em Biologia e Neurociência com a Engenharia de Software.
- Java 21: Uso de Records para imutabilidade e concisão nos DTOs.
- Spring Boot 3.4.x: Base do ecossistema da aplicação.
- Spring Data JPA: Persistência de dados com consultas otimizadas via
JOIN FETCHpara evitar o problema N+1. - PostgreSQL: Banco de dados relacional (rodando em container Docker).
- Docker & Docker Compose: Orquestração do ambiente de banco de dados.
- Swagger (OpenAPI 3): Documentação interativa disponível em
/swagger-ui/index.html. - Bean Validation: Validação de dados de entrada (
@NotBlank,@Email, etc.). - Maven: Gerenciamento de dependências.
A aplicação foi construída seguindo as melhores práticas de mercado:
- Camada de DTOs: Proteção das entidades e controle total do JSON de saída, evitando recursão infinita.
- Services Transacionais: Lógica de negócio isolada com
@Transactionalpara garantir a integridade das operações. - Global Exception Handler: Tratamento centralizado de erros utilizando
@ControllerAdvice, retornando respostas padronizadas (404 Not Found, 400 Bad Request). - Queries Customizadas: Implementação de HQL no Repository para buscas eficientes de turmas e boletins.
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /departments |
Lista todos os departamentos cadastrados. |
| GET | /departments/name?name=... |
Busca um departamento específico por nome. |
| POST | /teachers |
Cadastra um novo professor vinculado a um departamento. |
| GET | /students/report/{id} |
Gera o boletim detalhado com cálculo automático de média. |
-
Clone o repositório:
git clone [https://github.com/seu-usuario/SchoolAPI.git](https://github.com/seu-usuario/SchoolAPI.git)
-
Suba o Banco de Dados (Docker):
docker-compose up -d
Nota: O banco PostgreSQL está configurado na porta
5431para evitar conflitos locais. -
Rode a aplicação: Utilize sua IDE (IntelliJ/VS Code) ou o terminal via Maven:
mvn spring-boot:run
-
Acesse a Documentação: Abra no navegador:
http://localhost:8080/swagger-ui/index.html
Rodrigo
- 🎓 Estudante de Sistemas de Informação (3º Período).
- 🧬 Graduado em Ciências Biológicas com Pós-graduação em Neurociência.
- 🎯 Foco em Backend (Java/Spring) e DevOps.
- 📜 Certificado Java (Basic) e em preparação para Azure Fundamentals (AZ-900).