SaaS Side Project to $1k MRR: 6-Month Plan From Real Numbers

SaaS side project to $1k MRR in 6 months: a working founder's actual numbers. 50 at $20/mo beats 5 at $200/mo. Cost math, milestones, TanStack Ship

Huifer
Huifer
May 10, 20268 min read
Also available in:Deutsch

TL;DR. I went from a side project at $0 MRR to $1,400 MRR in 7 months with a TanStack-Start-built Etsy keyword tool. The single decision that mattered: 50 customers at $20/mo beats 5 at $200/mo for a solo founder, because the second group demands sales calls you can't run nights and weekends. This plan is the 6-month version I wish I'd had at month zero, with month-by-month milestones, customer-count math, and the cost numbers attached. Total infra bill at $1k MRR on TanStack Ship: $8/mo. The bottleneck is demand, not infra.

Written by Huifer

I'm Huifer. I run three small SaaS products. The first one, an Etsy keyword tool, crossed $1k MRR at month 7 and sat at $1,400 MRR by month 9 before I started the second one. This article is the 6-month version of that plan, with the actual numbers attached and the things I would have skipped if I had this in front of me at month zero. I am not a 7-figure founder. I am a working solo founder with a day job, and this is what $1k MRR actually looks like when you have 5–8 hours a week to put in.

Last updated: 2026-05-10. Changelog at the bottom of the page.

What $1k MRR actually feels like

Before the plan, the goal itself. $1k MRR means different things to different founders; pick the version you can actually defend at dinner.

  • 50 customers at $20/mo. This is the SaaS side project shape. Self-serve onboarding, Stripe Checkout, no sales calls, churn under 8% monthly.
  • 5 customers at $200/mo. This is consulting in a SaaS wrapper. You will run five demos a month. You will renew two of them personally. The fifth customer will churn every January.
  • 2 customers at $500/mo. This is a services business pretending to be SaaS. One churn event kills the entire month.

For a nights-and-weekends founder, the math is brutal and clear: 50 customers at $20/mo is the only shape that scales without your phone. IndieHackers revenue data confirms this — the median profitable side project has 30–80 paying customers at $15–$30/mo, not 3 whales at $500. The Stripe Atlas pricing guide walks through the corporate-setup cost of treating the side project as a real business, which is a one-time ~$500 hit you should budget before month 3.

Month 1–2: Pick one niche, kill the rest

The first mistake solo founders make is running two side projects in parallel. You will have one product at month 6, not two. Pick the one whose customer you can reach in under 30 minutes.

The "stop researching" rule

Research has a brutal half-life. After 4 weeks of keyword research, competitor teardowns, and "validation interviews," you have less useful information than you did at week 2 — because you've forgotten what the customer actually said. Pick the niche whose demand you can confirm with one tool and one number:

  • Open Ahrefs' free keyword tool, type the head term you have in mind.
  • If monthly volume is above 1,000 and keyword difficulty is below 50, you have a market.
  • If you can name five people who'd pay tomorrow, you have a starting cohort.

That's it. Spend a week, not a quarter. SparkToro audience overlap is helpful for confirming the buyer exists beyond Google, but don't let it become a substitute for shipping.

Month 2–3: Ship the smallest thing that bills

Two months. That's your v1 budget. The smallest thing that bills is not the smallest thing you can build — it's the smallest thing a stranger will pay for without a demo. The difference matters.

What "smallest that bills" actually means

Three pages and a Stripe button:

  • Landing page with one screenshot and one price.
  • Sign-up page that creates a Stripe customer.
  • The actual feature — usually a single page that does the one job.

For my Etsy keyword tool, the v1 was: paste an Etsy listing URL, get back 20 keyword suggestions. That's it. No accounts in v1. No saved searches. No exports. One page, one button, one result.

TanStack Start project init

bash
# Start from the TanStack Ship boilerplate
git clone https://github.com/tanstack/ship.git etsy-keyword-tool
cd etsy-keyword-tool
pnpm install
pnpm run dev

That gets you to a running app in under 5 minutes. The TanStack Start docs cover the file-based routing; the Cloudflare Workers pricing page confirms your first 100k requests/day are free, which is roughly 6 months of runway at side-project scale.

Stripe subscription route

ts
// src/routes/api/checkout.ts
import { createServerFileRoute } from "@tanstack/start/server";
import Stripe from "stripe";

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
  apiVersion: "2025-04-30.basil",
});

export const ServerRoute = createServerFileRoute("/api/checkout").methods({
  POST: async ({ request }) => {
    const { priceId } = await request.json();
    const session = await stripe.checkout.sessions.create({
      mode: "subscription",
      line_items: [{ price: priceId, quantity: 1 }],
      success_url: `${process.env.PUBLIC_URL}/dashboard?session_id={CHECKOUT_SESSION_ID}`,
      cancel_url: `${process.env.PUBLIC_URL}/`,
    });
    return Response.json({ url: session.url });
  },
});

The webhook handler from the niche-research article covers the customer-creation side. Together, this is the entire billing surface for a $1k MRR side project.

Month 3–5: Find 50 customers, not 5,000

This is where most side projects die. You have a working product. You have 3 paying customers from your Twitter followers. You now need 47 more, and the only people reading your tweets are the same 3 people.

Distribution > product

After month 3, your time is better spent on distribution than on features. A working product at $1k MRR has the same revenue as a perfect product at $1k MRR. The only difference is the second one took you 6 more months and you burned out.

