Este é um sistema de gerenciamento de eventos desenvolvido com uma arquitetura de microsserviços. O sistema permite que os usuários criem, participem e gerenciem eventos.
O projeto é uma API REST criada usando a linguagem Java, o banco de dados PostgreSQL, os projetos do ecossistema Spring e outras tecnologias.
O sistema é composto por vários microsserviços independentes, cada um com uma responsabilidade específica e que interagem entre si por meio de comunicação Síncrona e Assíncrona:
- User Service - Gerencia todas as funcionalidades relacionadas aos usuários do sistema. Isso inclui a criação, atualização, exclusão e recuperação de informações sobre usuários.
- Event Service - Lida com todas as funcionalidades relacionadas aos eventos. Isso inclui a criação, atualização, consulta e recuperação de eventos. Também é responsável pela reserva e gerenciamento de tickets.
- Notification Service - Salva e envia as notificações para os usuários: como confirmação de inscrição em eventos, confirmação de pagamento de tickets, atualizações sobre os eventos que o usuário está participando, etc.
- Payment Service - Representa algumas funcionalidades relacionadas ao processamento de pagamentos.
- Java 17
- PostgreSQL
- Spring Boot
- Spring Data
- Spring AMQP
- Spring Hateoas
- Spring Security
- Spring Cloud Gateway
- Spring Cloud Eureka
- Spring Cloud Circuitbreaker
- Spring Cloud Config
- Keycloak
- Resilience4j
- Zipkin
- Elasticsearch
- Kibana
- Filebeat
- OpenAPI
- Maven
- RabbitMQ
- Docker
- Clone o repositório para o seu ambiente local:
https://github.com/GustavoSC1/Event-Management-Distributed-System.git - Navegue até o diretório raiz do projeto:
cd Event-Management-Distributed-System - Execute
docker-compose up -dpara iniciar o RabbitMQ, Zipkin e os Bancos de dados. - Entre em cada pasta
mvn clean verify -DskipTestspara construir os microsserviços. - Depois disso execute
mvn spring-boot:runentrando em cada pasta para iniciar os microsserviços.
Contribuições são bem-vindas! Se você quiser contribuir com melhorias ou correções para o projeto, siga estes passos:
- Fork o repositório
- Crie uma branch para a sua funcionalidade (
git checkout -b feature/sua-funcionalidade) - Faça commit das suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Faça push para a branch (
git push origin feature/sua-funcionalidade) - Abra um Pull Request
Gustavo da Silva Cruz

