Uma API RESTful robusta para gerenciamento de eventos, construída com Java 17 e Spring Boot, seguindo os princípios da Clean Architecture.
🚀 Deploy em Produção • 📚 Documentação • 🏗️ Arquitetura • ⚡ Quick Start
- 🏛️ Clean Architecture - Separação clara de responsabilidades entre camadas
- 🔒 Type Safety - Records do Java para entidades imutáveis
- 🎲 Identificadores Únicos - Sistema automático de geração de códigos de eventos
- 🐘 PostgreSQL - Banco de dados robusto com migrações Flyway
- 🐳 Docker Ready - Containerização completa com Docker Compose
- ☁️ AWS Deployed - Ambiente de produção no Amazon EC2
- 🧪 Testável - Arquitetura que facilita testes unitários e de integração
A aplicação segue os princípios da Clean Architecture, organizando o código em camadas concêntricas que garantem baixo acoplamento e alta coesão:
📦 Event API
├── 🎯 Core (Domain)
│ ├── entities/ # Entidades de negócio
│ ├── enums/ # Tipos de eventos
│ ├── gateway/ # Contratos de acesso a dados
│ └── usecases/ # Regras de negócio
└── 🔧 Infrastructure
├── beans/ # Configuração de dependências
├── controller/ # Endpoints REST
├── dto/ # Objetos de transferência
├── exceptions/ # Tratamento de erros
├── gateway/ # Implementação dos gateways
├── mapper/ # Conversão entre camadas
└── persistence/ # Acesso ao banco de dados
graph LR
A[Client] --> B[Controller]
B --> C[Use Case]
C --> D[Gateway Interface]
D --> E[Gateway Implementation]
E --> F[Repository]
F --> G[Database]
- ☕ Java 17+ - Download aqui
- 🔧 Maven 3.8+ - Guia de instalação
- 🐳 Docker & Docker Compose - Get Docker
- Clone o repositório
git clone https://github.com/lucasaita1/event-api-clean-architecture.git
cd event-api-clean-architecture- Inicie o banco de dados
docker-compose up -d- Execute a aplicação
# Desenvolvimento com H2 (em memória)
mvn spring-boot:run
# Produção com PostgreSQL
mvn spring-boot:run -Dspring.profiles.active=prod- Acesse a aplicação
- 🌐 API:
http://localhost:8080 - 🗄️ H2 Console:
http://localhost:8080/h2-console
POST /api/v1/create
Content-Type: application/json
{
"name": "Tech Conference 2025",
"description": "Conferência de tecnologia e inovação",
"dateStart": "2025-03-15T09:00:00",
"dateFinish": "2025-03-15T18:00:00",
"localEvent": "Centro de Convenções",
"organization": "Tech Community",
"capacity": "500",
"type": "WORKSHOP"
}GET /api/v1/GET /api/v1/{identificator}| Tipo | Descrição |
|---|---|
MUSICAL |
Eventos musicais e shows |
WORKSHOP |
Workshops e oficinas |
SPEAKER |
Palestras e apresentações |
SEMINAR |
Seminários acadêmicos |
THEATER |
Apresentações teatrais |
PRESENTIAL |
Eventos presenciais gerais |
A aplicação está deployada e funcionando em uma instância EC2 da Amazon Web Services, proporcionando:
- 🔧 Alta Disponibilidade - Infraestrutura robusta da AWS
- 🚀 Performance Otimizada - Instâncias dimensionadas adequadamente
- 🔒 Segurança - VPC configurada com security groups
- 📊 Monitoramento - CloudWatch para métricas e logs
- 🔄 Escalabilidade - Preparado para auto-scaling quando necessário
🌐 Internet
↓
🔒 Application Load Balancer
↓
🖥️ EC2 Instance (Ubuntu)
├── 🐳 Docker Container (Event API)
└── 🐘 PostgreSQL Database
- Java 17 - Linguagem principal com recursos modernos
- Spring Boot 3.5.5 - Framework de aplicação
- Spring Data JPA - Persistência de dados
- PostgreSQL 14 - Banco de dados principal
- H2 - Banco em memória para testes
- Flyway - Controle de versão do banco
- Docker - Containerização
- Maven - Gerenciamento de dependências
- Lombok - Redução de boilerplate
- JUnit 5 - Framework de testes
- Mockito - Mocking para testes unitários
- Clean Architecture - Padrão arquitetural
- ✅ Criação de Eventos - Com geração automática de identificadores únicos
- ✅ Listagem de Eventos - Recuperação de todos os eventos cadastrados
- ✅ Busca por Identificador - Localização específica de eventos
- ✅ Validação de Dados - Tratamento robusto de erros
- ✅ Migrações de Banco - Controle de versão com Flyway
- ✅ Containerização - Deploy simplificado com Docker
- ✅ Clean Architecture - Código maintível e testável
- 🔐 Autenticação JWT - Sistema de login e autorização
- 📧 Notificações - Email/SMS para participantes
- 🎟️ Sistema de Inscrições - Gestão de participantes
- 📈 Dashboard Analytics - Métricas e relatórios
- 🔍 Busca Avançada - Filtros por data, tipo, localização
- 📱 API Mobile - Endpoints otimizados para apps
- 🌐 Multi-tenant - Suporte a múltiplas organizações
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Contribuições são sempre bem-vindas! Para contribuir:
- 🍴 Faça um fork do projeto
- 🌿 Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - 💾 Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - 📤 Push para a branch (
git push origin feature/AmazingFeature) - 🎯 Abra um Pull Request
Lucas Aita - GitHub
⭐ Se este projeto te ajudou, considere dar uma estrela!