Ten Projects, Under $100/Month — A Solo Developer's Free-Tier Stack
AI Dev Practice·10 min

Ten Projects, Under $100/Month — A Solo Developer's Free-Tier Stack

Running 10+ client projects simultaneously — how do you keep infrastructure costs near zero? Vercel Hobby + GCP Cloud Run + GitHub Actions: a three-layer free-tier stack with one honest paid component.

Y
Young Tsai

I maintain 10+ active client projects at the same time. A nursing home PDCA system, a medical AI platform, an education content tool, a personal brand site — each one needs deployment, CI/CD, a database, and monitoring.

People ask me: what does that cost per month?

The answer surprises them: excluding databases, roughly $0. Including databases, around $20-30 USD.

This isn't because my projects are toy-sized. Several are live services with real users. It's because I established one principle early and aligned every tool decision to it.


The Principle: Variable Costs, Not Fixed Fees

Monthly subscriptions are the hidden killer for solo developers. $10/month looks small, but ten services is $100, one year is $1,200 — and the meter runs while you sleep.

My strategy: run free tiers until clients are paying you, then let costs scale with revenue.

  • No traffic → pay nothing
  • Some traffic → pay almost nothing
  • High traffic → clients are paying you more, infrastructure cost is a rounding error

This is the variable cost model. Here's how I implement it.


Frontend Hosting: Vercel Hobby (Free)

Every Next.js frontend I run deploys on Vercel's Hobby plan: a nursing home management system, a medical AI platform, a sovereign model education platform, personal site.

What Vercel Hobby gives you:

  • Unlimited project deployments
  • Automatic CI/CD on every push, Preview URL before merge
  • 100 GB/month bandwidth
  • 100 hours/month serverless function execution
  • Custom domains, automatic SSL
  • Completely free

For all my client projects, I've never hit the 100 GB bandwidth limit. You'd need to serve hundreds of thousands of requests per month to get close.

Hobby plan gotchas to know:

  • Commercial use technically requires upgrading to Pro ($20/month/team)
  • Background jobs in serverless functions have a 10-second execution limit (Hobby); Pro gets 60 seconds
  • Over 100 GB bandwidth starts billing

If you're building client work that's expected to grow, plan for the Pro upgrade conversation. For most of my projects at their current scale, Hobby is more than enough.

Actual cost: $0/month.


Backend: GCP Cloud Run (Almost Free)

Cloud Run is one of the most underrated services in the GCP ecosystem. The free tier is generous, and the most important feature: when there's no traffic, it scales to zero and costs nothing.

Cloud Run monthly free tier (permanent, not trial):

  • 2 million requests
  • 360,000 GB-seconds of memory
  • 180,000 vCPU-seconds of compute time
  • 1 GB outbound data transfer from North America

A medical AI platform, an education platform, a Chinese reading platform, a career registration system — all my FastAPI backends run on Cloud Run. On low-traffic months the bill is literally $0.00 or a few cents.

Practical Cloud Run configuration:

# Set minimum instances to 0 (zero cost at idle, cold start tradeoff)
gcloud run deploy my-service \
  --min-instances=0 \
  --max-instances=10 \
  --memory=512Mi \
  --cpu=1

Cold start latency (first request while the container is asleep) runs about 1-3 seconds. For most client projects this is completely acceptable. If latency is critical, set --min-instances=1 but you'll pay for that instance continuously.

Actual cost: $0-2/month depending on traffic.


Database: Cloud SQL (The One Thing That Costs Money)

I'll be straight with you: Cloud SQL is the only component in my stack that can't be free.

Cloud SQL has no free tier. The cheapest configuration looks like:

  • db-f1-micro (shared vCPU, 614 MB RAM)
  • 10 GB SSD storage
  • Taiwan region (asia-east1)

Monthly cost: approximately $7-10 USD.

I currently run two Cloud SQL instances — one each for a medical AI platform and a career registration system — totaling around $15-20/month.

Ways to minimize Cloud SQL costs:

  1. Scheduled shutdown: Development environment instances can auto-stop at night. Stopped instances only charge for storage, not compute
  2. Connection pooling: Cloud SQL Auth Proxy + pgBouncer prevents excess connections from burning memory
  3. Storage autoscale: Cloud SQL autoscales storage by default. Set a cap to avoid surprise bills from runaway growth

