← Back to portfolio

Project case study

FriendsGo

The backend and real-time infrastructure of a social network.

01

Problem

A modern social network must combine standard operations with messaging, presence, and low-latency video calling.

02

Solution

FriendsGo combines a REST API with Socket.IO for chat and WebRTC signaling, using PostgreSQL as the source of truth for social domains.

03 · Architecture

Remix client -> Express REST + Socket.IO -> PostgreSQL | WebRTC P2P

04

My contribution

I was responsible for the complete backend development: Express API, models and persistence, JWT authentication, Socket.IO events, WebRTC signaling, testing, and security measures.

05 · Stack

Node.jsExpressTypeScriptPostgreSQLSocket.IOWebRTC

06

Technical decisions

REST and real-time responsibilities were separated; JWTs are also verified against the database to support real session invalidation.

07

How it works

Two users enter a Socket.IO queue. The server persists the match and coordinates SDP and ICE exchange; WebRTC then establishes the P2P call, which can lead to a match and persistent chat.

08

Technical challenges

  • WebRTC signaling, reconnections, and call state.
  • A public API secured with invalidatable JWTs, rate limiting, Helmet, CORS, and HTTPS.
  • Keeping real-time and REST responsibilities separate.

09

What I would improve

  • Move matching to Redis for multi-instance scaling.
  • Extend real-time notifications.
  • Add CI/CD, monitoring, and accessibility testing.