🚀 Principais funcionalidades da API 👨💻 Tecnologias 🏛️ Arquitetura 🏃 Como executar
RealTimeChat é uma aplicação de chat em tempo real com suporte a autenticação de usuários, gerenciamento de salas de chat e envio de mensagens via SignalR. O projeto utiliza uma arquitetura CQRS para separar as responsabilidades e facilitar a manutenção.
Você pode importar uma coleção do postman que contém todos os endpoints já mapeados baixando o json AQUI
-
Registro de Usuário
POST /auth/register
Parâmetros:username
(string),password
(string),email
(string)
Retorno:token
(string),id
(do usuário criado) -
Login de Usuário
POST /auth/login
Parâmetros:email
(string),password
(string)
Retorno:token
(string)
-
Criação de Salas de Chat
POST /chatrooms?name=nomeDaSala
-
Deleção de Salas de Chat
DELETE /chatrooms/{ID da sala}
-
Atualização de Salas de Chat
PUT /chatrooms?name=novoNomeDaSala
-
Listagem de Salas de Chat
GET /chatrooms?pageSize={Ex:25}&pageNumber={Ex:1}
-
Buscar a Sala de Chat pelo Id
GET /chatrooms/{ID da sala}
-
Entrar em Salas de Chat
POST /chatrooms/join/{ID da sala}
-
Sair de Salas de Chat
DELETE /chatrooms/leave/{ID da sala}
-
Buscar as Salas de Chat do usuário
GET /chatrooms/users
-
Buscar salas de chat pelo nome
GET /chatrooms/search?name=nomeDaSala
Obs: O projeto .Client
pode ser usado para testar o hub via console.
-
Entrar em uma Sala |
JoinGroupAsync
Parâmetros: Id da sala -
Sair de uma Sala |
LeaveGroupAsync
Parâmetros: Id da sala -
Envio de Mensagens |
SendMessageAsync
Parâmetros: Id da sala, Id do usuário,mensagem
(string)
Evento:ReceiveMessage
:mensagem
(objeto) -
Deletar Mensagem |
DeleteMessageAsync
Parâmetros: Id da mensagem
Evento:DeleteMessage
: Id da mensagem -
Atualizar Mensagem |
UpdateMessageAsync
Parâmetros: Id da mensagem,nova mensagem
(string)
Evento:UpdateMessage
:nova mensagem
(string)
- Buscar usuário logado
GET /users
- .NET Core / ASP.NET Core
- Entity Framework Core para acesso ao banco de dados
- SignalR para comunicação em tempo real
- JWT (JSON Web Tokens) para autenticação
- React.js
- Biblioteca SignalR para React
- React Router Dom
- PostgreSQL
-
Camada de Apresentação: .Site (Frontend com React)
- Componentes React para UI
- Comunicação com a API backend via HTTP e SignalR
-
Camada de Apresentação do Backend: .API (API Backend)
- Controladores para gerenciar requisições HTTP
- Hubs do SignalR para comunicação em tempo real
-
Camada de Persistência: .Infrastructure (Banco de Dados)
- Configuração do contexto do banco de dados
- Implementação dos repositórios para acesso a dados
-
Camada da Aplicação: .Application (Lógica de processamento)
- Commands para atualização de dados
- Queries para consultas
-
Camada .Core (Núcleo da aplicação)
- Entidades do Banco de Dados
- DTOs para Transferência de Dados
- Interfaces dos Repositórios
- Interfaces dos Serviços
-
Camada .Client (Cliente console)
- Cliente console criado para testar a comunicação com o Hub
-
Camada .UnitTests (Testes unitários)
-
Camada .IntegrationsTests (Testes de integração)
{
"JwtKey": "kfgkopwpocnAICklvgRItruYTAJnkALXaPOQiRYUeyxXJkaQaNcHghQAydq",
"DefaultFrontendBaseUrl": "http://localhost:5173",
"ConnectionStrings": {
"PostgreSQL": "Host=localhost;Port=5432;Database=realtimechat;Username=realtimechat-admin;Password=realtimechat-123" //Garanta que o postgreSQL esteja sendo executado
},
}
-
Navegue até a pasta
.API
:cd .API
-
Executar o Backend:
dotnet run
A API estará disponível em
http://localhost:8080
(ou outro endereço configurado em Properties/lauchSettings.json).
-
Navegue até a pasta
.Site
:cd .Site
-
Instale as dependências do React:
npm install
-
Configure o Frontend: No arquivo
src/api/axiosConfig.ts
, ajuste a URL da API para apontar para o endereço do backend:export const baseUrl = "http://localhost:8080"; //ou outra URL onde a API está executando
-
Executar o Frontend:
npm run dev
O frontend estará disponível em
http://localhost:5173
(ou outro endereço configurado).