← All entries

Monday, May 4, 2026

Day 32 — May the 4th be with us: EquinePilot v0.1.0 is live

32 days from pnpm install to production. Star Wars Day, a real card swiped through live Stripe, the v0.1.0 tag pushed, and the first $39.99 in the bank balance.

3 min read

Daily entry

Day 32of building EquinePilot

Currently Day 77 · founder build log

Milestones reached

  • v0.1.0 tagged
  • Live mode Stripe
  • First Stripe charge
  • Production launch

May the 4th be with us — and apparently it was.

EquinePilot v0.1.0 went live tonight. A real card swiped through live Stripe, a real checkout.session.completed webhook, a real $39.99 sitting in the balance (immediately refunded — it was my own card on a smoke-test barn). The tag is pushed. The first product family in the suite is officially in the wild.

Day 32. April 3rd was pnpm install.

The shape of the day was one part finishing ReinLogic v1 — the second product in the suite, AI-powered business analysis — and one part the going-live finale. ReinLogic shipped 12 sessions across 19 commits earlier today, and I wrote about that arc separately. The launch story is what made tonight feel like a different kind of day.

Live-mode Stripe, fully wired. Account activated, business details, MCC, statement descriptor EQUINEPILOT. Tax category set to Software as a service (SaaS) - business use and "I'm not selling yet" on sales-tax monitoring (Stripe will tell us when we hit nexus). Six products recreated in Live mode — EquinePilot Core, Suite, Pro, monthly + annual — replacing the test-mode versions. Webhook endpoint pointed at https://equinepilot.app/api/webhooks/stripe, three events subscribed (checkout.session.completed, customer.subscription.deleted, payment_intent.succeeded), Customer Portal configured. All 10 Stripe env vars flipped from sk_test_… to sk_live_… on Vercel's Production scope, with the test values preserved on Preview + Development so PR previews keep working.

Neon branching landed in passing. The Vercel-Neon integration installed itself in about 10 minutes, created a vercel-dev branch as a copy-on-write clone of production, and wired DATABASE_URL onto Preview + Development scopes pointing at the branch instead of production. Real isolation: PR preview deploys can do whatever they want without touching customer data.

One real bug surfaced during the smoke test, in time to be killed. Walking through the Customer Portal flow uncovered three accidental Suite subscriptions — $79 × 3/mo — on a single Stripe customer. The manager (me) had clicked Subscribe three times in rapid succession before the activation webhook landed and the local barn.status === 'active' guard could engage. Real customers will absolutely do this. Two-layer fix shipped before tagging: create-checkout-session now asks Stripe directly for active subscriptions on the customer before opening a new session (returns 409 { code: 'subscription_exists' }); the webhook's checkout.session.completed handler now cancels any pre-existing stripeSubscriptionId before saving the new one. 4 new tests, 752 passing total.

Then the smoke test on a real card. New incognito tab, fresh signup at equinepilot.app/signup, slug smoketestmay4, real Visa, live Stripe Checkout. Click pay. Wait. The Stripe payout email lands in my inbox: "Congratulations, Genesis Product Solutions LLC! You've just received your first payment through Stripe." Real money. Refunded immediately. Cancelled the subscription. The webhook had fired correctly, the barn was active, the welcome email had sent, the onboarding wizard had launched on first manager login.

git tag -a v0.1.0 -m "First production-ready release — StableSync v1 + ReinLogic v1"
git push origin v0.1.0

That was the moment.

Day 32. From pnpm install to a multi-tenant SaaS with two live products, a working mobile app, AI-powered analytics, Stripe billing on Live mode, automated tenant migrations on every deploy, 92% test coverage, and a $39.99 charge that actually cleared. Tomorrow is for the first real barn — the one I'm not signed up to.

May the 4th be with us indeed.