Skip to main content
Most “it’s broken” turns out to be an unset or mismatched env var — see Configuration.

Sign-in / email

In dev, EMAIL_DEV_MODE=true prints the 6-digit code to the API console — it isn’t emailed. Read it there.
Set SMTP_*, and set up SPF, DKIM, DMARC on the sending domain — without them, codes land in spam and nobody can sign in.
By design: auth is a six-digit email code; sign-in and sign-up are the same act. Don’t add a password flow.

Admin panel

Set ADMIN_URL in the API’s env to the admin’s exact origin — the API adds it to CORS automatically, and a mismatch reads as an auth bug.
Use ADMIN_LOGIN / ADMIN_PASSWORD from the API env, or an emailed staff code (printed to the API console in dev). The first admin comes from ADMIN_EMAILS.
The admin is pinned to TypeScript 6 (vue-tsc doesn’t support the TS 7 native compiler yet) — don’t bump it to 7.

App ↔ API

Check VITE_BACKEND_URL. On non-localhost the client enforces HTTPS; and the API’s CORS_ORIGINS must list the app’s web origin.
They’re inlined at build time — rebuild (for the admin Docker image, rebuild with the right --build-arg).
Declare every VITE_* in src/vite-env.d.ts — a typo is not a type error, it just arrives undefined.
You changed VITE_APP_NAME — it namespaces all local storage/settings/cache. Set it once, before launch.

Push & subscriptions

It’s off until configured — set ONESIGNAL_APP_ID + ONESIGNAL_API_KEY (server). See Push & VoIP.
Billing is off until configured — set the RevenueCat keys (client) + REVENUECAT_WEBHOOK_AUTH (server). To develop with no account, set VITE_REVENUECAT_MOCK=true. See Billing.

Native builds

Use JDK 21 (Android Studio’s bundled JBR), SDK 36, and npm run build:native (it excludes the pre-compressed web assets that break Android’s packager).
Correct — Capacitor 8 generates an SPM-based project. Needs Xcode 26+.
They can’t — test CallKit / VoIP pushes on a physical device.
By design — WebView debugging is off by default so release builds aren’t inspectable. Build that install with npm run build:native:debug to enable it, and never ship it.

Other

Set PUBLIC_SUPPORT_ENDPOINT to your API’s support endpoint; empty (default) = demo mode (“email us” notice), no posting.
src/pages/ru/ is generated by astro-i18next generate at build and git-ignored — edit the English source; RU regenerates.
The advisories all come from @ionic/cli — the dev-only tool behind npm run serve. They are not in your shipped app: npm audit --omit=dev reports 0. Nothing there bundles into the iOS / Android / web / desktop build.
That’s intentional. The kit ships ready-to-use pieces — an exported handler/composable/component with no current consumer is there for you to wire into your product as you build it, not leftover dead code.