Skip to content
Case studyWeb AppLive

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.

Request a walkthrough Private codebase · details on request
My role
Full Stack Developer
Timeline
4 months
Year
2025
Relay — screen 1
Relay — screen 2

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

  1. 01Group channels, private messages and threaded replies
  2. 02See who's online and who's typing
  3. 03Share files and images in any conversation
  4. 04Search every message ever sent
  5. 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.

Available for new projects

Let's work together.

Have an idea for a website or an app, or a role to fill? Tell me about it — I'm open to freelance work & full-time roles.

  • Usually replies within 24 hours
  • Remote · clients worldwide
  • Freelance · Full-time · Contract