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 Duin · 2 min read
XLI
The Solo Founder Stack I Use to Ship at Scale

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.

The philosophy

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.

The stack, top to bottom

  • Frontend: React + TypeScript + Tailwind + Vite. Component-driven UI with utility classes. Idea to pixel-perfect in hours, not days.
  • Backend: Supabase — Postgres, auth, storage, and edge functions in one place. A team of engineers maintains the boring parts for me.
  • Hosting: Fly.io for the API, Cloudflare for the edge. Deploys in under a minute. Global by default.
  • Payments: Stripe. No contest. I never want to own PCI compliance.
  • Email: Mailgun for transactional, Resend for marketing. Both have sane APIs and won't land you in spam folders.
  • Analytics: PostHog for product, GA4 for acquisition. Free tiers cover me until I have real traction.
  • AI in the editor: Claude Code and Cursor. Both pay for themselves daily.
  • Secrets: Infisical. One vault, every environment, zero stray .env files on my laptop.

Deploys are one command

Every push to main is a deploy. No manual steps, no checklist, no room for human error. The entire pipeline looks like this:

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 }}

Twelve lines. That's it. I stop thinking about deployment forever, and every commit gets shipped within a minute of hitting main.

Constraints breed creativity

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.

Pick your eight tools. Stop shopping. Start shipping.

▢ end of post
XLinkedIn