Proposta de Produto

Chat integrado ao
MeshApp

Um sistema de mensagens completo estilo Slack, construído dentro do MeshApp. Canais, DMs, threads, reações, presença online e muito mais — tudo conectado ao ecossistema existente.

5
Entidades de banco
15+
Eventos real-time
12
Semanas p/ produção
100%
Infraestrutura pronta
Funcionalidades

Feature Set Completo

Tudo que você espera de um chat moderno, integrado ao ecossistema MeshApp.

💬

Canais

Canais públicos e privados por equipe, projeto ou tópico. Qualquer colaborador cria e gerencia.

👤

Mensagens Diretas

DMs 1-on-1 e em grupo. Encontre ou crie conversas instantaneamente com colegas.

📄

Threads

Responda a mensagens específicas sem poluir o canal principal. Mantenha contexto organizado.

😁

Reações com Emoji

Reaja a mensagens com emojis. Feedback rápido sem precisar digitar.

🟢

Presença Online

Veja quem está online em tempo real. Bolinha verde integrada com o sistema de presença.

📎

Compartilhar Arquivos

Envie imagens, documentos e vídeos. Mesma infraestrutura S3 do MeshApp — sem limite extra.

🔎

Busca Full-Text

Encontre qualquer mensagem em qualquer canal. Busca poderosa com PostgreSQL full-text search.

🔔

Notificações Inteligentes

Configuração por canal: todos, somente menções ou mudo. Push notification para offline.

📌

Mensagens Fixadas

Fixe mensagens importantes no canal. Acesso rápido a informações críticas.

Editar e Excluir

Edite suas mensagens a qualquer momento. Indicador visual de "editado". Exclusão soft.

👉

@Menções

Mencione usuários específicos ou @todos para notificar o canal inteiro. Autocomplete integrado.

Always-On

Badge de não-lidos no menu lateral, mesmo sem estar na página de chat. Nunca perca uma mensagem.

Interface

Mockup Interativo

Preview de como o chat ficará integrado ao MeshApp. Layout com sidebar de canais, área de mensagens e painel de threads.

#
# geral
Discussões gerais da empresa
👥 47 membros   📌 3 fixadas   🔎 Buscar
Hoje, 16 de Março 2026
Ana Silva entrou no canal
AS
Ana Silva09:32
Bom dia pessoal! Alguém viu o deploy de ontem? Parece que o módulo de feedback teve umas melhorias legais 🚀
👍 4 🚀 2 ❤️ 1
💬 3 respostas — Última há 15 min
CM
Carlos Mendes09:45
Sim! Ficou muito bom. @Ana Silva tu pode compartilhar o link da PR?
JS
Julia Santos10:02
Galera, segue o documento da retrospectiva da sprint:
📄 retrospectiva-sprint-23.pdf 2.4 MB
🙌 3
RL
Rafael Lima10:15
@todos Lembrete: reunião de alinhamento às 14h! ⏰
✅ 12 👀 3
MC
Mariana Costa10:22
Perfeito! Já coloquei no calendário 📅
Carlos está digitando...
Escreva uma mensagem em #geral...
📎 😁 ✍

Thread

AS
Ana Silva09:32
Bom dia pessoal! Alguém viu o deploy de ontem?
3 respostas
CM
Carlos09:40
Vi sim! O feedback agora tem reações 🔥
RL
Rafael09:55
Show! Testei aqui e ficou top
AS
Ana10:10
Valeu galera! 🙌
Responder na thread...

📱 Badge Always-On

O socket conecta no login. O badge vermelho de não-lidos aparece no menu lateral mesmo fora do /chat. Você nunca perde uma mensagem.

⚡ Optimistic Updates

Mensagens aparecem instantaneamente na tela antes da confirmação do servidor. Zero delay perceptível.

💻 Virtualização

Lista de mensagens virtualizada com react-virtuoso. Performance perfeita mesmo com milhares de mensagens.

Banco de Dados

Schema de Dados

5 entidades TypeORM seguindo os mesmos padrões do MeshApp (UUID, timestamps, soft delete).

💬 ChatChannel
idUUID (PK)
account_idUUID
namevarchar
descriptionvarchar?
topicvarchar?
typeenum
created_byUUID (FK)
is_archivedboolean
created_attimestamptz
deleted_attimestamptz?
👥 ChatChannelMember
idUUID (PK)
channel_idUUID (FK)
user_idUUID (FK)
roleenum
last_read_attimestamptz?
is_mutedboolean
notification_prefenum
created_attimestamptz
deleted_attimestamptz?
💬 ChatMessage
idUUID (PK)
channel_idUUID (FK)
user_idUUID (FK)
contenttext (HTML)
content_texttext (plain)
parent_message_idUUID? (FK)
thread_reply_countint
is_editedboolean
is_pinnedboolean
mentionsjson
mention_allboolean
typeenum
created_attimestamptz
deleted_attimestamptz?
📎 ChatMessageFile
idUUID (PK)
message_idUUID (FK)
file_idUUID (FK)
thumb_idUUID? (FK)
typevarchar
created_attimestamptz
deleted_attimestamptz?
😁 ChatMessageReaction
idUUID (PK)
message_idUUID (FK)
user_idUUID (FK)
emojivarchar
created_attimestamptz
deleted_attimestamptz?

