Uma API REST moderna para gerenciamento de catálogo de jogos com sistema de reviews e autenticação JWT.
SavePoint é uma API desenvolvida em Spring Boot que permite:
- Gerenciar catálogo de jogos - CRUD completo para jogos
- Sistema de reviews - Usuários podem avaliar e comentar jogos
- Autenticação JWT - Sistema seguro de autenticação
- Documentação interativa - Interface Swagger/OpenAPI
- Containerização - Deploy com Docker e PostgreSQL
- Java 21 - Linguagem principal
- Spring Boot 3.5.0 - Framework web
- Spring Security - Autenticação e autorização
- Spring Data JPA - Persistência de dados
- JWT (java-jwt 4.4.0) - Autenticação stateless
- PostgreSQL - Banco de dados principal
- Flyway - Versionamento de banco de dados
- SpringDoc OpenAPI - Documentação automática da API
- Swagger UI - Interface interativa para testes
- Docker - Containerização
- Lombok - Redução de boilerplate
- Maven - Gerenciamento de dependências
savepoint/
├── src/
│ ├── main/
│ │ ├── java/com/SavePoint/
│ │ │ ├── config/ # Configurações (Security, JWT, etc.)
│ │ │ ├── controller/ # Controllers REST
│ │ │ ├── dto/ # Data Transfer Objects
│ │ │ ├── entity/ # Entidades JPA
│ │ │ ├── repository/ # Repositórios JPA
│ │ │ ├── service/ # Lógica de negócio
│ │ │ └── SavePointApplication.java
│ │ └── resources/
│ │ ├── db/migration/ # Scripts Flyway
│ │ └── application.yml # Configurações da aplicação
├── docker-compose.yml
├── Dockerfile
├── pom.xml
└── README.md
- Java 21+
- Maven 3.8+
- Docker e Docker Compose
- PostgreSQL (se não usar Docker)
git clone https://github.com/seu-usuario/savepoint.git
cd savepointdocker-compose up -d- API: http://localhost:8080
- Swagger UI: http://localhost:8080/swagger-ui.html
CREATE DATABASE savepoint;
CREATE USER savepoint_user WITH PASSWORD 'sua_senha';
GRANT ALL PRIVILEGES ON DATABASE savepoint TO savepoint_user;export DB_URL=jdbc:postgresql://localhost:5432/savepoint
export DB_USERNAME=savepoint_user
export DB_PASSWORD=sua_senha
export JWT_SECRET=seu_jwt_secret_aqui./mvnw clean install
./mvnw spring-boot:runA API utiliza JWT para autenticação. Para acessar endpoints protegidos:
POST /api/auth/register
{
"username": "usuario",
"email": "usuario@email.com",
"password": "senha123"
}POST /api/auth/login
{
"username": "usuario",
"password": "senha123"
}Authorization: Bearer {seu_jwt_token}POST /api/auth/register- Registrar usuárioPOST /api/auth/login- Fazer loginPOST /api/auth/refresh- Renovar token
GET /api/games- Listar jogosGET /api/games/{id}- Buscar jogo por IDPOST /api/games- Criar jogo (autenticado)PUT /api/games/{id}- Atualizar jogo (autenticado)DELETE /api/games/{id}- Deletar jogo (autenticado)
GET /api/games/{gameId}/reviews- Listar reviews de um jogoPOST /api/games/{gameId}/reviews- Criar review (autenticado)PUT /api/reviews/{id}- Atualizar review (autenticado)DELETE /api/reviews/{id}- Deletar review (autenticado)
Acesse a documentação interativa em: http://localhost:8080/swagger-ui.html
O projeto utiliza Flyway para versionamento do banco de dados. As migrações estão em src/main/resources/db/migration/.
users- Usuários do sistemagames- Catálogo de jogosreviews- Reviews dos jogoscategories- Categorias de jogos (se aplicável)
# Banco de dados
DB_URL: jdbc:postgresql://localhost:5432/savepoint
DB_USERNAME: savepoint_user
DB_PASSWORD: sua_senha
# JWT
JWT_SECRET: seu_jwt_secret_muito_seguro_aqui
JWT_EXPIRATION: 86400000 # 24 horas em ms
# Aplicação
SERVER_PORT: 8080
SPRING_PROFILES_ACTIVE: devRyanGTorres - GitHub
⭐ Se este projeto foi útil para você, considere dar uma estrela!