Skip to content

wpdas/chat-app-chaindb-nextjs

Chain Chat App

Um aplicativo de chat em tempo real construído com ChainDB, um banco de dados que mantém um histórico completo de alterações.

ChainChat Screenshot

Sobre o Projeto

ChainChat é uma aplicação de chat em salas que demonstra o poder do ChainDB como solução de armazenamento para aplicações em tempo real. Utilizando o cliente TypeScript chain-db-ts, o aplicativo oferece:

  • Autenticação de usuários - Crie uma conta com nome de usuário e senha
  • Salas de chat - Crie novas salas ou participe de salas existentes
  • Mensagens em tempo real - Comunicação instantânea usando WebSockets
  • Histórico completo - Acesso ao histórico de todas as mensagens anteriores

Tecnologias Utilizadas

  • Frontend/Backend: React/Next.js, ChakraUI
  • Banco de Dados: ChainDB
  • Cliente DB: chain-db-ts

Por que ChainDB?

O ChainDB foi escolhido como banco de dados para este projeto devido às suas características únicas:

  1. Histórico Completo - Cada mensagem é preservada no histórico, permitindo visualizar a evolução das conversas
  2. Segurança - Dados criptografados com AES-256-GCM
  3. Eventos em Tempo Real - Suporte nativo a WebSockets para atualizações em tempo real
  4. Simplicidade - API intuitiva e fácil de usar
  5. Confiabilidade - Operações atômicas com capacidade de rollback
  6. Filtro de buscas - Operações de buscas com filtros

Estrutura de Dados

O ChainChat utiliza quatro tabelas principais no ChainDB:

Tabela de Usuários

interface UserSchema {
  id: string
  username: string
  password: string
}

Tabela de Salas

interface RoomSchema {
  rooms: Room[]
}

Tabela de Mensagens

interface MessageSchema {
  username?: string
  message?: string
  b64Image?: string
  timestamp?: number
}

Tabela de Registro de Usuários com Conta

Esta é uma tabela estratégica para pode fazer uma tipo de link entre propriedade de tabelas.

interface UserIdsSchema {
  id: string // same id as UserSchema.id
  username: string // user name. this is used to get the user table
}

Funcionalidades

  • Registro e login de usuários
  • Criação de salas de chat
  • Envio de mensagens em tempo real
  • Histórico de mensagens
  • Listagem de salas disponíveis
  • Participação em múltiplas salas
  • Mensagens privadas (em desenvolvimento)
  • Notificações (em desenvolvimento)
  • Compartilhamento de fotos

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.

Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.

Agradecimentos

  • ChainDB - O banco de dados que torna este projeto possível
  • chain-db-ts - Cliente TypeScript para o ChainDB

About

A Chat app built using NextJS and the experimental database ChainDB.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published