O ChatterBox é um aplicativo de mensagens em tempo real criado com o próximo 13 e o empurrador.
Você pode criar um bate -papo em grupo ou iniciar um DM. Os usuários podem enviar mensagens de texto ou fazer upload de vários vídeos ou imagens.
A interface do usuário é atualizada em tempo real. Significado quando um canal é criado por outro usuário ou quando uma mensagem é enviada, você verá instantaneamente a atualização.
Implantado no vercel: https://chatterboxes.vercel.app/
Este projeto usa o novo roteador App Next.js 13, componentes do servidor React, ações do servidor, suspense e reagir cache()
Também fazemos uso de rotas de API (implantadas como funções sem servidor no VERCEL) para ações como registrar um novo usuário, criar uma mensagem, etc.
Sempre que um usuário envia uma mensagem, cria um bate-papo ou vem on-line, por exemplo, todos os outros usuários serão notificados e sua interface do usuário será atualizada em tempo real.
Isso é feito com o empurrador. Ouvimos eventos como message:new
ou chat:update
. Quando um usuário faz uma ação, acionamos o evento no servidor e a audição de outros usuários receberá as atualizações.
Além de ouvir e desencadear eventos, os canais de presença do Pusher são usados para colocar todos os usuários atualmente online.
Quando um usuário faz login, recebemos todos os usuários ativos do empurrador e os armazenamos em uma loja local da Jotai. Quando um usuário efetua login ou logoff, o Pusher envia uma atualização e atualizamos a loja JOTAI localmente.
Este projeto é escrito no TypeScript e usa tipos e esquemas de zod gerados pelo Prisma para garantir a segurança da base de código. Como os tipos de gerações automáticas do Prisma, raramente precisamos declarar ou manter qualquer tipo.
zod
é usado para validar todos os formulários do lado do cliente para garantir que os valores estejam corretos antes de fazer chamadas ou mutações na API.
No servidor, toda rota da API também possui validação de Zod para garantir que a entrada seja válida e corresponda ao esquema ZOD antes de prosseguir.
O ESLint também é configurado com regras rigorosas para garantir a qualidade do código e minimizar os bugs.
nodemailer