Engine status
Sanitized aggregate status from the growth engine. No tenant names, domains, PHI, payloads, or secret values are returned to this surface.
The customer-facing product entry point for onboarding, live engine status, and launch readiness. Tenant-specific command-center data is now bounded by an auth and product-membership gate before customer workspaces can open.
The first customer app screen renders public sanitized engine aggregates, live-readiness blockers, and the protected tenant-summary contract side by side. Tenant names, domains, payloads, PHI, and secret values remain outside this route.
Sanitized aggregate status from the growth engine. No tenant names, domains, PHI, payloads, or secret values are returned to this surface.
Sanitized customer-live checklist from /api/health. This panel shows what is ready and what is still blocked without returning secret values, tenant records, domains from private data, or PHI.
Protected tenant-scoped command-center data from /api/aircite/tenant-summary. Counts render only after Supabase Auth and AIRCITE product membership pass.
AIRCITE now has a server-side access gate that verifies Supabase Auth and checks shared platform product grants before any tenant workspace can open.
This route separates the real product entry point from the marketing homepage while keeping every unfinished launch gate explicit.
Collects business, domain, plan, channels, and growth goals into the Supabase onboarding queue without PHI or secret values.
Reads sanitized aggregate counts from the growth engine: active tenants, runs, SEO pages, GEO observations, social events, and audit leads.
Enforces Supabase Auth plus AIRCITE product membership before any tenant-specific workspace can open. The gate returns booleans only, not tenant records.
Create the review item that prepares a tenant for provisioning.
Create a Supabase Auth browser session that can be sent to protected AIRCITE APIs.
Authenticated customer workspace access requires a Supabase session and an AIRCITE product grant.
Checkout remains unavailable unless Stripe price IDs and a valid secret are configured.