Destaque

DialoGO

Plataforma de chat em tempo real construída com React, Node.js, Express, PostgreSQL e Socket.IO, explorando comunicação via WebSockets, autenticação e arquitetura fullstack em camadas.

Principais pontos
  • Comunicação em tempo real com Socket.IO
  • Arquitetura fullstack com frontend e backend separados
  • Autenticação JWT também aplicada às conexões Socket.IO
  • Chats organizados em rooms
  • Arquitetura backend Controller → Service → Repository
  • PostgreSQL para usuários, chats, membros e mensagens
  • Interface responsiva para gerenciamento de chats
  • Busca, filtros e ordenação de salas
Tecnologias utilizadas
Screenshot de capa de DialoGO

Visão geral

O DialoGO é uma plataforma completa de chat em tempo real desenvolvida para estudar profundamente WebSockets e comunicação bidirecional entre cliente e servidor.

O projeto reúne um frontend React + TypeScript e um backend Node.js + Express, utilizando Socket.IO para comunicação em tempo real e PostgreSQL para persistência dos dados.

O projeto foi desenvolvido como uma exploração prática de arquitetura fullstack, autenticação e aplicações que precisam atualizar informações sem depender de refresh manual.

Como funciona

Após o login, o frontend armazena a sessão do usuário e utiliza JWT nas requisições protegidas.

A conexão Socket.IO também é autenticada através do JWT.

Cada chat funciona como uma socket room. Quando usuários entram em uma sala, o servidor consegue transmitir mensagens apenas para os participantes daquele chat.

Quando uma mensagem é enviada, o backend processa a comunicação através do Socket.IO e transmite o novo conteúdo aos usuários conectados à sala.

Arquitetura

O projeto é dividido em frontend e backend, mas funciona como uma única aplicação.

O frontend utiliza React, Vite, TypeScript e Tailwind CSS, com Context API para gerenciamento de estado global.

O backend utiliza Node.js e Express e segue uma arquitetura em três camadas:

Controller → Service → Repository

Os controllers lidam com HTTP, os services concentram regras de negócio e os repositories são responsáveis pelo acesso ao PostgreSQL.

A comunicação em tempo real utiliza Socket.IO.

Funcionalidades

O DialoGO possui:

  • Login e cadastro
  • Autenticação JWT
  • Proteção de rotas
  • Autenticação de sockets
  • Criação de chats
  • Exclusão de chats
  • Entrada e saída de chats
  • Chats protegidos por senha
  • Identificação do proprietário
  • Lista de membros
  • Mensagens em tempo real
  • Auto-scroll
  • Busca de chats
  • Ordenação
  • Filtro por quantidade de membros
  • Filtro por proteção de senha
  • Interface responsiva
  • Modais reutilizáveis
  • Estados de loading e erro

Decisões técnicas

Socket.IO foi utilizado para abstrair a comunicação em tempo real e permitir trabalhar com conexões autenticadas, rooms e broadcasting.

No backend, a divisão Controller → Service → Repository foi utilizada para separar responsabilidades e manter as regras de negócio afastadas da camada HTTP.

No frontend, Context API foi utilizada para centralizar autenticação e conexão Socket.IO através de providers dedicados.

Screenshots

Interface da plataforma de chat em tempo real.

DialoGO • 1 de 3
DialoGO - Captura de tela 1
DialoGO • 2 de 3
DialoGO - Captura de tela 2
DialoGO • 3 de 3
DialoGO - Captura de tela 3

Aprendizados

O principal objetivo do DialoGO foi compreender como aplicações em tempo real funcionam além do modelo tradicional de requisição e resposta HTTP.

O projeto aprofundou conceitos de WebSockets, rooms, broadcasting, autenticação de conexões, gerenciamento de estado e arquitetura em camadas.

A experiência também serviu como aplicação prática dos conceitos de sockets estudados anteriormente no TalkShell.