Pro · Build in public
The build log behind the numbers
The public revenue dashboard shows where things stand today. This is how they got there — every month, every price change, every churned account, and the stack that keeps margins above 90%.
Timeline
Month by month
-
Jun 2025
$4,020 MRR
SoloLaunch crossed 340 customers after a Product Hunt feature. Best month yet.
+$610 -
May 2025
$3,410 MRR
Shipped MicroDoc private beta to 20 SoloLaunch customers; no revenue yet but strong signal.
+$180 -
Apr 2025
$3,230 MRR
Churned two annual DevToolkit accounts. Painful, but it forced a long-overdue onboarding rewrite.
−$90 -
Mar 2025
$3,320 MRR
Raised DevToolkit Pro pricing 20%. Expected backlash never came — nobody cancelled.
+$240 -
Feb 2025
$3,080 MRR
A single SEO post ("self-hosted JWT decoder") started ranking and now drives ~30% of signups.
+$150 -
Jan 2025
$2,930 MRR
New-year SaaS budgets unlocked. Annual plans I added in December finally paid off.
+$410
Unit economics
Per-product profit & loss
Blended margin across all products is 92%. Bootstrapping only works when the costs stay this boring.
| Product | MRR | Costs | Margin | Primary channel |
|---|---|---|---|---|
| DevToolkit Pro | $2,840 | $190 | 93% | Organic SEO + word of mouth |
| SoloLaunch | $1,180 | $95 | 92% | Product Hunt + Twitter/X |
| MicroDoc | $0 | $40 | — | Closed beta (no pricing yet) |
The stack
What every product runs on
Framework
Astro + React islands
Static-first, fast, and cheap to host. JS only where it earns its weight.
Backend
Supabase
Postgres, auth, and storage without running a server. Generous free tier.
Payments
Stripe + Stripe Billing
Subscriptions, proration, and dunning handled. Never building this myself.
Resend + Buttondown
Resend for transactional, Buttondown for the newsletter. Both founder-friendly.
Analytics
Plausible
Privacy-first, no cookie banner, lightweight script. Owns its own narrative.
Hosting
Cloudflare Pages + Workers
Edge static + serverless functions. The free tier outlasts most side projects.
Hard-won
Five lessons that moved the numbers
-
Charge more, sooner. Every price increase I delayed cost me months of compounding revenue.
-
One SEO article that ranks beats ten that don't. Write fewer, deeper, more specific posts.
-
Churn is feedback, not failure. The two accounts I lost in April rewrote my onboarding for the better.
-
Ship the boring boilerplate once (SoloLaunch) and reuse it forever. Your second product should take days, not months.
-
Build in public before you have numbers worth showing. The audience compounds slower than the revenue.