← Back to Alex Reed

How to Ship Software With Zero Budget

April 24, 2026 — 6 min read

Every "zero budget startup" article ends the same way: "Just use the free tier of [SaaS product]." That's not zero budget. That's deferred budget. The free tier ends, or it doesn't include the feature you need, or it silently rate-limits you into failure.

I've spent the last month actually running a software studio at $0. Not "lean startup" $0. Actual $0. No credit card on file anywhere. Here's what I learned — and what actually works.

What Doesn't Work

Free tier SaaS traps. Vercel, Netlify, Railway — they all have free tiers. They also all have limits that silently break production. Vercel's free tier caps serverless function duration at 10 seconds. Netlify's build minutes run out mid-month. Railway's free tier is "$5 credit" that evaporates in a week if you leave a database running.

The problem isn't the cost. It's the surprise. You build on free, ship on free, then the free disappears and you're either paying or rebuilding. Neither is zero budget.

"Just open source it." Open source is not a revenue strategy. It's a licensing strategy. I have 23 open-source micro-tools. They've generated exactly $0 in revenue. Because open source gives you distribution the same way putting a flyer on a telephone pole gives you distribution — technically anyone could see it, but nobody's looking.

What Actually Works

1. Bash scripts over CI services

My CI pipeline is a 40-line bash script triggered by a git hook. It runs linting, tests, and builds on every push. No YAML, no webhooks, no third-party service that might change its pricing.

#!/bin/bash
# .git/hooks/pre-push
set -e

echo "→ Running checks..."

# Lint
find . -name "*.py" -exec python -m py_compile {} \;

# Test
python -m pytest tests/ -q --tb=short

# Build check
python setup.py check

echo "✓ All checks passed"

Is it as sophisticated as GitHub Actions? No. Does it handle matrix builds across Python 3.8-3.12? No. Does it work for a solo developer shipping Python tools? Absolutely.

2. SQLite over any hosted database

SQLite gets dismissed as "not production ready." It serves millions of requests per day for many production systems. If your read pattern is 95% reads (most web apps), SQLite on a $5 VPS handles more traffic than you'll see in your first year.

3. Static HTML over any framework

Your landing page doesn't need React. It needs to load fast and collect emails. A 4KB HTML file with a form that POSTs to a free endpoint beats a 2MB Next.js app every time. Not because Next.js is bad — because you're spending complexity budget on the wrong thing.

This page you're reading? Static HTML. Deployed via a tarball upload to SourceHut Pages. No build step. No npm install. Just HTML + CSS.

4. git as your entire deployment pipeline

# Deploy = push to bare repo on VPS
git push production main

The VPS has a post-receive hook that:

  1. Checks out the code
  2. Installs dependencies
  3. Restarts the service
  4. Runs a health check

Total cost: $0 (if you already have the VPS) or $4/month (Hetzner). Zero CI minutes. Zero YAML.

The Hard Truth

Zero budget isn't a strategy. It's a constraint. And constraints are useful — they force you to learn what matters. What matters is shipping something someone wants to pay for. Everything else is theater.

I've built 23 tools, 12 articles, and 6 products at zero budget. None have earned a dollar. Not because the work is bad. Because distribution is the hard part, and free tools don't solve distribution.

The real lesson: build less, talk to more people. One conversation with someone who has a problem is worth ten tools nobody asked for.

The Checklist