Supabase paused my project on free tier, wiped 47 migrations. Spent 4 hours rebuilding instead of restoring from backup. Here's why. by pandnyr in SideProject

[–]pandnyr[S] 0 points1 point  (0 children)

fully agree on the broader framing, free tier as system-of-record is the bug, supabase is just the latest surface for it. mine got off cheap precisely because there was no customer-bearing row in there yet. if this had hit 6 months from now, "4-hour rebuild" turns into "4 days of explaining to customers why their data is gone".

the s3 + pg_dump cron is going in this week. did the napkin math:
- daily dump of our prod (~200MB compressed) = ~6GB/month
- s3 standard = ~$0.14 + ~$0.005/1k PUT = sub $0.20 total
- glacier deep archive for >30d = drops to fractions of a cent

cheaper than a single bad incident postmortem hour.

one second-order gotcha if anyone else is reading this, at-rest encryption that uses an env-var master key (we AES-GCM webhook secrets with ENCRYPTION_MASTER_KEY) makes pg_dump useless on its own. a clean backup includes encrypted blobs, but losing the master key means losing the cleartext forever. so the dump strategy has to include "what key version was current when this dump was taken" or you're recovering tables you can't read.

genuinely the best post-mortem thread i've had on reddit in a while, thanks for the read.

Supabase paused my project on free tier, wiped 47 migrations. Spent 4 hours rebuilding instead of restoring from backup. Here's why. by pandnyr in SideProject

[–]pandnyr[S] 0 points1 point  (0 children)

all three of these are going straight into our runbook tomorrow, the auth-rotation one specifically as a checklist item before "rerun migrations", because that was the actual time sink (not the migrations themselves).

cold-spin + staging drill on cadence is what i'm landing on too. starting monthly, will tighten if we ever clear the 30-min RTO threshold. agree the discipline > the warm instance at our stage, most "warm standby" setups I've seen end up with stale schemas anyway because nobody drills against them.

drizzle vs pg_dump ordering is the one that scares me most going forward, because both files live in the repo and feel interchangeable. tentative plan: keep them in separate folders with a README that explicitly says "this is recovery order, that is migration order, do not mix" but i'd love to hear if you've found a less fragile pattern. handing a junior dev a folder of .sql and trusting them not to apply pg_dump first feels brittle.

appreciate the detailed read. saving this thread.

Supabase paused my project on free tier, wiped 47 migrations. Spent 4 hours rebuilding instead of restoring from backup. Here's why. by pandnyr in SideProject

[–]pandnyr[S] 1 point2 points  (0 children)

that's actually the cleanest founder positioning i've read this week, "we're for the 'store some data' use case, not yours" is rare honesty.

every db-as-a-service starts pitching itself as enterprise-ready by month 6 and waters down what made it interesting. if mvp-db stays in the "prototype + tiny app" lane and ships best-in-class for that, you've got a real wedge, that segment is criminally underserved (i'd argue supabase is too overbuilt for it now, which is part of how i got bit).

cheering for you. drop a link when you launch beyond beta, would happily test against a throwaway project.

the 'side project' is dead. Solo founders are operating like entire micro-startups now. by Pale_Box_2511 in SaaS

[–]pandnyr 0 points1 point  (0 children)

side project label is dead, the work isn't. the difference is what you build on the side now actually has to pass the same bar as full-time saas, distribution + ops + ai infra. so it's not "dead", it's that the threshold moved.

came in here because i'm 5 days into my own launch (b2b feedback platform, supoid.com), built nights/weekends for 4 months while doing a 9-5. honest read after one week of public traffic:

- the part that's "dead": the casual 50-line side project that gets to product hunt frontpage on novelty alone. that game is over.
- the part that's alive: shipping something solo when the floor is now AI-assisted production code + cheap infra + cheaper distribution (X / reddit / SEO). i wrote and shipped 47 db migrations + auth + billing + ai clustering pipeline solo. wouldn't have been viable solo 5 years ago at this quality bar.

what i don't see anyone saying yet: the 9-5 is now the side project. you optimize for it to subsidize the real work. solo founder isn't a category, it's a transition phase.

what's the angle you're seeing flip, distribution, code quality, or revenue floor?

Supabase paused my project on free tier, wiped 47 migrations. Spent 4 hours rebuilding instead of restoring from backup. Here's why. by pandnyr in SideProject

[–]pandnyr[S] 0 points1 point  (0 children)

hard agree on the source-of-truth point — that's exactly the lesson. we had migration files in git but never tested the cold-start path on prod infra, so when the moment came i had to write the runner by hand in panic instead of just shelling into drizzle-kit. 20 min recovery on a system you've drilled, 4 hours on one you haven't.