Índices Críticos de Performance

Técnico

Diagrama de Arquitetura

Como o sistema se integra com a infraestrutura existente do MeshApp.

Frontend (Next.js + Ant Design)
💻
Chat Page
/[slug]/chat
🔌
ChatContext
Always-On Socket
🔔
NotificationCtx
Badge Unread
🔩
Apollo Client
GraphQL Queries
↓ ↓ WebSocket + REST + GraphQL ↓ ↓
Backend (NestJS)
🔌
Chat Gateway
Socket.IO /chat
🔁
Controllers
REST API
🔬
Resolvers
GraphQL
🛠
Use Cases
Business Logic
🔔
Event Emitter
Gamificação
📦
Bull Queues
Notif + Search
Infraestrutura
🗃
PostgreSQL
5 Entidades
Redis
Presença + Cache
☁️
AWS S3
Arquivos
🔌
Socket.IO
Rooms/Canal

🔌 WebSocket Gateway

15+ eventos real-time: receive-message, message-updated, message-deleted, thread-reply, reaction-updated, user-typing, presence-update, read-receipt, join-channel, leave-channel...

🔁 REST para Mutações

Mensagens enviadas via POST /api/chat/messages com multipart/form-data para suportar upload de arquivos. Server persiste e emite via gateway.

🔬 GraphQL para Queries

Queries de canais e mensagens via GraphQL com paginação cursor-based. Cache automático via Apollo Client.

Valor

Slack vs MeshApp Chat

Por que trazer o chat para dentro do MeshApp faz sentido.

Aspecto Slack (Hoje) MeshApp Chat (Proposta)
💰 Custo Licença separada por usuário ✓ Incluso na plataforma
🔗 Contexto Separado do sistema de RH ✓ Integrado (feed, PDI, feedback)
🏆 Gamificação Nenhuma ✓ XP e MeshCoins por interação
🟢 Presença Apenas no Slack ✓ Reflete uso real da plataforma
🔎 Busca Limitada no free tier ✓ Full-text sem limite
📎 Arquivos Storage do Slack (limitado) ✓ Mesmo S3 da plataforma
🔔 Notificações Separadas, outro app ✓ Centralizadas no MeshApp
👥 Multi-tenancy Workspace separado ✓ Mesmo account system
📈 Engagement Tira usuário do MeshApp ✓ Mantém usuário no MeshApp
🔒 Dados Servidor externo (EUA) ✓ Próprio, sob controle total
🔄 Alternância Trocar entre 2+ apps ✓ Tudo em um lugar só

Impacto Estimado

+40%
Tempo no MeshApp
-1
Ferramenta externa
R$0
Custo extra/usuário
100%
Dados sob controle
Roadmap

Cronograma de Implementação

4 fases, estimativa de 12 semanas com 2 devs (1 back + 1 front).

💬

Fase 1 — MVP

Semanas 1-4
Fundação completa: canais, DMs, mensagens real-time, arquivos e menções.
  • Semana 1: Entidades + Migration + Repositórios + ChatModule shell
  • Semana 2: Channel CRUD + Use Cases + Gateway conexão + Sidebar frontend
  • Semana 3: Send/Edit/Delete messages + Gateway events + MessageList + MessageInput
  • Semana 4: DMs + File upload + Unread counts + Badge always-on no menu

Fase 2 — Rich Features

Semanas 5-7
Threads, reações, presença, digitação e notificações inteligentes.
  • Semana 5: Threads (parent_message_id) + Reações + ThreadPanel + MessageReactions
  • Semana 6: Presença Redis + Typing indicators + Read receipts + Online dots
  • Semana 7: Group DMs + Notification preferences + Member management
💎

Fase 3 — Polish

Semanas 8-10
Busca, mensagens fixadas, mobile, performance e gamificação.
  • Semana 8: Full-text search (PostgreSQL tsvector) + Search UI + Pinned messages
  • Semana 9: react-virtuoso + Mobile responsive + Image lazy loading
  • Semana 10: Gamification listener + Error states + Reconnection handling
🛡

QA + Buffer

Semanas 11-12
Testes, edge cases, load testing e documentação.
  • Testes end-to-end de todos os fluxos
  • Load testing WebSocket (muitos usuários simultâneos)
  • Edge cases: reconexão, mensagens offline, conflitos
  • Revisão de segurança e documentação de API

Estimativa por Tamanho de Equipe

12 sem
2 devs (1 back + 1 front)
8-9 sem
3 devs
16-18 sem
1 full-stack solo

Pronto para centralizar tudo?

A infraestrutura já existe. WebSocket, Redis, S3, Event Emitter — tudo funcionando. Só precisamos construir em cima.

5
Entidades de banco
15+
Eventos real-time
25+
Recompensas na loja
0
Dependências novas