Skip to content

Site para comunicação em tempo real criado com ASP.NET Core, Entity Framework, SignalR, PostgreSQL e React Js

Notifications You must be signed in to change notification settings

EduardoKroetz/RealTimeChat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RealTimeChat

.Net React SignalR C# PostgreSQL Azure Docker

🚀 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.

Principais Funcionalidades da API

Você pode importar uma coleção do postman que contém todos os endpoints já mapeados baixando o json AQUI

1. Autenticação de Usuário

  • 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)

2. Gerenciamento de Salas de Chat

  • 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

3. Mensagens em Tempo Real - Pelo Hub do SignalR

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)

4. Usuários

  • Buscar usuário logado
    GET /users

Tecnologias

Backend

  • .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

Frontend

  • React.js
  • Biblioteca SignalR para React
  • React Router Dom

Banco de Dados

  • PostgreSQL

Arquitetura - CQRS

  • 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)

Como Executar

2. **appsettings.json**: No arquivo `appsettings.json` da pasta `.API` (crie este arquivo se não tiver), adicione as seguintes configurações:
{
  "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
  },
}

Configuração do Backend

  1. Navegue até a pasta .API:

    cd .API
  2. Executar o Backend:

    dotnet run

    A API estará disponível em http://localhost:8080 (ou outro endereço configurado em Properties/lauchSettings.json).

Configuração do Frontend

  1. Navegue até a pasta .Site:

    cd .Site
  2. Instale as dependências do React:

    npm install
  3. 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 
  4. Executar o Frontend:

    npm run dev

    O frontend estará disponível em http://localhost:5173 (ou outro endereço configurado).

About

Site para comunicação em tempo real criado com ASP.NET Core, Entity Framework, SignalR, PostgreSQL e React Js

Resources

Stars

Watchers

Forks

Packages

No packages published