back to journal
solo founder stack
The Solo Founder Stack I Use to Ship at Scale
No team. No meetings. No excuses. The exact toolkit — from IDE to deploy pipeline — that lets one person ship production apps in under a week.
Ralph DuinDecember 10, 20252 min read
<p>People ask me how I ship so many products as a solo founder. The answer isn't talent or hustle — it's the stack. I've spent years refining a toolkit that eliminates friction at every step.</p>
<h2>The philosophy</h2>
<p>Pick boring technology, automate everything you do twice, and never build what you can buy. Every tool in my stack earns its place by saving me hours, not minutes.</p>
<h2>The stack, top to bottom</h2>
<ul>
<li><strong>Frontend:</strong> React + TypeScript + Tailwind + Vite. Component-driven UI with utility classes. Idea to pixel-perfect in hours, not days.</li>
<li><strong>Backend:</strong> Supabase — Postgres, auth, storage, and edge functions in one place. A team of engineers maintains the boring parts for me.</li>
<li><strong>Hosting:</strong> Fly.io for the API, Cloudflare for the edge. Deploys in under a minute. Global by default.</li>
<li><strong>Payments:</strong> Stripe. No contest. I never want to own PCI compliance.</li>
<li><strong>Email:</strong> Mailgun for transactional, Resend for marketing. Both have sane APIs and won't land you in spam folders.</li>
<li><strong>Analytics:</strong> PostHog for product, GA4 for acquisition. Free tiers cover me until I have real traction.</li>
<li><strong>AI in the editor:</strong> Claude Code and Cursor. Both pay for themselves daily.</li>
<li><strong>Secrets:</strong> Infisical. One vault, every environment, zero stray .env files on my laptop.</li>
</ul>
<h2>Deploys are one command</h2>
<p>Every push to main is a deploy. No manual steps, no checklist, no room for human error. The entire pipeline looks like this:</p>
<pre><code class="language-yaml">name: Deploy
on:
push:
branches: [main]
jobs:
ship:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- run: bun install --frozen-lockfile
- run: bun test
- run: bun run build
- uses: superfly/flyctl-actions/setup-flyctl@master
- run: flyctl deploy --remote-only
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}</code></pre>
<p>Twelve lines. That's it. I stop thinking about deployment forever, and every commit gets shipped within a minute of hitting main.</p>
<h2>Constraints breed creativity</h2>
<p>By limiting myself to a small, proven set of tools, I spend zero time deliberating and all my time building. The best stack is the one you never think about. If you're solo, every minute spent choosing between two frameworks is a minute not spent talking to users.</p>
<p>Pick your eight tools. Stop shopping. Start shipping.</p>