Sample report
What a shakedown report looks like
This is a sample, from a fictional app. It shows the shape of what you get back: a ranked list of findings, each written in plain English — what it is, what goes wrong if you don't fix it, and the fix your own AI can apply.
Shakedown report
Sample app: "Bookly" — a fictional booking app
6
Findings
3
Critical
3
High
0
Open after fixes
Exposed API key in the client bundle
CriticalWhat it is
A Supabase service-role key is bundled into the client. Anyone who opens the app can read it from the network tab and use it to read or write every row in the database.
If not fixed
The fix, as it would be handed back
Move the service-role key to the server. The client should only ever hold the anon key. Rotate the exposed key now — treat it as compromised.
Open data: any visitor can list every record
CriticalWhat it is
The bookings table has no row-level security. A logged-out visitor can list every booking, including other people's details.
If not fixed
The fix, as it would be handed back
Add a row-level security policy so each user can only read and write their own bookings. The policy is written so your AI can apply it.
Database admin interface exposed to the public
CriticalWhat it is
A phpMyAdmin interface is reachable at /phpmyadmin on the live site. It's the tool for managing the database, and it's wired to the public internet.
If not fixed
The fix, as it would be handed back
Take the admin interface off the public internet — move it behind a VPN or a private network, and remove the public route. The fix is written so your AI can apply it.
Broken access control on the admin route
HighWhat it is
The /admin route checks that a user is logged in, but not that they have the admin role. Any logged-in user can reach it.
If not fixed
The fix, as it would be handed back
Add a role check to the /admin route guard. The pattern is written so the same check can be applied to the other admin routes.
Secrets committed to the repo history
HighWhat it is
A Stripe secret key was committed in an early commit and is still in the history. Removing it from the current file does not remove it from the history.
If not fixed
The fix, as it would be handed back
Rotate the Stripe key. Add the secret to .gitignore. The history note explains how to purge it if the repo is public.
No source control
HighWhat it is
The code has no git history and no remote backup. The only copy is the one running in production.
If not fixed
The fix, as it would be handed back
Set up a git repo with a remote backup, and a rollback story your AI can work within. The setup is written so your AI can apply it.
What comes with the report
- Every finding is ranked, so you know what to fix first
- Every finding is written in plain English — what it is, what goes wrong if you don't fix it, and the fix
- Every finding ships with a fix your own AI can apply
- A walkthrough of the report, so you understand what you're looking at
- The "engineer ready" clean-up, so the next change costs less
Get a report like this, for your app
Send a few details and you'll get a fixed quote for the size of your app, up front.