Final GA Push — Dogfooding MyAllyFile Until I Was Proud of It
A 70-hour week, a Bitbucket-to-GitHub migration, a tradeshow breathing down my neck, and the embarrassing bugs I only found by using my own product.
By Mike Whobrey
I rebuilt MyAllyFile as a Vite + React PWA over a stretch of sprints — I wrote about that rebuild here. That work got the product onto solid ground. This week was a different kind of work.
It wasn't "add another feature." It was "is this actually ready for people who don't know me?"
A perfect-storm week
This was a special kind of perfect-storm week. My "normal" job was busier than it has been in months — a migration from Bitbucket to GitHub and all the special hell that comes with that. On top of it, we had a tradeshow the following week where at least three of my projects would be front and center under scrutiny, and they were getting tested hard in preparation.
A 70-hour work week is never fun. This one was especially draining. Something kept telling me to keep pushing on MyAllyFile anyway.
I know this project matters. It could help a lot of people. But I was not proud of the state it was in at the beginning of the week.
I am now.
Dogfooding like a stranger
So I used the production site the way someone who found a link on the internet would: sign up, build a profile, hit checkout, share a link, stare at the marketing pages like I'd never seen them.
That found more sharp edges than another planning doc ever would.
The bounce-before-you-see-the-good-parts bugs
Signup failed for a password that looked fine to me but not to Firebase's live password policy — it wants a non-alphanumeric character. The UI used to dump a cryptic Identity Toolkit error. It now says the requirement up front.
Checkout used to dump you back on the Pricing page after Stripe. That's not where you manage a plan. You land on the dashboard now.
The Open Graph share image was an AI-generated shield that wasn't our logo. Fixed. Small stuff. The kind of stuff that makes people bounce before they ever see why this product exists.
Hardening before strangers show up
I also spent time on the less glamorous work: accessibility on dialogs, form errors, wizard progress, and PIN strength hints. App Check and rate limits were already on the sensitive public callables — I wanted to be sure the public surface still felt honest under that pressure. Pricing amounts on the page now come from the live Stripe products in Firestore instead of hardcoded strings that would drift the first time I change a price in the dashboard.
Marketing honesty
The landing page used to imply the QR code "contains" your medical profile. It doesn't. It opens a PIN-gated page. The copy says that now.
I cleaned up the public chrome too — shared footer on the marketing pages, origin-story slug fixed so the URL people actually share matches the post, and a sitemap that only lists posts that exist in production. Yes: I had draft filenames leaking into the sitemap. Embarrassing. Fixed.
I also left the engineering diary public on purpose. If you're trusting a medical-adjacent tool with family data, you deserve to see how the sausage got made — including the messy rebuild and the stupid errors I make along the way. I don't claim to be perfect. I do promise to fix mistakes.
What "GA" means for MyAllyFile
MyAllyFile is a web-first PWA. Free core profile. Stripe on the web if you want SMS alerts and more emergency contacts. No App Store listing — that path is currently a dead end for a health/medical product for me, and I'm not pretending otherwise.
GA, for me, means:
- the emergency path works
- billing doesn't strand you
- auth errors are honest
- the public pages don't oversell
- I'm willing to put a URL in front of strangers on the interwebs without holding my breath
What I'm not claiming
This is not a hospital system. It is not a substitute for 911, a medical ID bracelet, or your doctor's advice.
It is a vault with keys you control: QR/link, emergency PIN, trusted PIN, and a time-limited emergency access path that notifies your contacts — and can include your GPS coordinates and a map link if you choose.
Core stays free forever. Paid tiers are SMS and higher contact limits — not a paywall on the thing that matters in an emergency.
If you want to dig in
If you want the why behind the product, start with our family's story. If you want the rebuild war story, it's here.
If you want to try it: myallyfile.com. Free to create a profile. If something feels off — confusing, creepy, missing, or oversold — tell me at support@myallyfile.com. I'd rather hear hard truths now than polite silence later.
Thanks for reading. I'm tired. The product is live. And for the first time this week, I'm proud of it.
— Mike Whobrey