An event management system API built with Spring Boot, allowing users to create events and manage subscriptions.
- Create new events with details like title, location, price, and dates
- Generate SEO-friendly URLs for events automatically
- List all available events
- Find events by pretty name
- Subscribe users to events
- Handle subscription conflicts and validations
- Java - Programming language
- Spring Boot - Framework
- Spring Data JPA - Data persistence
- MySQL - Database
- Docker - Containerization
- Java 17 or higher
- Maven
- Docker & Docker Compose
The project uses MySQL 8.4 in a Docker container:
docker-compose up -dThis starts a MySQL server accessible on port 3336.
The database structure includes:
tbl_event- Stores event detailstbl_user- Stores user informationtbl_subscription- Manages event subscriptions
mvn spring-boot:run- GET /events - List all events
- GET /events/{prettyName} - Get event by its pretty name
- POST /events - Create a new event
Example request for creating an event:
{
"title": "Event Name 2027",
"location": "Online",
"price": 0.0,
"startDate": "2027-03-16",
"endDate": "2027-03-18",
"startTime": "19:00:00",
"endTime": "21:00:00"
}- POST /subscription/{prettyName} - Subscribe a user to an event
Example request for subscribing a user:
{
"name": "John Doe",
"email": "john@example.com"
}Um sistema de gerenciamento de eventos construído com Spring Boot, permitindo aos usuários criar eventos e gerenciar inscrições.
- Criar novos eventos com detalhes como título, localização, preço e datas
- Gerar URLs amigáveis para SEO automaticamente
- Listar todos os eventos disponíveis
- Encontrar eventos pelo nome amigável
- Inscrever usuários em eventos
- Tratamento de conflitos e validações de inscrição
- Java - Linguagem de programação
- Spring Boot - Framework
- Spring Data JPA - Persistência de dados
- MySQL - Banco de dados
- Docker - Containerização
- Java 17 ou superior
- Maven
- Docker & Docker Compose
O projeto utiliza MySQL 8.4 em um contêiner Docker:
docker-compose up -dIsso inicia um servidor MySQL acessível na porta 3336.
A estrutura do banco de dados inclui:
tbl_event- Armazena detalhes dos eventostbl_user- Armazena informações de usuáriostbl_subscription- Gerencia inscrições em eventos
mvn spring-boot:run- GET /events - Listar todos os eventos
- GET /events/{prettyName} - Obter evento pelo seu nome amigável
- POST /events - Criar um novo evento
Exemplo de requisição para criar um evento:
{
"title": "Nome do Evento 2027",
"location": "Online",
"price": 0.0,
"startDate": "2027-03-16",
"endDate": "2027-03-18",
"startTime": "19:00:00",
"endTime": "21:00:00"
}- POST /subscription/{prettyName} - Inscrever um usuário em um evento
Exemplo de requisição para inscrever um usuário:
{
"name": "João Silva",
"email": "joao@exemplo.com"
}