Unified Quick Start
Connect one conforming Web host and one client without maintaining fifteen separate setup guides.
Complete the host core before adding payments, uploads, or push. Use a dedicated database and an HTTPS staging URL for real devices.
1. Choose and configure a host
Follow the Next.js Unified Host guide. Configure its database, Better Auth URL and secret, trusted native origin, and App API.
Follow the Nuxt Unified Host guide. Configure its database, Better Auth URL and secret, trusted native origin, and App API.
Follow the TanStack Unified Host guide. Configure its database, Better Auth URL and secret, trusted native origin, and App API.
Run the host schema migration, sign up on the Web, and verify /api/auth/get-session before continuing.
2. Choose and configure a client
Choose
soar_api, set the host base URL and native origin, then keep the Bearer token in Keychain. Follow Swift Soar API Setup.Choose
soarApi, set the host base URL and origin, then use the Keystore-backed session store. Follow Kotlin Soar API Setup.Choose
soarApi for an iOS/Android build and configure SecureStore. Expo Web does not support Unified. Follow Expo Soar API Setup.Choose
soarApi; configure the main-process API origin and encrypted session store. Follow Electron Soar API Setup.Choose
soarApi; configure the Rust API origin and private keyring session store. Follow Tauri Soar API Setup.Configuration failures are terminal for that build. Do not initialize the other backend as a fallback.
3. Smoke-test the shared product
- Sign up or sign in on the client, then open the same account on the Web.
- Update the profile in one surface and read it from the other.
- Create, edit, reorder, and delete a todo across both surfaces.
- Upload a permitted file and confirm its completion URL is readable.
- Revoke the client session from another device and verify it returns to sign-in.
- Configure a purchase provider, then confirm one entitlement snapshot appears on both surfaces.
- Register a device token and test push only where the matrix marks it supported.
For a concrete walkthrough, use Next.js + Swift Unified Setup.
