Skip to content
  • React
  • Socket.IO
  • Express.js
  • MongoDB
  • Clerk
  • Zustand

PingChat — Real-Time Chat Application

A real-time chat app built with React, Express, Socket.IO and MongoDB, with Clerk authentication, ImageKit media uploads, scheduled jobs, and an accessible UI built on React Aria.

  • Live messaging over Socket.IO
  • Clerk authentication
  • Media uploads with ImageKit + Multer
  • Accessible UI with React Aria Components

PingChat is a real-time chat application where messages are delivered instantly over WebSockets with Socket.IO, persisted in MongoDB, and secured with Clerk authentication.

What it does

  • Instant messaging. Socket.IO pushes new messages to every participant the moment they are sent.
  • Persistent history. Conversations are stored in MongoDB through Mongoose.
  • Media sharing. Images upload through Multer to ImageKit for optimised delivery.
  • Scheduled jobs. node-cron runs recurring background tasks on the server.
  • Secure sign-in. Authentication and sessions are handled by Clerk.

How it is built

LayerTechnology
FrontendReact, Vite, Tailwind CSS
UI & accessibilityHeroUI, React Aria Components
StateZustand
Real-timeSocket.IO
BackendExpress.js, node-cron, Multer
DatabaseMongoDB with Mongoose
Auth & mediaClerk, ImageKit

Engineering notes

Accessibility was a first-class goal. React Aria Components provide keyboard navigation, focus management, and screen-reader semantics, while Zustand keeps chat state small and predictable across the app.