Skip to main content

Configuration

The core app runs without environment variables. Add environment variables only for the services you want to enable.

Environment variables

Browser variables

Variables prefixed with VITE_ are included in the browser bundle. Do not put secrets in them. Use browser variables only for public configuration such as Supabase URL, Supabase anon key, and Stripe publishable key.

Server variables

Server-only variables must be configured in the hosting provider, such as Netlify environment variables. Never commit service role keys, Stripe secret keys, or webhook secrets. Functions prefer the server-only names above and temporarily support the existing VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, and VITE_STRIPE_PRICE_ID names. VITE_STRIPE_PRICE_ID is a legacy server fallback only and is no longer read by browser code.

Feature detection

The app checks environment variables at runtime:
  • Supabase variables enable authentication and cloud sync.
  • Stripe variables enable payment flow.
  • Public API keys require Supabase and Netlify Functions; quota variables only override the defaults.
  • AI capture requires Supabase, Netlify Functions, the AI capture migrations, and either OPENROUTER_API_KEY or ANTHROPIC_API_KEY.
  • Missing optional variables keep the app in local-first mode.

Bark settings

Bark notification settings are configured in the app UI. Users provide their Bark server URL, device key, and reminder timing.