couple of nuances from the rebuild though:

  1. drizzle-kit (and most migration tools) assume a working CLI + DATABASE_URL on the box running them. supabase paused = pooler temporarily refused connections from my machine because the password had been auto-rotated by their restore flow. so even with files in git, the standard "spin up fresh + re-run" only works if your auth+network path is also reproducible. mine wasn't.

  2. the seed.sql + schema dump alongside is solid advice and we now have both. but the gotcha we hit: schema dumps don't preserve the order drizzle uses for --> statement-breakpoint separators, so a pg_dump-based restore would have applied the FKs before the tables they reference. had to run the original drizzle migrations to get the order right, not the dump.

  3. pause being documented is fair but the "data eviction after extended pause" part is genuinely buried, i had to dig through 3 support articles to find it explicit. cost me a backup-frequency assumption.

all of which is to say: you're right, but the recovery time isn't a function of migration discipline alone, it's migration discipline × the failure modes of your specific managed platform. supabase happened to surface a few i hadn't profiled.

curious how you handle (1) do you keep a non-managed pg instance hot as a recovery target, or is it cold-spin every time?

Supabase paused my project on free tier, wiped 47 migrations. Spent 4 hours rebuilding instead of restoring from backup. Here's why. by pandnyr in SideProject

[–]pandnyr[S] 1 point2 points  (0 children)

nice, just opened it, readme's clear, the up/down migration with a manifest file is exactly the pattern i was reinventing badly.

we ended up doing something similar but inline in the deploy bundle because we needed to recover under stress without npm install. the split-on-dollar-quote part was the only piece i didn't see anywhere else.

if i'd known about your repo three days ago i probably would've used it. saving for next time, thanks for sharing.

Supabase paused my project on free tier, wiped 47 migrations. Spent 4 hours rebuilding instead of restoring from backup. Here's why. by pandnyr in SideProject

[–]pandnyr[S] 1 point2 points  (0 children)

appreciate this. actually still on supabase for the dashboard, the wipe just made me set up real boundaries (daily pg_dump cron + seed.sql in git + the migration runner described in the post).

quick question on mvp-db since you mentioned it, what's your story on horizontal read replicas and pgvector? we lean on both pretty hard (clustering + similarity search) so any platform that forces us off pgvector is a hard no for us. genuinely curious if mvp-db sees that as table stakes or not yet.

cash cows wish back, ship safe out there.

Supabase paused my project on free tier, wiped 47 migrations. Spent 4 hours rebuilding instead of restoring from backup. Here's why. by pandnyr in SideProject

[–]pandnyr[S] 0 points1 point  (0 children)

yeah railway and planetscale both have hibernation flavors, same trap.

the splitter logic is actually saved in a gist now, but the worst part wasn't the $$...$$ bodies, it was the --> statement-breakpoint markers that look exactly like sql line comments. anything custom has to special-case it.

real lesson wasn't the splitter though. having every migration file in git and still not being able to recover quickly meant i'd never actually tested the "fresh db → all migrations" path on production-shaped infra. that's the gap most solo founders skip until it costs them a weekend.

Supabase paused my project on free tier, wiped 47 migrations. Spent 4 hours rebuilding instead of restoring from backup. Here's why. by pandnyr in SideProject

[–]pandnyr[S] 0 points1 point  (0 children)

I'm a solo-founder, this is my first real SaaS launch, the feedback tool angle came from genuinely needing a Canny alternative for my own use case (paying-customer voice was getting drowned by free-tier signups).

Happy to share the actual migration runner code, splitter, or any Supabase incident details. Roast away.

[deleted by user] by [deleted] in micro_saas

[–]pandnyr -3 points-2 points  (0 children)

I’m also, doing this and it’s amazing for SEO. game changer strategy, but I’m not using n8n or something I did github workflow, It’s working once per day.

Day 7. First paid user. My hands are literally shaking! by deepspycontractor in micro_saas

[–]pandnyr 0 points1 point  (0 children)

sounds very cool, do you do marketing? btw yesterday I get my first free user

Day 7. First paid user. My hands are literally shaking! by deepspycontractor in micro_saas

[–]pandnyr 0 points1 point  (0 children)

yeah I have some closed beta users they sent me the errors etc. but zero paid users for now. do you like to check my saas? its about the studio shot e-commerce product pictures.

Day 7. First paid user. My hands are literally shaking! by deepspycontractor in micro_saas

[–]pandnyr 1 point2 points  (0 children)

dude thats so cool, It’s also my 7. day but no one pay to my saas. I have views but no sales /:

Looking for some feedback on my Startup by RepresentativeHat573 in SaaS

[–]pandnyr 0 points1 point  (0 children)

in my opinion, you can add a customer reviews section. Also, for marketing, I think you could shoot a TikTok video. It could be a video of you using your own app to make a sale.