Relay
A real-time chat app for remote teams
Slack-style chat with channels, private messages and file sharing. Messages appear instantly for everyone — no refreshing needed.
- My role
- Full Stack Developer
- Timeline
- 4 months
- Year
- 2025
Built with
- React
- Node.js
- Express.js
- Socket.IO
- MongoDB
- Redis
Key results
- for a message to reach everyone
- <0.1s
- more users, same speed
- 4×
- messages lost on a bad connection
- 0
01Overview
The story
A remote team was losing track of decisions in long email threads and wanted one place to talk. I built Relay from scratch — the chat screens, the server and the database — so every message shows up instantly, for everyone, on any device.
02Features
What I built
- 01Group channels, private messages and threaded replies
- 02See who's online and who's typing
- 03Share files and images in any conversation
- 04Search every message ever sent
- 05Keeps working on a weak connection and catches up when you're back online
03Challenge
Keeping everyone in sync
The problem
As the team grew, the app needed more than one server — and people on different servers stopped seeing each other's messages.
How I solved it
I linked the servers through a shared message channel (Redis), so a message sent on any server now reaches everyone instantly.
04Challenge
Old chats getting slow
The problem
Channels with months of history took longer and longer to open.
How I solved it
The newest messages now load first and older ones load as you scroll up, so every chat opens just as fast, however long it gets.