I built this to really understand two things: how real-time database updates propagate across clients, and how end-to-end encryption works in a chat context. The first part is done. Encryption is still in progress.
Features
- Real-time message sync across clients
- Chat rooms
- Clean UI with shadcn/ui
TODO
- End-to-end encryption (the original reason I started this)
- Migrate remaining state from Firebase to PostgreSQL
What I learnt
- How to keep UI in sync with live database changes
- Database migrations with Drizzle ORM
- The difference between symmetric and asymmetric encryption and why E2E chat is harder than it sounds
Built with
- Next.js
- shadcn/ui
- Drizzle ORM
- PostgreSQL on Turso
- Deployed on Vercel