Este é um sistema de chat em tempo real robusto e escalável construído com uma arquitetura de microsserviços usando Spring Boot e tecnologias modernas.
O projeto implementa um sistema de chat em tempo real com suporte a salas de chat públicas e mensagens privadas. A arquitetura de microsserviços permite alta disponibilidade, escalabilidade horizontal e manutenção independente dos componentes.
- Autenticação e autorização com JWT
- Criação e gerenciamento de salas de chat
- Mensagens em tempo real usando WebSocket
- Suporte a mensagens privadas entre usuários
- Histórico de mensagens
- Lista de usuários online em cada sala
- Escalabilidade horizontal dos serviços de chat
- Spring Boot - Framework base para os microsserviços
- Spring Cloud - Conjunto de ferramentas para microsserviços
- Netflix Eureka (Service Discovery)
- Spring Cloud Gateway
- Spring Cloud Config
- Spring Security - Segurança e autenticação
- Spring WebSocket - Comunicação em tempo real
- MongoDB - Armazenamento de mensagens e salas
- PostgreSQL - Armazenamento de dados de usuários
- Redis - Cache e gerenciamento de sessões
- RabbitMQ - Message broker para comunicação entre serviços
- Em breve
- Docker - Containerização
- Docker Compose - Orquestração de containers
O sistema é composto pelos seguintes serviços:
- Ponto de entrada único para clientes
- Roteamento de requisições REST e WebSocket
- Validação de JWT e segurança
- Gerenciamento de usuários
- Autenticação e autorização
- Emissão e validação de JWT
- Gerenciamento de salas de chat
- Comunicação WebSocket
- Persistência de mensagens
- Gerenciamento de presença de usuários
- Registro e descoberta de serviços
- Balanceamento de carga
- Configurações centralizadas
- Gestão de ambientes (dev/prod)
- Docker e Docker Compose
- Java 17+
- Maven
- Clone o repositório:
git clone https://github.com/AlexReisC/real-time-chat.git
cd real-time-chat- Inicie os serviços de infraestrutura com Docker Compose:
docker-compose up -d- Execute os serviços Spring Boot:
Para o Auth Service:
cd auth-service
mvn spring-boot:runPara o Chat Service:
cd chat-service
mvn spring-boot:run| Método | Endpoint | Descrição |
|---|---|---|
| POST | /auth/register |
Registrar novo usuário |
| POST | /auth/login |
Autenticar usuário e gerar JWT |
| GET | /auth/validate |
Validar token JWT |
| GET | /auth/me |
Retornar informações do usuário |
| Tipo | Endpoint | Descrição |
|---|---|---|
| WS | /ws/chat |
Conectar ao WebSocket |
| GET | /chat/messages/{roomId} |
Buscar histórico de mensagens |
| POST | /chat/rooms |
Criar nova sala |
| GET | /chat/rooms |
Listar salas disponíveis |
| GET | /chat/rooms/{roomId}/users |
Listar usuários da sala |
Sinta-se à vontade para contribuir com o projeto. Abra uma issue ou envie um pull request com suas sugestões de melhorias.
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.