If your project doesn't need relational data, Firestore (50,000 reads/day free) or Cloud Storage (5 GB/month free) can carry you surprisingly far.

Actual cost: $15-20/month across two projects.


CI/CD: GitHub Actions (Free Enough)

I use GitHub Actions for CI/CD across 6+ projects: tests, lint, auto-deploy to Vercel and Cloud Run, scheduled sync jobs.

GitHub Actions free tier:

  • Public repos: unlimited minutes (completely free)
  • Private repos: 2,000 minutes/month (personal account)

My client projects are private repos, but 2,000 minutes handles the load easily. A typical CI pipeline (lint + test + build) runs 3-5 minutes. Even at 200 CI runs per month, that's only 1,000 minutes.

Beyond 2,000 minutes, billing starts at approximately $0.008 USD/minute for Linux runners.

Actual cost: $0-2/month depending on CI frequency.


The Real Monthly Bill

Here's my actual estimated monthly spend:

ServiceCost
Vercel Hobby (frontend, all projects)$0
Cloud Run (backend, 4 projects)$0-2
Cloud SQL db-f1-micro × 2~$18
GitHub Actions (CI/CD)$0-1
GitHub (repos, Issues, PRs)$0
Total~$20/month

Ten-plus active projects, roughly $20/month. Almost all of that is the database cost. Projects that don't need SQL have zero infrastructure cost.


The Traps: Things That Look Free But Aren't

Gotchas I've hit or nearly hit:

1. Cloud SQL's always-on billing

Cloud SQL charges for compute as long as an instance is running, even with zero traffic. Unlike Cloud Run, it does not scale to zero. I've seen developers forget about development environment instances and find unexpected charges at month-end. Set a stop schedule.

2. Vercel bandwidth limits

100 GB sounds large, but if your project serves large static assets (video, high-resolution images), you can hit it faster than expected. Once exceeded, billing kicks in. Move media assets to Cloud Storage or a CDN and let Vercel serve only HTML/CSS/JS.

3. GitHub Actions trigger scope

If you set push triggers without limiting to specific branches, every push runs CI and burns minutes faster than expected. Restrict triggers to main and pull requests.

4. Cloud Run egress traffic

Cloud Run's 1 GB free egress applies to North America regions. Traffic from Taiwan (asia-east1) follows different pricing. High-volume API responses can accumulate egress costs.

5. No billing alerts set

GCP has budget alert functionality. Set a $30/month alert. It costs nothing and acts as an early warning system before accidental overages grow large.


GCP Free Trial: The Best Starting Point

If you're setting up a new GCP account right now, do this first: activate the free trial.

GCP currently offers: $300 USD in credit, valid for 90 days.

That $300 lets you:

  • Run Cloud SQL for months without touching your real budget
  • Test Vertex AI, BigQuery, Cloud Run, and other services at full scale
  • Build development and staging environments without cost anxiety

When the 90-day period ends, GCP does not auto-charge you. You need to manually upgrade to a paid account — the rollover is explicit, not automatic. This is a deliberately safe design.

After upgrading, the permanent Free Tier limits (Cloud Run's 2 million requests, etc.) continue indefinitely.

My advice to new users: use the $300 to run every service you're curious about. By the time you convert to a paid account, you'll have real cost data — not guesses.


Who This Stack Is For

This works well for:

  • Freelancers maintaining multiple small-to-medium projects
  • Early-stage SaaS validation where usage is uncertain
  • Technical side projects where fixed monthly costs don't make sense

It's not the right fit for:

  • High-traffic products where cold start latency is unacceptable
  • Enterprise contracts requiring SLA guarantees and 24/7 support
  • Projects with complex database workloads that exceed the cheapest Cloud SQL tier

Closing Thought

I'm skeptical of "use X because it has a free tier" advice, because it usually means recommending the weakest option.

What I'd rather have: the same quality of service, but billed only when I actually use it. Cloud Run performs on par with a full Kubernetes setup — it just invoices against actual traffic. Vercel Hobby has the same deployment experience as Pro — it just has a bandwidth cap.

Ten projects, under $100/month. Not because I'm running on inferior tools. Because the tools I chose only charge for what I actually consume.


Young Tsai — Full-stack AI developer, currently maintaining AI tools across medical, education, and eldercare industries.

infrastructurefree-tiervercelgcpcloud-rungithub-actionssolo-developer