hit-server-manager/backend
Artur Oliveira 7460577423 feat(pagination): paginar listagem de servidores
- adiciona DTO de página e paginação no endpoint GET /api/servers
- aplica busca paginada no service/repositório com limites seguros
- atualiza dashboard e tabela React com controles e requisições paginadas
2025-12-16 18:16:22 -03:00
..
gradle/wrapper feat: initial commit 2025-12-15 15:43:11 -03:00
src feat(pagination): paginar listagem de servidores 2025-12-16 18:16:22 -03:00
.dockerignore chore(devops): adicionar suporte a docker 2025-12-16 17:37:41 -03:00
.gitattributes feat: initial commit 2025-12-15 15:43:11 -03:00
Dockerfile chore(devops): adicionar suporte a docker 2025-12-16 17:37:41 -03:00
README.md feat(core): padronizar modais e publicar swagger 2025-12-16 16:19:35 -03:00
build.gradle feat(core): padronizar modais e publicar swagger 2025-12-16 16:19:35 -03:00
gradlew feat: initial commit 2025-12-15 15:43:11 -03:00
gradlew.bat feat: initial commit 2025-12-15 15:43:11 -03:00
postman_collection.json feat(auth): implementar autenticação e autorização JWT 2025-12-16 10:23:28 -03:00
settings.gradle feat: initial commit 2025-12-15 15:43:11 -03:00

README.md

Backend - Servers Manager

API REST em Spring Boot 4 (Java 21) com autenticação JWT stateless e refresh token em cookie HttpOnly.

Stack

  • Spring Boot 4.0 (Web MVC, Validation, Data JPA)
  • Spring Security (JWT, stateless)
  • MapStruct 1.6, Lombok
  • PostgreSQL (padrão) ou H2
  • JJWT 0.12 para geração/validação de tokens

Configuração

Variáveis principais:

  • DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWD — Postgres
  • JWT_SECRET — chave HMAC >= 32 chars
  • security.jwt.access-token-expiration — padrão 30m
  • security.jwt.refresh-token-expiration — padrão 30d

Arquivo src/main/resources/application.yaml já traz defaults; adicione um .env ou exporte variáveis conforme o ambiente.

Seed: src/main/resources/data.sql cria usuário padrão default@hittelco.com (senha senha123, bcrypt).

Endpoints chave

  • POST /api/auth/login — autentica e devolve access_token (cookie) + refresh_token (HttpOnly).
  • POST /api/auth/refresh — reemite cookies a partir do refresh.
  • POST /api/auth/signup — cria usuário (requer auth).
  • CRUD /api/users e /api/servers protegidos.

Rodar local

./gradlew bootRun

API em http://localhost:8080 com CORS liberado para http://localhost:5173.

Documentação OpenAPI

  • Dependência springdoc-openapi habilita /swagger-ui.html (UI) e /v3/api-docs (JSON).
  • Endpoints agora trazem @Operation e @ApiResponses, facilitando entendimento e testes.
  • Para testar rotas protegidas via Swagger UI, execute /api/auth/login pela própria interface; os cookies emitidos serão armazenados no navegador e enviados nas requisições seguintes.

Formatação com Spotless

O projeto usa Spotless para padronizar o código Java (imports, formatação Google Java Format).

Comandos úteis:

./gradlew spotlessCheck   # valida formatação (executado em pipelines via 'check')
./gradlew spotlessApply   # ajusta os arquivos automaticamente

Testes

./gradlew test

Postman

Use postman_collection.json na raiz; o login grava cookies e variáveis access_token/refresh_token.