Your App's Database: Neon or Supabase
What it does
A database is your app's job file cabinet: jobs, claim numbers, adjusters, subcontractors, drying log readings, change orders. Neon and Supabase both give you a real Postgres database online. The difference is what comes with it.
- Neon: started as just the database and has added sign-in and file storage since. Known for sleeping when idle and quick restore to an earlier point in time.
- Supabase: database plus user sign-in, file storage (job photos, COI PDFs), and a dashboard where you can see your tables like a spreadsheet.
What it costs
| Neon | Supabase | |
|---|---|---|
| Free plan | $0. 1 GB per project (20 GB across the account), 100 compute hours per project a month, 100 projects | $0. 500 MB database, 1 GB file storage, 50,000 monthly active users, 2 active projects |
| The catch | Sleeps after 5 minutes idle, wakes on the next request. Restore history only 6 hours. | Pauses after 1 week of inactivity. No automatic backups. |
| When you pay | Launch, pay as you go: $0.106 per compute hour, $0.35 per GB a month. | Pro from $25 a month. Never pauses; daily backups kept 7 days. |
How to pick: John uses Neon for his own projects, and it's a good fit for a small app that sits idle a lot: it sleeps when nobody's using it, wakes on the next request, and the paid plan bills only for what you use. Want sign-in, file storage, and a spreadsheet-style view of your tables in one place? Look at Supabase. Running your business on it either way? Budget for a paid plan, because neither free plan includes real backups.
A 10-minute setup (Neon)
Where your keys go. Every service here gives you secret keys. Keep them in exactly two places: your password manager, and your app's settings.
- If an AI agent with its own cloud computer builds for you (like Grok Bot): paste each key into the agent's secret card or Secrets section, never into the chat. Saved values can't be read back, so keep your own copy.
- If you build in a folder on your own computer: put keys in a
.env.localfile, and make sure.gitignorelists.env*before your first save.- On Vercel: add the same keys under Settings, Environment Variables, then redeploy.
Never put a key in a screenshot, an email, or browser code. Anything starting with
NEXT_PUBLIC_is readable by anyone.
- Sign up at neon.com and create a project. Pick a region near your shop.
- Click Connect in the Neon Console and copy the connection string.
- Save it in your settings as
DATABASE_URL. It holds the database password, so it stays on the server only. - Ask your AI coding assistant to create your tables.
- Open the SQL Editor in the Neon Console and ask your assistant to explain anything you don't recognize.
Common mistakes and gotchas
- Supabase changed its keys. The old
anonandservice_rolekeys are being retired by the end of 2026. Use publishable (sb_publishable_...) and secret (sb_secret_...) keys, managed under Settings, API Keys. A long key starting witheyJmeans old instructions. - Free Supabase projects pause after a week without enough activity. Watch for the warning email.
- Row Level Security off means anyone with your public key can read your jobs and claims.
- The secret key skips every security rule. Server only.
- Free plans don't really back up your data. If you'd hate to rebuild your job history, pay.
Where it fits in your build
The database comes right after the app is on Vercel. Create the tables with Row Level Security on, add yourself as the first user, then build screens on top. Keep the secret key on the server only. You'll need it later for the parts of the app that receive texts and emails.
Sources
- Neon pricing (Free: 1 GB per project and 20 GB across the account, 100 CU-hours per project, 100 projects, scale to zero after 5 minutes, 6 hours of history, 1 manual snapshot, 60,000 auth users, 5 GB object storage per project. Launch: $0.106 per CU-hour, $0.35 per GB-month, up to 7 days of history. Bills under $0.50 aren't collected. Free limits suspend compute or block writes and don't delete data): https://neon.com/pricing (checked October 7, 2026)
- Neon connection string from the Connect button: https://neon.com/docs/connect/connect-from-any-app (checked October 7, 2026)
- Supabase pricing (Free: 500 MB database, 1 GB storage, 50,000 monthly active users, pauses after 1 week inactive, 2 active projects. Pro from $25 with $10 compute credit, extra projects add their own compute cost, daily backups kept 7 days, 100 GB file storage): https://supabase.com/pricing (checked October 7, 2026)
- Supabase project pausing (warning email about a week before; paid projects never pause): https://supabase.com/docs/guides/platform/free-project-pausing (checked October 7, 2026)
- Supabase API keys (publishable and secret; legacy keys deprecated by end of 2026; Connect dialog; Settings, API Keys): https://supabase.com/docs/guides/api/api-keys (checked October 7, 2026)
Last checked: October 7, 2026
Full article
What goes in the file cabinet
A restoration or remodeling app usually starts with a handful of tables:
- Jobs: address, loss type (water, fire, mold), claim number, carrier, adjuster name and contact, status (mitigation, drying, estimate, rebuild, closed), start and target dates.
- Subcontractors: company, trade, phone, email, COI expiration date.
- Job assignments: which sub is on which job, and doing what.
- Communications: every text and email, tied to a job and a sub.
- Later, maybe: drying log readings (date, room, material, moisture reading), change orders (description, amount, approved by, date), payments (deposit, insurance check, final).
Both Neon and Supabase handle all of that. Postgres is Postgres. The choice is about everything around the database.
Neon vs Supabase, plainly
| Question | Neon | Supabase |
|---|---|---|
| Sign-in for your staff | "Managed Better Auth," up to 60,000 monthly users on Free | Built in, with an Add user button |
| File storage (photos, COI PDFs) | 5 GB object storage per project on Free | 1 GB free, 100 GB on Pro |
| Looking at your data | SQL Editor in the Neon Console | Table Editor, like a spreadsheet |
| Idle behavior on free | Sleeps after 5 minutes; wakes on next request, a short delay | Pauses after a week; you restore it from the dashboard |
| Backups on free | 6-hour restore window, 1 manual snapshot | None automatic |
| Hitting a free limit | Out of compute hours: compute suspended until next month. Over 1 GB: writes blocked. Data isn't deleted | Project limits apply; pausing is the big one |
| Paid plan shape | Usage-based: no monthly minimum; bills under $0.50 aren't collected | Fixed: Pro from $25 a month (includes $10 compute credit; each extra project adds about $10) |
The plain recommendation: John uses Neon for his own projects. If your app sits idle a lot, Neon's free plan is more forgiving about idle time, and its paid plan may cost less for a small app, though the bill moves with use. If you want sign-in, file storage, and a spreadsheet-style table view in one account with a fixed monthly price, use Supabase and plan on Pro once your business depends on it.
The full setup (Neon)
Sign up at neon.com, create a project, click Connect in the Neon Console, and save the connection string it shows as DATABASE_URL. Keep it server only. If you use Neon's sign-in or storage, follow Neon's own docs for those.
The full setup (Supabase), step by step
- Sign up at supabase.com.
- New Project. Name it something like
restoration-job-tracker. Pick a region close to your shop. Set a strong database password and save it in a password manager. You won't use it day to day, but it's a pain to lose. - Wait a few minutes while the project builds.
- Copy the two values your app needs first. Click Connect at the top of the project page. Copy the Project URL and the publishable key (starts with
sb_publishable_) into your settings under these names:
In aNEXT_PUBLIC_SUPABASE_URL= NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=.env.localfile, paste each value right after the=. No spaces, no quotes. - Leave the secret key alone for now. It's under Settings, API Keys. You'll need it later for the parts of the app that receive texts and emails. Save it as
SUPABASE_SECRET_KEY, and never put it in browser code. - Create the tables. Ask your assistant: "Create tables for jobs, subcontractors, job assignments, and communications, with Row Level Security turned on for every table." It will give you SQL to paste into the SQL Editor. Paste, click Run.
- Look at what it made. Open Table Editor. Click each table. Ask your assistant to explain any column you don't recognize.
- Add yourself as a user. Authentication, Users, Add user, with your own email.
More gotchas worth knowing
- Tutorials are full of the old Supabase keys. If your assistant writes
NEXT_PUBLIC_SUPABASE_ANON_KEYorSUPABASE_SERVICE_ROLE_KEY, it's working from older instructions. Both systems work side by side for now, but the old ones are being retired. Ask it to use the new names. - The secret key won't work in a browser, by design. If something breaks after switching keys, check whether browser code was trying to use it.
- The free pause matters more than it sounds. A tool that's quiet over a slow month can be paused when a big storm hits and you need it. Supabase emails a warning about a week before.
- One daily scheduled job may not count as enough activity to keep a free project awake. Don't count on it.
- Neon's 1 GB cap blocks writes. If your drying logs and photos fill it, new readings stop saving. Keep photos in file storage, not in database rows.
- Plan for real backups. Neon Launch keeps up to 7 days of restore history, billed at $0.20 per GB a month. Supabase Pro keeps daily backups for 7 days.
The order that saves the most trouble
- Pick Neon or Supabase and create one project for building.
- Create your tables with Row Level Security on every table.
- Add yourself as a user and sign in.
- Before real jobs go in, move to a paid plan or set up backups you trust.
- Watch for the storage cap (Neon, 1 GB per project on Free) or the free-plan pause email (Supabase).
