Aplicação backend desenvolvida em Spring Boot para gerenciamento de eventos, usuários, conferências, sessões e inscrições.
Conta com segurança implementada via Spring Security e autenticação JWT, garantindo acesso controlado aos endpoints da API.
Banco de dados gerenciado com MariaDB e versionado com Flyway.
- Java 21
- Spring Boot 3.5.13
- Spring Web
- Spring Data JPA
- Spring Security + JWT (Auth0)
- Flyway
- MariaDB (compatível também com MySQL e Postgres)
- Swagger/OpenAPI (Springdoc)
- Maven
-
src/main/java/br/com/mpb/events/
config/→ Configurações geraiscontroller/→ Controllers RESTdto/→ Data Transfer Objectsexception/→ Tratamento de exceçõesmodel/→ Entidades JPArepository/→ Interfaces JPAsecurity/→ Configurações de segurança e filtros JWTservice/→ Regras de negócioutil/→ Utilitários
-
src/main/resources/
application.properties→ Configuração da aplicaçãodb/migration/→ Scripts Flyway (V1__..., V2__...)
-
src/test/java/br/com/mpb/events/ → Testes unitários e de integração
-
Clone o repositório:
git clone https://github.com/seuusuario/events.git
-
Configure variáveis de ambiente para usuário e senha do banco:
export DB_MYSQL_USERNAME=seu_usuario export DB_MYSQL_PASSWORD=sua_senha
-
Execute as migrations automaticamente com o Flyway (já integrado).
-
Rode a aplicação:
mvn spring-boot:run
-
Acesse:
http://localhost:8080
- Implementada com Spring Security.
- Autenticação via JWT (Json Web Token).
- Endpoints protegidos exigem token válido no header:
Authorization: Bearer <token>
POST /auth/login→ autenticar usuário e gerar token JWT
POST /users→ criar usuárioGET /users→ listar todos os usuáriosPOST /change-password→ alterar senha do usuário autenticado
POST /conferences→ criar conferênciaGET /conferences→ listar conferênciasGET /conferences/{id}→ buscar conferência por ID
POST /sessions→ criar sessãoGET /sessions→ listar sessões
POST /subscriptions→ criar inscriçãoGET /subscriptions→ listar todas as inscriçõesGET /subscriptions/user/{id}→ listar inscrições de um usuário específicoGET /subscriptions/session/{id}→ listar inscrições de uma sessão específica
Request POST /auth/login
{
"email": "user@email.com",
"password": "123456"
}Response 200 OK
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."Request POST /users
{
"name": "Márcio",
"email": "marcio@email.com",
"password": "123456"
}Response 201 Created
{
"id": 1,
"name": "Márcio",
"email": "marcio@email.com"
}Request POST /change-password
{
"email": "marcio@email.com",
"oldPassword": "123456",
"newPassword": "novaSenha123"
}Response 200 OK
"Senha alterada com sucesso!"- Retorno padronizado de erro
404 Not FoundviaExceptionHandlerController
- Swagger UI disponível em:
http://localhost:8080/swagger-ui/index.html
⚠️ Por padrão, o Swagger UI é protegido pelo Spring Security.
EmSecurityConfig, os endpoints/swagger-ui/**e/v3/api-docs/**foram liberados.
Dependência utilizada:springdoc-openapi-starter-webmvc-ui:2.8.9.
📘 O endpoint/v3/api-docsfornece a definição da API em JSON e é consumido automaticamente pelo Swagger UI — não é necessário acessá-lo diretamente.
- Márcio Pires Barboza
- Este projeto está sob a licença MIT.