Sistema de gerenciamento de Histórias em Quadrinhos com biblioteca pessoal por usuário, desenvolvido com Spring Boot com interface web via Thymeleaf e autenticação JWT.
Imagem disponível no Docker Hub:
docker pull joao2dev/hqswikiCrie um arquivo .env na raiz do projeto:
DATABASE_URL=jdbc:postgresql://db:5432/projetohq
DATABASE_USERNAME=seu_usuario
DATABASE_PASSWORD=sua_senha
KEY=sua_chave_secretaCrie o docker-compose.yml:
services:
db:
image: postgres:16
container_name: hqswiki-db
environment:
POSTGRES_DB: projetohq
POSTGRES_USER: seu_usuario
POSTGRES_PASSWORD: sua_senha
ports:
- "5432:5432"
app:
image: joao2dev/hqswiki
container_name: hqswiki-app
ports:
- "8080:8080"
env_file:
- .env
depends_on:
- dbSuba os containers:
docker compose upAcesse: http://localhost:8080/auth/ui/login
- Java 17+
- Spring Boot
- Spring Security
- PostgreSQL
- Spring Data JPA / Hibernate
- Flyway
- MapStruct
- Thymeleaf
- JUnit
- Maven
- Git / GitHub
- Docker
- Cadastro e autenticação de usuários
- Autenticação com JWT armazenado em cookie HttpOnly
- Biblioteca pessoal — cada usuário gerencia suas próprias HQs
- CRUD completo de HQs
- Busca parcial por título
- Cadastro de múltiplos autores e personagens
- Validação de dados
- DTOs com conversão automática via MapStruct
- Versionamento de banco de dados com Flyway
- Autenticação com JWT via cookie HttpOnly
- Sessão stateless
- Rotas protegidas com Spring Security
- Usuário só acessa, edita e deleta suas próprias HQs
POST /auth/registrar
POST /auth/login
GET /auth/logout
GET /comics
GET /comics/{id}
POST /comics
PUT /comics/{id}
DELETE /comics/{id}
GET /auth/ui/login
GET /auth/ui/registrar
GET /comics/ui/listar
GET /comics/ui/adicionar
GET /comics/ui/editar/{id}
GET /comics/ui/detalhes/{id}
GET /comics/ui/buscar?tituloHq=
GET /comics/ui/deletar/{id}
- Configure as variáveis de ambiente:
DATABASE_URL=jdbc:postgresql://localhost:5432/projetohq
DATABASE_USERNAME=seu_usuario
DATABASE_PASSWORD=sua_senha
KEY=sua_chave_secreta- Execute:
mvn spring-boot:run- Acesse:
http://localhost:8080/auth/ui/login
Controller → requisições HTTP
Service → regras de negócio
Repository → persistência
Model → entidades JPA
DTO → transferência de dados
Mapper → conversão via MapStruct
João Guilherme — Backend Developer (Java)
Projeto desenvolvido para portfólio.