Skip to content
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>