Mobile App · Conventions

MOBILE_WALKTHROUGH — Oshun Mobile (Expo / React Native)

Conventions and reading guide for the Mobile App walkthrough.

5sections2 minread1table

On this page

A checklist-driven inventory of every screen and interaction in the Oshun mobile app — the Expo / React Native app at apps/oshun/mobile, using Expo Router (file-based routing under apps/oshun/mobile/app). Parallel to ../WALKTHROUGH/; same per-view section structure, adapted for native.

What this is (and is not)#

  • Is: A per-screen checklist — what a user taps, swipes, and reads, with the navigation target, gesture, accessibility announcement (VoiceOver / TalkBack), and platform (iOS / Android) deltas for each interactive element.
  • Is not: A web walkthrough. There is no PWA / service worker; instead the States sections cover native concerns — offline (NetInfo / cached + offline queue), permissions-denied (camera / mic / notifications), and safe-area handling.

Screen map#

Expo Router structure under apps/oshun/mobile/app. A tab navigator ((tabs)) plus stack screens.

Screen file Walkthrough What it is
(tabs)/index.tsx home.md Daypart-anchored home (hero, continuity, bridges)
(tabs)/explore.tsx explore.md Client-side universal search + guided lanes
(tabs)/activity.tsx activity.md Cross-domain notification timeline (offline queue)
(tabs)/library.tsx library.md Preserve surface — saved items, share-ingest
(tabs)/profile.tsx profile.md Account governance — billing, privacy, sessions
compose.tsx compose.md Yemaya living-scenes composition
domain/[domainId].tsx domain-detail.md Polymorphic domain route (6 domains; ~15k LOC)
mocap.tsx mocap.md Smartphone markerless motion capture studio
profile/safety.tsx profile-safety.md Safety record / guarded re-entry journey
v2.tsx v2.md V2 companion (fighting-game second screen)
v3.tsx v3.md Lilith companion + native-launch panel
v6.tsx v6.md Egbe steward companion + remote stewardship sync

Not given per-view files (infrastructure, noted in cross-refs): _layout.tsx, (tabs)/_layout.tsx, +not-found.tsx, and *.test.tsx.

Folder layout#

text
MOBILE_WALKTHROUGH/
  README.md          # this file
  home.md  explore.md  activity.md  library.md  profile.md
  compose.md  domain-detail.md  mocap.md  profile-safety.md  v2.md  v3.md  v6.md
  matrix/
    routes.csv       # route,group,source,target,status,notes

Per-screen files#

Each follows the section structure of ../WALKTHROUGH/00-conventions.md, adapted for React Native (see "is not" above). All 12 screens are drafted.

Notable findings (code-state)#

  1. domain/[domainId].tsx is enormous (~15,100 LOC of dense per-domain logic). domain-detail.md captures the shared scaffold and the full state machine (loading / access-locked paywall / offline / unavailable / planned / deep-link-focus); a per-domain deep walk of the content blocks is a recommended follow-up.
  2. compose.tsx and profile/safety.tsx are Expo Router-discovered routes, not explicit <Stack.Screen> declarations. Both now have visible launchers: Home opens the scene composer when its feature flag is enabled, and Profile opens the safety record. compose still shows "Paid tier" copy without an entitlement gate.
  3. v2.tsx, v3.tsx, and v6.tsx are thin route wrappers around their companion implementations in ../v2, ../v3, and ../v6.
  4. Offline is handled via GlobalOfflineBanner / ShellOfflineContinuityCard and an activity offline queue; mocap flushes uploads behind a flag. Some screens (e.g. mocap controls) are missing accessibilityLabels — flagged.