https://github.com/wpdas/chat-app-chaindb-nextjs
A Chat app built using NextJS and the experimental database ChainDB.
https://github.com/wpdas/chat-app-chaindb-nextjs
app chaindb chat nextjs
Last synced: about 2 months ago
JSON representation
A Chat app built using NextJS and the experimental database ChainDB.
- Host: GitHub
- URL: https://github.com/wpdas/chat-app-chaindb-nextjs
- Owner: wpdas
- Created: 2023-07-24T03:21:29.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-05T04:57:31.000Z (over 1 year ago)
- Last Synced: 2025-03-05T05:31:01.469Z (over 1 year ago)
- Topics: app, chaindb, chat, nextjs
- Language: TypeScript
- Homepage: https://chat-rooms-steel.vercel.app
- Size: 267 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Chain Chat App
Um aplicativo de chat em tempo real construído com [ChainDB](https://github.com/wpdas/chain-db), um banco de dados que mantém um histórico completo de alterações.

## 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](https://github.com/wpdas/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](https://github.com/wpdas/chain-db)
- **Cliente DB**: [chain-db-ts](https://github.com/wpdas/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
```typescript
interface UserSchema {
id: string
username: string
password: string
}
```
### Tabela de Salas
```typescript
interface RoomSchema {
rooms: Room[]
}
```
### Tabela de Mensagens
```typescript
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.
```typescript
interface UserIdsSchema {
id: string // same id as UserSchema.id
username: string // user name. this is used to get the user table
}
```
## Funcionalidades
- [x] Registro e login de usuários
- [x] Criação de salas de chat
- [x] Envio de mensagens em tempo real
- [x] Histórico de mensagens
- [x] Listagem de salas disponíveis
- [x] Participação em múltiplas salas
- [ ] Mensagens privadas (em desenvolvimento)
- [ ] Notificações (em desenvolvimento)
- [x] 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](LICENSE) para mais detalhes.
## Agradecimentos
- [ChainDB](https://github.com/wpdas/chain-db) - O banco de dados que torna este projeto possível
- [chain-db-ts](https://github.com/wpdas/chain-db-ts) - Cliente TypeScript para o ChainDB