Case study · P/05 · Full stack · Real-time
TeamPulseA real-time, Slack-style collaboration platform
Channels, direct messages, typing presence and WebRTC calls on an Express and MongoDB backend, with three access tiers behind JWT and Google OAuth and slow work moved onto a Bull + Redis job queue. Tested with Jest and deployed on Vercel and Railway.
- REST endpoints across 18 route modules
- 73
- Socket.IO event handlers
- 15
- access tiers: Admin, Member, Guest
- 3
What I built
- Real-time messaging over Socket.IO with typing indicators and online presence, plus workspaces, channels and direct messages.
- WebRTC calls between members.
- Role-based access control for Admin, Member and Guest users.
- Authentication with JWT, Google OAuth and email OTP verification.
- A Bull + Redis job queue that moves email and scheduled work off the request path.
- Attachments (images, PDFs) shared directly in chat.
Engineering decisions
Anything slow, like sending email or scheduled work, runs on a queue so the API and the socket layer stay responsive under load. Permissions are enforced on the server for every endpoint and event, not just hidden in the UI.
Stack
- Node.js
- Express
- MongoDB
- Mongoose
- Socket.IO
- WebRTC
- Redis
- Bull
- JWT
- Google OAuth
- React
- Jest