01 Authorize
Prove you own it before anything runs.
Verify the domain with a DNS TXT record or meta tag, connect source through the read-only GitHub App or a ZIP, and attest the Supabase backend. Each scan records consent and scope.
02 Scan
Check what actually ships to a browser.
Client bundles, source, Supabase policies, storage buckets, headers and dependencies are checked. Requests are bounded, rate-limited and read-only by default.
- Client bundles
- Source · read-only
- Supabase policies
- Security headers
- Dependencies
03 Prove
Replay the read as somebody else.
Two dedicated test accounts and synthetic rows. A’s request is replayed as User B and as a logged-out visitor. Successful access becomes a finding; ambiguous ownership stays untested.
2 proven findings · write replay untested
04 Fix
Take a specific repair back to your tool.
Every finding comes with redacted evidence and a fix prompt for Lovable, Bolt, Cursor or Claude Code. Apply it, then run the same checks again.
Repair the authorization of the profiles table. A logged-out GET returned 3 rows and User B read the row owned by User A. Allow a user to read only their own profile using the actual owner column and auth.uid(). Add tests for A, B and logged-out access.



