03 / The Circular Net
Social Mobile App
The iOS and Android app for The Circular Net: feed, communities, messaging, calls, live rooms and podcasts with background playback.
- Company
- The Circular Net
- Role
- Lead mobile engineer
- Period
- Jul 2025 – PresentLive
- Links
- App Store Google Play
- Stack
- ExpoReact NativeExpo RouterTypeScriptNativeWindTanStack QueryStreamPusherEAS
Social Mobile App
The sustainability network on iOS and Android
Screenshots coming soon
What I built
- 01Email and Google sign-in, onboarding and a multi-step profile setup
- 02Feed and post creation with media, scheduling, hashtag autocomplete and full-screen media gestures
- 03Messaging with document preview and download, plus one-to-one calls with ring detection
- 04Audio and video rooms with reactions, raise hand, host actions, picture-in-picture and background audio
- 05A podcast player with mini and full players, queue, resume position and background playback
- 06Deep links, push notifications, token refresh and an iOS share extension
The system
Inside the app and its release pipeline
Key decisions
- 01
Expo over bare React Native
An earlier bare build was hard to keep moving. Expo, EAS and over-the-air updates let one engineer own builds, releases and fixes.
- 02
Feature modules that mirror the web
The mobile modules match the web app's areas, so the same mental model, API contracts and naming work on both platforms.
- 03
Three build variants
Development, staging and production are separate apps with their own config, so testers and real users never share a backend by accident.
01
The problem
The community needed the full platform on their phones, with real-time chat, calls and background audio, not a wrapped website.
02
The process
I built the app with Expo and Expo Router, organised by feature module. Rooms and calls run on Stream, chat on a Pusher-backed store, and a podcast player keeps playing in the background. Development, staging and production variants ship through EAS Build and over-the-air updates.
03
The outcome
Live on the App Store and Google Play.
04
What I learned
Make environments fail loudly. Build variants that refuse to start with the wrong config stopped builds from quietly pointing at the wrong backend.