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)#
domain/[domainId].tsxis enormous (~15,100 LOC of dense per-domain logic).domain-detail.mdcaptures 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.compose.tsxandprofile/safety.tsxare 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.composestill shows "Paid tier" copy without an entitlement gate.v2.tsx,v3.tsx, andv6.tsxare thin route wrappers around their companion implementations in../v2,../v3, and../v6.- Offline is handled via
GlobalOfflineBanner/ShellOfflineContinuityCardand an activity offline queue;mocapflushes uploads behind a flag. Some screens (e.g. mocap controls) are missingaccessibilityLabels — flagged.