Appearance
Platform Config
/admin/config — the PlatformConfigView organizes platform-wide configuration into 8 sections. Edits to sensitive values (e.g. Stripe keys) are stored encrypted at rest and resolved DB-first with env-var fallback.
The 8 sections
1. Org Type
Default orgType assigned to newly created organizations (typically business; agency for Partner sign-ups).
2. Stripe API Keys
The platform's own Stripe secret key (sk_live / sk_test or restricted rk variant) and webhook signing secret. Stored encrypted. Used for platform-tier subscriptions and to collect platform fees from Connect transactions.
3. Fees
Platform fee configuration applied to Stripe Connect transactions — default application-fee percentages for standard and agency-partner orgs.
4. Plan Prices
Stripe Price IDs for each platform plan tier (Starter, Professional, Enterprise). These point at Prices that exist on the platform's own Stripe account.
5. Graduated Pricing
Configuration for the graduated active plan — the tier breakpoints used by the graduated billing logic.
6. Service Prices
Stripe Price IDs for the built-in platform services (the 6 entries in serviceCatalog.ts).
7. Provider Org
The organization ID of the platform provider (Local Visibility Lab's own org). Marketplace listings owned by this org appear with platform branding.
8. Categories
Master list of service categories used to tag OrgService entries and group them on the marketplace.
Editing values
Most fields are inline-editable with a confirmation step. Sensitive values (Stripe secrets, webhook signing secrets) are masked on read.
🚧 Coming Soon — vote at /roadmap
Additional in-UI platform config: OAuth client ID/secret editing, Mailgun + email config, an editable feature-flag list with per-org overrides, daily-metrics job schedule + rate-limit tuning, audit log of admin changes, nightly platform-config backups, and a two-person rule for sensitive edits. Today these live in environment variables,
featureFlags.ts, or job code — they ship via deploy, not via UI.