- 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-cronruns recurring background tasks on the server. - Secure sign-in. Authentication and sessions are handled by Clerk.
How it is built
| Layer | Technology |
|---|---|
| Frontend | React, Vite, Tailwind CSS |
| UI & accessibility | HeroUI, React Aria Components |
| State | Zustand |
| Real-time | Socket.IO |
| Backend | Express.js, node-cron, Multer |
| Database | MongoDB with Mongoose |
| Auth & media | Clerk, 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.