← All projects

CircleNet

2024

A social platform with feeds, groups, anonymous messages and live streaming, built three separate times against the same Express and MySQL backend.

Next.jsReact NativeExpressMySQLWebSocketsVanilla JS
CircleNet mobile app showing the global feed with posts, likes and reposts
React Native client, global feed

CircleNet started as a vanilla JavaScript app to understand how a social feed actually works without a framework doing the heavy lifting. Once the core was solid, I rebuilt the same product in Next.js and again in React Native: three clients, one backend.

Sharing a single Express and MySQL API across all three forced me to design it properly. Each client needed the same shape of data, so I couldn't let any one of them invent its own. That constraint is the main reason the project taught me more than three unrelated apps would have.

Whispers and Live were the hardest parts. Anonymity has to be structural, not a display setting, and live streaming meant dealing with media in real time. Both are a different kind of problem from anything else in the app.

Features

Feed
Chronological posts with media, likes and comments. Cursor-based pagination so the feed stays fast as it grows.
Groups
User-created communities with their own feeds and member lists. Posts belong to a group or to the public feed.
Whispers
Anonymous messages. The sender's identity is never recorded, so it can't be leaked by a bad query or a new endpoint.
Live
Live video streaming with a real-time chat alongside it. Streams are announced to followers when they start.
Direct messages
One-to-one conversations with read state and history.

Links