Supported environments
- Browser: Vite serves the single-page app locally. Production hosting must serve
dist/and route unknown paths to the SPA entry. - Desktop: Electron package targets Windows portable/NSIS and Linux AppImage/deb/dir via
electron-builder. - Mobile: Capacitor 8 targets Android and iOS. Native project builds require Android Studio/SDK or Xcode. Feature parity is not established; see
docs/mobile/PLATFORM_LIMITATIONS.md.
Prerequisites
You need Node.js and npm compatible with the lockfile, Git, and a configured Supabase project. Desktop and mobile release builds require Electron Builder and platform-specific dependencies; mobile builds additionally need Android Studio or Xcode. Versions and support policy are not declared in the repository.Local browser launch
1
Install dependencies
Run
npm ci to install from package-lock.json.2
Set required environment variables
Create a local Only these two Vite variables are mandatory at client initialization (
.env file with:src/integrations/supabase/client.ts).3
Start the dev server
Run
npm run dev. Vite listens on port 8000 (vite.config.ts).4
Open the app
Open the printed local URL. Most product screens require a signed-in account and a working Supabase client configuration.
Server-side secrets
Edge Function secrets are server-side and vary by feature. Secret names discovered in source include:SUPABASE_URLSUPABASE_ANON_KEY- A service-role or secret key where privileged operations require it
OPENAI_API_KEY/AI_API_KEYGEMINI_API_KEYSTRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRET- Origin and app settings
.env exists in this checkout; do not copy or publish its contents.
npm scripts
All commands are declared inpackage.json.
Core
Desktop
Cloudflare
Supabase
Mobile
Repository layout
Suggested workflow
- Install dependencies with
npm install. - Configure the local app using the project’s approved private setup instructions. Do not copy production credentials into source files, documentation, chat, or a public repository.
- Start the frontend with
npm run dev. - For Supabase-backed features, validate the configured project with the bootstrap scripts.
- For desktop or mobile builds, use the corresponding
desktop:*ormobile:*scripts.
Common setup failures
- Missing Supabase public config: the client throws during app startup. Set both required
VITE_variables and restart Vite. - Blank or error startup: confirm dependencies and the Supabase URL/key pair, then inspect the browser console. The app has a startup error boundary and a configuration fallback.
- Auth, tables, or functions fail: confirm the target Supabase project has the required migrations, Auth settings, Edge Functions, and secrets deployed.
npm run supabase:checkchecks deployment prerequisites; it does not prove runtime feature health. - OAuth or email redirect errors: confirm Supabase Auth URL allow-lists and function CORS origins against the exact development or production host.
Common maintainer checks
- Verify private local configuration and backend connectivity without printing credentials.
- Ensure auth and role permissions are correctly configured.
- Verify Stripe and payment webhook configuration for billing flows.
- Ensure
dist/builds cleanly before deployment. - Check migration and edge function alignment before a production rollout.
Repository orientation
- Start with
src/main.tsxandsrc/App.tsxfor initialization, providers, routing, and access guards. - Read
src/components/AppLayout.tsxfor global navigation and shell behavior. - Read
src/pages/for routed screens,src/components/for shared UI, andsrc/lib/for domain and service logic. - Use
src/integrations/supabase/client.tsandtypes.tsto understand client configuration and generated schema types. - Read migrations before changing database behavior. Treat them as source-controlled history, not proof of deployed state.
- Read the individual Edge Function and its
_shared/helper for provider calls and server-side validation. - Review Electron
mainandpreloadcode before adding native bridge methods.
Development sequence
1
Match tool versions
Use the Node and npm versions supported by the project’s lockfile and scripts.
2
Install and configure
Install from the root manifest using the established lockfile workflow. Obtain approved local configuration from maintainers without copying production credentials.
3
Run against a development backend
Run the Vite app locally and sign in with a test account in a non-production project.
4
Make one focused change
Test the affected screen or flow, including expected error states.
5
Verify before proposing
Run the relevant lint, test, and build commands. For database or function work, verify the migration or function in an isolated project before deployment.
Some platform-specific scripts expect Windows, Android, iOS, or deployment tooling. A script being defined does not mean its prerequisites exist on every machine.
Browser, desktop, and mobile validation
At minimum, validate the changed user journey in a browser. If a change touches Electron bridge methods, test the packaged desktop runtime and confirm only intended methods are exposed. If it touches Capacitor, validate permission and lifecycle behavior on the relevant device or emulator. Do not assume browser APIs behave identically in native WebViews. For user-visible workflows, check:- Signed-out access and redirect behavior
- Loading, empty, success, and failure states
- Unauthorized account behavior
- Keyboard focus and narrow viewport layout
- Persistence after refresh, where the feature promises it
- No duplicate writes when retrying
- A safe and comprehensible error message
Build, test, and release cautions
Run focused tests first, then the full lint, test, and build commands when appropriate. Review generated bundles and packaged app contents for accidental credential inclusion. Check version and release metadata and platform artifacts before publishing. Do not deploy migrations, functions, Worker assets, or desktop builds to production without an approved release process and a verified target.Documentation maintenance
The user guides are based on source and repository documentation, not a live audit of every hosted feature. When product behavior changes:- Update the user instructions and the capability guide together.
- Confirm route names against the active route table.
- Confirm labels against the current screen, not a legacy screenshot or unused component.
- Describe externally configured behavior as conditional until verified in a test deployment.
- Keep instructions free of credentials, private URLs, account identifiers, and personal data.
- Record unsupported, redirected, or unverified features explicitly rather than presenting them as ready.
Recommended reading order
For a newcomer, the best first pass is:README.mddocs/README.mddocs/orbit-ai/overview.mddocs/orbit-ai/architecture.mddocs/orbit-ai/getting-started.mdsrc/App.tsxfor route and guard behaviorsupabase/for backend logic and database state
Open verification items: live screenshot capture for sign-in, chat, history, settings, and privacy screens needs a test tenant with synthetic data. Test tenant requirements for standard, workspace-member, staff, and admin roles, plus MFA states and entitlements, are not yet confirmed.