Skip to main content
The repository is a Bun workspace orchestrated by Nx.

Applications

Shipped packages

The workspace TypeScript configuration still contains aliases for additional package names, but no corresponding directories are shipped. Do not import an alias unless its package exists under packages/.

Mobile composition

apps/mobile/app/_layout.tsx composes the runtime providers and startup services. At a high level it:
  1. Loads fonts and controls the native splash screen.
  2. Resolves auth, subscription, notification, and analytics adapters.
  3. Composes i18n, safe-area, theme, auth, analytics, subscriptions, and UI providers.
  4. Handles Firebase email-verification deep links.
  5. Enforces authentication, verification, security setup, onboarding, and unlock redirects.
  6. Renders the route stack from apps/mobile/src/stacks/main.tsx.
See Navigation and access control for the exact route flow.

Configuration layers

  • apps/mobile/app.json contains static Expo and native plugin configuration.
  • apps/mobile/app.config.js derives environment-specific names, identifiers, schemes, native Firebase files, and OneSignal mode.
  • apps/mobile/eas.json defines build, submit, environment, and update-channel profiles.
  • amisi.config.json selects adapters and contains security and theme configuration.
  • packages/config/src/env.ts validates public runtime environment variables.
See Configuration overview before editing these layers.

Engineering boundaries

  • Keep route files focused on route composition.
  • Keep reusable domain behavior in existing packages.
  • Access environment values through @amisi-mobile-starter/config in app/package code.
  • Keep provider SDK imports inside their adapter package.
  • Reuse @amisi-mobile-starter/core, @amisi-mobile-starter/theme, and @amisi-mobile-starter/ui before creating equivalents.
  • Use TanStack Query for server state and Zustand for client state when adding those concerns.
The current mobile app does not have an apps/mobile/src/screens directory. Existing screens are primarily route files. Treat the repository rule that recommends src/screens as guidance for new extracted screen logic, not as a description of the current tree.