Three distribution channels that worked for me, ranked by ROI:

  1. Reddit. A single well-placed post in r/EtsySellers drove 22 paying customers. The post was honest: "I built this because I needed it; here's the free version, here's the paid version." No astroturfing, no fake reviews.
  2. Product Hunt launch. One launch day, ~$1,400 MRR jump from the boost, decaying to +$200 sustained. Product Hunt Ship trends matter more for Tier 1 niches; side projects get more lift from a sustained #4-of-the-day ranking than a #1 spike.
  3. SEO on the head term. Slow but compounding. Six months in, organic search drives ~40% of trial sign-ups. Ahrefs' keyword difficulty data is honest that anything above KD 30 takes 6+ months to rank for solo.

Customer count math at every milestone

MRR targetAt $20/moAt $50/moAt $100/mo
$500 MRR25 customers10 customers5 customers
$1,000 MRR50 customers20 customers10 customers
$2,000 MRR100 customers40 customers20 customers

Pick your row before you pick your price. If you can't honestly picture finding 100 paying customers, you should be at $50/mo, not $20/mo. But if you can't picture finding 10, you should be at $20/mo, not $200/mo. The 5-at-$200 shape is the one that kills side projects — every renewal is a sales call you'll skip.

Month 6: Compound or quit honestly

By month 6 you have a number. Either it's growing, flat, or declining. Each path has a decision.

The three honest end states

  • Growing 10%+ MoM. Keep going. Don't ship features. Don't raise prices. Don't pivot. Just keep doing the distribution work. You have a product.
  • Flat at $300–$800 MRR. You're in the IndieHackers "lifestyle SaaS" trap — too much revenue to quit, too little to compound. The honest move is to spend 90 more days on distribution before quitting, because most side projects hit their inflection point at month 9–12.
  • Declining. Quit. Don't feel bad. The data is the data. Take the lessons, archive the code, and start the next one. Three failed side projects in a row are still better than one zombie.

Cost math: TanStack Ship vs the alternatives

ts
// src/lib/cost.ts
// At $1,000 MRR / 50 customers / ~1k MAU
export const monthlyCost = {
  workers: 0,           // first 100k requests/day free
  d1: 0,                // first 5 GB stored, 5M reads/day free
  r2: 0,                // first 10 GB stored free
  stripe: 32,           // 2.9% + 30¢ on $1,000
  resend: 0,            // first 3k emails/mo free
  domain: 1,            // ~$12/yr amortized
  total: 33,            // USD/month at $1k MRR
};

// Same product on Next.js + Vercel + Neon Postgres:
export const altCost = {
  vercel: 20,           // Pro plan
  neon: 19,             // Launch plan at 1k MAU
  auth0: 23,            // Essentials plan
  uptime: 0,            // free tier
  stripe: 32,
  resend: 0,
  domain: 1,
  total: 95,
};

// At $1k MRR, TanStack Ship saves ~$62/mo vs the equivalent stack.
// Over 12 months, that's $744 — enough for another side project's infra for a year.

The savings scale roughly linearly until you cross ~$10k MRR, at which point both stacks start paying real money. For side projects in the $1k–$5k MRR band, TanStack Ship's pricing tier is built for this loop.

The honest failure modes

Before any CTA, the three failure modes that took out everyone I've watched try this:

  1. Single-customer dependency. If one customer is more than 20% of MRR, you don't have a product — you have a client. The second they leave, your side project dies. Diversify before you grow.
  2. Distribution stall. The most common failure mode. Product is good, no one knows it exists, founder is "waiting for SEO to kick in." SEO takes 6+ months. Reddit and Product Hunt take 1 day. Run both.
  3. Founder burnout. Side projects at $1k MRR earn less than the day job per hour. Most founders quit at month 4 not because the product failed but because they did. Pick a niche you actually like working in; the money alone isn't enough at this scale.

For all three failure modes, the answer is the same: lower the build cost, ship faster, get to 5 paying customers in week one, and decide whether the niche compounds from there. TanStack Ship's boilerplate is built for exactly this loop — pay nothing until you have something to deploy, then $8/mo forever.

FAQ

Do I really need to give up my other side project ideas? Yes. One side project, six months, is the only shape that works. Three side projects at two months each is just three Notion docs.

What if I have a day job and only 5 hours a week? This plan was written for 5–8 hours/week. The bottleneck isn't time, it's consistency. Most failed side projects died in week 3 of month 2.

Is $1k MRR actually meaningful income? At 5–8 hrs/week, it's $25–$40/hr effective — better than a part-time job, less than consulting. The real value is the option value of the second product.

Why TanStack Ship instead of Next.js? For side projects under $10k MRR, the cost savings are real and the deployment story is faster. Above $10k MRR the calculus changes; at that point compare the two stacks honestly.

What if I hit $1k MRR and then it stalls? That's Tier 3 in the niche ranking framework — see the niche-research article. The honest move is 90 more days of distribution, then a quit decision based on data.


Changelog

  • 2026-05-10: Initial 6-month plan with month-by-month milestones, customer-count math, and cost spreadsheet.

Sources & further reading

  1. Stripe Atlas — Lean SaaS Formation Guide
  2. IndieHackers — Public revenue posts
  3. TanStack Start documentation
  4. Cloudflare Workers pricing
  5. Ahrefs — Keyword Difficulty Explained
  6. SparkToro — Audience research tool
  7. Product Hunt Ship
  8. Ahrefs — Free keyword generator