Descrição do projeto
TraduzidoTecnicamente, esperamos transporte WebSocket para entrega ao vivo com uma opção de fallback razoável e reconexão automática em caso de perda de conexão. As mensagens devem ser persistidas no banco de dados para que o histórico de chat carregue corretamente ao reabrir uma conversa, e a entrega deve ser ordenada e deduplicada mesmo em redes instáveis. Precisamos de um indicador de digitação, status de 'entregue' e 'lido' para cada mensagem, contadores de não lidos por chat e presença (online, última vez visto). Anexos são importantes: os usuários devem ser capazes de enviar imagens e documentos com pré-visualizações e limites de tamanho seguros. Quando o destinatário está offline ou a aba está fechada, uma notificação push os alerta sobre a nova mensagem. O backend deve depender de nossas contas de usuário atuais e permissões de acesso em vez de introduzir um sistema de autenticação separado.
Consideramos segurança e prevenção de abusos parte da tarefa: conexões de socket autenticadas ligadas a sessões ativas, verificações de permissão (um usuário lê apenas os fios em que participa), sanitização de entrada contra XSS ao exibir mensagens e limitação básica de taxa contra spam. Esperamos código limpo e documentado em nossa pilha atual, instruções de integração breves e testes para os principais cenários.
— Chats privados e em grupo com gerenciamento de participantes
— Entrega WebSocket com reconexão e fallback offline
— Indicador de digitação, status de entrega/leitura, contadores de não lidos, presença
— Anexos de imagem e documento com pré-visualizações e limites de tamanho
— Notificações push para destinatários offline
— Histórico, ordenação, deduplicação e persistência de mensagens
— Sockets vinculados a sessões, verificações de permissão por fio, proteção contra XSS, limitação de taxa