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
- VanillaJS (HTML, CSS, JavaScript sem frameworks)
- 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 --build| Método | Endpoint | Descrição |
|---|---|---|
POST |
/auth/register |
Registrar novo usuário |
POST |
/auth/login |
Autenticar usuário e gerar JWT |
POST |
/auth/refresh |
Refresh do token |
GET |
/users/me |
Retornar informações do usuário autenticado |
PATCH |
/users/me |
Atualizar nome de usuário (username) |
PUT |
/users//me/password |
Atualizar a senha do usuário autenticado |
| Tipo | Endpoint | Descrição |
|---|---|---|
WS |
/ws/chat |
Conectar-se ao chat (envia JWT no handshake) |
GET |
/chat/messages/{roomId} |
Buscar histórico de mensagens |
POST |
/rooms |
Criar nova sala de chat |
GET |
/rooms |
Listar todas as salas disponíveis |
GET |
/rooms/{roomId}/members |
Listar todos os usuários conectados em uma sala |
GET |
/messages/room/{roomId}/history |
Listar todos as mensagens (páginadas) de uma sala |
GET |
/messages/private/{targetUserId}/history |
Listar todas as mensagens (páginadas) de uma conversa privada |
GET |
messages/private/{targetUserId} |
Carregamento das mensagens (50 últimas) do cache de uma conversa privada |
GET |
/messages/room/{roomId} |
Carregamento dedas mensagens (50 últimas) do cache de uma sala |
GET |
/private/conversations |
Listar as conversas existentes do usuário |
DELETE |
rooms/{roomId} |
Deletar uma sala |
DELETE |
rooms/{roomId}/members |
Remove o usuário permanentemente de uma 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.