Toluwalope AkinkunmiLoading…

Sketching things…

000
Skip to content
← All work

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
Stack
ExpoReact NativeExpo RouterTypeScriptNativeWindTanStack QueryStreamPusherEAS
03

Social Mobile App

The sustainability network on iOS and Android

ExpoReact NativeExpo RouterTypeScript

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

Inside the app and its release pipelineMobile app → Feed & posts; Mobile app → Audio & video rooms; Mobile app → Podcast player; Build variants → Builds & updates; Builds & updates → App storesMobile appExpo RouterFeed & postsAudio & video roomsStreamPodcast playertrack-playerBuild variantsBuilds & updatesEASApp storesconfigship

Key decisions

  1. 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.

  2. 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.

  3. 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.

Next projectCircular TicketWebsite + web app for events and ticketing