Leumas iOS
@leumas/iosLeumas iOS — a Capacitor shell over leumas-web. One codebase → web + iOS. Members get their own Leumas Studio in their pocket.
Leumas iOS — @leumas/ios
Mobile Leumas, focused on social. A Capacitor shell over leumas-web's social-only bundle. No product-local logic, ever.
appId: tech.leumas.app · Architecture: APPLIANCES.md §5
Core functionality
- Leumas Social on mobile — feed, reels, watch, stories, messenger, friends, groups, chatrooms,
discover, marketplace, random chat, sing, profiles, notifications.
- Account — login/signup, profile, membership status.
- Push & native shell — notifications, share sheet, camera/photo picker for posts, deep links.
- Central data, always — every byte comes from
api.leumas.tech. No local database, nothing to
reconcile, no offline write path.
What it must never do
| Never | Because |
|---|---|
| Contain product logic | it renders leumas-web. Any native capability another product could reuse becomes a shared/packages/* module |
| Ship the full hub bundle | it currently does (webDir: "../leumas-web/dist"). W1 fixes this |
| Keep a local database | social is one central graph. An offline social network isn't one |
| Re-implement social UI | @leumas/features/surfaces/social — identical to web |
How it composes
products/leumas-web ──build social entry──-> dist/social/ ──Capacitor webDir──-> iOS app
│
api.leumas.tech
Auth is free: the .leumas.tech cookie plus @leumas/api-client's credentials:'include' and Bearer fallback already work. Nothing to build.
File tree
products/leumas-ios/
├── package.json [done] @capacitor/{core,ios}; scripts: build:web · add · sync · open · dev
├── capacitor.config.json [partial] webDir → ../leumas-web/dist (must become dist/social)
├── README.md [done]
├── ios/ [todo] generated by `cap add ios` — not checked in yet
└── src/ ✗ DOES NOT EXIST AND MUST NOT
Three files today. That is correct and should stay close to it.
Roadmap
[todo] I1 · Point at the social bundle (roadmap B4)
- Status: todo — Wait on leumas-web W1 (the
social.htmlentry) - Status: todo —
capacitor.config.json→webDir: "../leumas-web/dist/social" - Status: todo —
pnpm add→ generate theios/native project, commit it - Status: todo — Verify the bundle has no
three, no cinematic, no media globe
[todo] I2 · Native capabilities
- Status: todo — Push notifications wired to the social
notificationstable - Status: todo — Camera / photo picker for posts — via a
shared/packages/*module, not app-local code - Status: todo — Deep links:
leumas://social/post/:idand universal links fromleumas.tech - Status: todo — Share sheet
[todo] I3 · Release management (roadmap D3)
- Status: todo — Control plane keeps an iOS release record: version, build, App Store state
- Status: todo — Minimum-supported-version gate enforced by the API — ~20 lines, and the real lever
- Status: todo — Decide OTA: Capacitor bundles
webDirat build time; live updates need
@capacitor/live-updates or a remote server.url. Apple permits JS-only updates that don't change core functionality. A deliberate choice, not a freebie
[todo] I4 · Store presence
- Status: todo — App Store Connect listing, screenshots, privacy nutrition labels
- Status: todo — Age rating — social + random chat needs care
- Status: todo — Moderation & reporting flows visible in-app (App Review requires them for UGC)
Run
pnpm --filter @leumas/ios sync
pnpm --filter @leumas/ios open
sync builds leumas-web first, then cap sync ios. Requires macOS + Xcode for open.