Real-time application
Nebula Chat
Real-time messaging with secure authentication
A deployed chat application with one-to-one and group messaging, passwordless sign-in, typing indicators, online presence, and read receipts.
Overview
Nebula Chat uses React, Express, and Socket.IO for real-time communication. Users sign in with an email one-time code or Google, with short-lived access tokens and rotating refresh cookies.
A normalized PostgreSQL database stores messages and membership data. Redis supports event distribution, and the application is deployed across Vercel, Render, Neon, and Upstash with Resend for email.
Key features
- Direct and group messaging with typing indicators and read receipts.
- Email OTP and Google sign-in with rotating refresh tokens.
- An eight-table PostgreSQL schema with membership and message tracking.
- Layered backend with Zod validation and centralized error handling.
- Docker Compose mirrors the deployed services for local development.
How it’s built
React client
Messaging interfaces share one authenticated Socket.IO connection.
Express & Socket.IO
REST endpoints and real-time events use shared authentication and validation.
Services & TypeORM
Separate business logic from repository-based data access.
PostgreSQL & Redis
Store conversation history and distribute events between server instances.