Obrigado por querer contribuir! Este guia explica como o projeto é organizado e como colaborar de forma eficiente.
- Pré-requisitos
- Setup do ambiente
- Fluxo de branches
- Convenções de commit
- Estrutura do projeto
- Padrões de código
- Abrindo um Pull Request
- Reportando bugs
- Java 17+
- Gradle (wrapper incluso — use
./gradlew) - PostgreSQL local ou acesso ao Supabase
- Git
# 1. Fork e clone
git clone https://github.com/SEU_USER/Scouter-DataGateway.git
cd Scouter-DataGateway
# 2. Configure o upstream
git remote add upstream https://github.com/Kaique-Sique/Scouter-DataGateway.git
# 3. Crie o .env
cp .env.exemple .env
# edite o .env com suas credenciais de banco
# 4. Suba a aplicação
./gradlew bootRunPara rodar os testes:
./gradlew testOs testes usam H2 em memória — não é necessário ter PostgreSQL rodando para testar.
| Branch | Finalidade |
|---|---|
main |
Código estável, sempre funcional |
feat/<nome> |
Nova feature |
fix/<nome> |
Correção de bug |
refactor/<nome> |
Refatoração sem mudança de comportamento |
docs/<nome> |
Apenas documentação |
Nunca commite direto na main. Sempre abra um PR.
# Exemplo
git checkout -b feat/teleop-improvementsSeguimos Conventional Commits:
<tipo>(<escopo>): <descrição curta>
| Tipo | Quando usar |
|---|---|
feat |
Nova funcionalidade |
fix |
Correção de bug |
refactor |
Refatoração |
docs |
Documentação |
test |
Testes |
chore |
Build, CI, dependências |
Exemplos:
feat(scout): add teleop scoring endpoint
fix(auth): handle null password in login
refactor(user): simplify UserService.getById
docs(readme): update API reference table
src/main/java/com/scouter/gateway/
├── auth/ # Autenticação — X-Credentials, BCrypt
├── user/ # Entidade User + favoritos + preferências
├── scout/ # Módulos de scouting (auto, teleop, pit)
├── health/ # /health endpoint
└── build/ # Build info via git.properties
Cada módulo segue o mesmo padrão:
<modulo>/
├── <Entidade>.java # JPA Entity
├── <Entidade>Id.java # Chave composta (se houver)
├── <Entidade>Repository.java
├── <Entidade>Request.java # DTO de entrada
├── <Entidade>Response.java # DTO de saída
├── <Entidade>Service.java
└── <Entidade>Controller.java (centralizado em ScoutController)
- Autenticação: todas as rotas protegidas devem usar
Authenticatorpara validar o headerX-Credentials(email/senha) - Roles: use
authenticator.authenticate()para scouts eauthenticator.authenticateAdmin()para ações admin - DTOs: use
recordpara Request e Response - Retornos: sempre
ResponseEntity<T>nos controllers - Sem Spring Security filter: a autenticação é feita manualmente por header — não adicione filtros HTTP sem discutir antes
- Formato: siga o estilo existente (sem tabs, 4 espaços)
- Atualize sua branch com o upstream antes de abrir o PR:
git fetch upstream git rebase upstream/main
- Certifique-se que
./gradlew buildpassa sem erros - Abra o PR com título no formato Conventional Commits
- Descreva o que foi feito e por quê
- Referencie a issue relacionada se houver (
Closes #42)
Abra uma issue com:
- Descrição do comportamento esperado vs. o que aconteceu
- Endpoint afetado
- Payload/headers usados (sem senhas reais)
- Stack trace se houver
Built by Team 7563 — Megazord · Jundiaí, SP