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 é 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
- Frontend/Backend: React/Next.js, ChakraUI
- Banco de Dados: ChainDB
- Cliente DB: chain-db-ts
O ChainDB foi escolhido como banco de dados para este projeto devido às suas características únicas:
- Histórico Completo - Cada mensagem é preservada no histórico, permitindo visualizar a evolução das conversas
- Segurança - Dados criptografados com AES-256-GCM
- Eventos em Tempo Real - Suporte nativo a WebSockets para atualizações em tempo real
- Simplicidade - API intuitiva e fácil de usar
- Confiabilidade - Operações atômicas com capacidade de rollback
- Filtro de buscas - Operações de buscas com filtros
O ChainChat utiliza quatro tabelas principais no ChainDB:
interface UserSchema {
id: string
username: string
password: string
}
interface RoomSchema {
rooms: Room[]
}
interface MessageSchema {
username?: string
message?: string
b64Image?: string
timestamp?: number
}
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
}
- 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ções são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.
- ChainDB - O banco de dados que torna este projeto possível
- chain-db-ts - Cliente TypeScript para o ChainDB