Start with database access rules
Confirm that one user cannot read or write another user's rows. With Supabase, this means Row Level Security is enabled on every table and the policies are scoped to the authenticated user. This is the single most common critical failure in AI-built apps.
Then lock down secrets and routes
No Stripe, OpenAI, or service-role keys in the client bundle. Every private and admin route enforced server-side, not just hidden in the UI. Webhooks verify signatures before acting.
Finish with operational safety
Safe file uploads, an audit trail for sensitive actions, separated demo and production data, and error monitoring so failures are visible before customers report them.