Skip to content
Sabin Pant.
Back to projects

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

  1. React client

    Messaging interfaces share one authenticated Socket.IO connection.

  2. Express & Socket.IO

    REST endpoints and real-time events use shared authentication and validation.

  3. Services & TypeORM

    Separate business logic from repository-based data access.

  4. PostgreSQL & Redis

    Store conversation history and distribute events between server instances.