CircleNet
2024A social platform with feeds, groups, anonymous messages and live streaming — built three separate times against the same Express + MySQL backend.
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 enforced on the server, not hidden in the UI — if the sender's ID is anywhere in the response, the feature is broken. And live streaming meant dealing with media in real time, which is 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 stripped server-side before the response is sent, so it's never exposed to the client — and anonymous content still goes through moderation.
- 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.