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