This is a sample report from a fictional scan. Your report will look exactly like this, built from your code. Scan your code →
AscertifyGitHub

Static analysis · no code executed

Your scan report

Scanned Jul 21, 2026Source GitHub

We found 3 critical issues, plus 2 items worth raising with your developer.

3
Critical
2
Needs attention
2
Notes
5
Passed

Static review only — we didn't run the app or test live behavior. See exactly what we checked and what we didn't ↓

Critical

These are specific, verifiable, and hard to argue with. Resolve them before you sign off on this build.

14const db = createClient(url, "eyJhbGci…service_role…0xR2")

Your secret database admin key is sitting in code that ships to the browser. It bypasses every access rule you have. Anyone who opens your site can read or change all of your data.

Recommended first step:Rotate the key in your Supabase dashboard, then move it to a server-only environment variable. Never reference it from frontend code.
41ALTER TABLE public.users DISABLE ROW LEVEL SECURITY;

Row-level security is switched off on the users table. Any signed-in visitor can read every row — names, emails, everything — not just their own record. The app works fine in testing because you're the only user.

Recommended first step:Enable RLS on the users table with a policy that limits each user to their own rows, then verify with two separate accounts.
6const openai = new OpenAI({ apiKey: "sk-proj-8kJd…Wq2A" });

A live OpenAI API key is committed to the repository. Anyone with access to the code — or its git history — can copy it and run up your bill.

Recommended first step:Revoke this key now, create a new one, and load it from a server-only environment variable.

Needs attention

Not emergencies, but real. These shape what it will cost you to keep, replace, or hand off this codebase.

Notes & signals

Softer signals. We report what we observed, not what it means — read these as questions to ask, not conclusions to draw.

Passed

Checks we ran that came back clean. We show these so you know what the result above does and doesn't cover.

No SQL injection patterns found
No known CVEs in direct dependencies
Database migrations present
Lockfile committed
No circular dependencies

What we checked, and what we didn't

We checked

  • Hardcoded secrets and API keys
  • SQL injection patterns
  • eval() usage
  • Unfiltered Supabase queries
  • Test presence and coverage ratio
  • README present
  • npm scripts complete (dev, build)
  • Lockfile committed
  • .env.example present
  • Circular dependencies
  • Code complexity hotspots
  • Code duplication
  • Unused or dead dependencies
  • Undeclared dependencies (imported but missing from package.json)
  • Boilerplate ratio
  • Firebase rules publicly open
  • Row-level security disabled
  • Supabase service-role key in frontend code
  • Database migrations present
  • Unsafe migrations
  • Dangerous cascade deletes
  • Missing foreign-key indexes
  • Boilerplate-only schema
  • Known CVEs in direct dependencies
  • Deprecated or abandoned dependencies
  • Undeclared imports verified against the npm registry

We did not check

  • Commit count and delivery pattern
  • All commits in 24 hours
  • Single-author history
  • We did not run your application or execute its tests
  • Whether your features actually work as intended
  • Runtime login/permission behavior
  • Performance, scale, or hosting configuration
  • Business-logic correctness
  • Anything that requires a live, running system

This is a static review, not a penetration test. A clean result here is not a guarantee that your application is secure — it means the specific things we checked, listed above, came back clean. We report only what we can point to in your code.

Every finding above is the kind our scan finds in your code.

The free preview shows your critical count in a few minutes, before you pay anything.

Scan your code, free preview

← Back to ascertify.io