sickn33/antigravity-awesome-skills/saas-mvp-launcher

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Use when planning or building a SaaS MVP from scratch. Provides a structured roadmap covering tech stack, architecture, auth, payments, and launch checklist.

Install

npx vskill@latest install sickn33/antigravity-awesome-skills/saas-mvp-launcher

SKILL.md

SaaS MVP Launcher

Overview

This skill guides you through building a production-ready SaaS MVP in the shortest time possible. It covers everything from idea validation and tech stack selection to authentication, payments, database design, deployment, and launch — using modern, battle-tested tools.

When to Use This Skill

  • Use when starting a new SaaS product from scratch
  • Use when you need to choose a tech stack for a web application
  • Use when setting up authentication, billing, or database for a SaaS
  • Use when you want a structured launch checklist before going live
  • Use when designing the architecture of a multi-tenant application
  • Use when doing a technical review of an existing early-stage SaaS

Step-by-Step Guide

1. Validate Before You Build

Before writing any code, validate the idea:

Validation checklist:
- [ ] Can you describe the problem in one sentence?
- [ ] Who is the exact customer? (not "everyone")
- [ ] What do they pay for today to solve this?
- [ ] Have you talked to 5+ potential customers?
- [ ] Will they pay $X/month for your solution?

Rule: If you can't get 3 people to pre-pay or sign a letter of intent, don't build yet.

2. Choose Your Tech Stack

Recommended modern SaaS stack (2026):

LayerChoiceWhy
FrontendNext.js 15 + TypeScriptFull-stack, great DX, Vercel deploy
StylingTailwind CSS + shadcn/uiFast, accessible, customizable
BackendNext.js API Routes or tRPCType-safe, co-located
DatabasePostgreSQL via SupabaseReliable, scalable, free tier
ORMPrisma or DrizzleType-safe queries, migrations
AuthClerk or NextAuth.jsSocial login, session management
PaymentsStripeIndustry standard, great docs
EmailResend + React EmailModern, developer-friendly
DeploymentVercel (frontend) + Railway (backend)Zero-config, fast CI/CD
MonitoringSentry + PostHogError tracking + analytics
3. Project Structure
my-saas/
├── app/ # Next.js App Router
│ ├── (auth)/ # Auth routes (login, signup)
│ ├── (dashboard)/ # Protected app routes
│ ├── (marketing)/ # Public landing pages
│ └── api/ # API routes
├── components/
│ ├── ui/ # shadcn/ui components
│ └── [feature]/ # Feature-specific components
├── lib/
│ ├── db.ts # Database client (Prisma/Drizzle)
│ ├── stripe.ts # Stripe client
│ └── email.ts # Email client (Resend)
├── prisma/
│ └── schema.prisma # Database schema
├── .env.local # Environment variables
└── middleware.ts # Auth middleware
4. Core Database Schema (Multi-tenant SaaS)
prisma
model User {
id String @id @default(cuid())
email String @unique
name String?
createdAt DateTime @default(now())
subscription Subscription?
workspaces WorkspaceMember[]
}
model Workspace {
id String @id @default(cuid())
name String
slug String @unique
plan Plan @default(FREE)
members WorkspaceMember[]
createdAt DateTime @default(now())
}
model Subscription {
id String @id @default(cuid())
userId String @unique
user User @relation(fields: [userId], references: [id])
stripeCustomerId String @unique
stripePriceId String
stripeSubId String @unique
status String // active, canceled, past_due
currentPeriodEnd DateTime
}
model WorkspaceMember {
userId String
workspaceId String
user User @relation(fields: [userId], references: [id])
workspace Workspace @relation(fields: [workspaceId], references: [id])
@@id([userId, workspaceId])
}
enum Plan {
FREE
PRO
ENTERPRISE
}
5. Authentication Setup (Clerk)
typescript
// middleware.ts
import { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs/server';
const isPublicRoute = createRouteMatcher([
'/',
'/pricing',
'/blog(.*)',
'/sign-in(.*)',
'/sign-up(.*)',
'/api/webhooks(.*)',
]);
export default clerkMiddleware(async (auth, req) => {
if (!isPublicRoute(req)) {
await auth.protect();
}
});
export const config = {
matcher: ['/((?!.*\\..*|_next).*)', '/', '/(api|trpc)(.*)'],
};
6. Stripe Integration (Subscriptions)
typescript
// lib/stripe.ts
import Stripe from 'stripe';
export const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
apiVersion: '2025-01-27.acacia',
});
// Create checkout session
export async function createCheckoutSession(userId: string, priceId: string) {
return stripe.checkout.sessions.create({
mode: 'subscription',
payment_method_types: ['card'],
line_items: [{ price: priceId, quantity: 1 }],
success_url: `${process.env.NEXT_PUBLIC_URL}/dashboard?success=true`,
cancel_url: `${process.env.NEXT_PUBLIC_URL}/pricing`,
metadata: { userId },
});
}
7. Pre-Launch Checklist

Technical:

  • [ ] Authentication works (signup, login, logout, password reset)
  • [ ] Payments work end-to-end (subscribe, cancel, upgrade)
  • [ ] Error monitoring configured (Sentry)
  • [ ] Environment variables documented
  • [ ] Database backups configured
  • [ ] Rate limiting on API routes
  • [ ] Input validation with Zod on all forms
  • [ ] HTTPS enforced, security headers set

Product:

  • [ ] Landing page with clear value proposition
  • [ ] Pricing page with 2-3 tiers
  • [ ] Onboarding flow (first value in < 5 minutes)
  • [ ] Email sequences (welcome, trial ending, payment failed)
  • [ ] Terms of Service and Privacy Policy pages
  • [ ] Support channel (email / chat)

Marketing:

  • [ ] Domain purchased and configured
  • [ ] SEO meta tags on all pages
  • [ ] Google Analytics or PostHog installed
  • [ ] Social media accounts created
  • [ ] Product Hunt draft ready

Best Practices

  • ✅ Do: Ship a working MVP in 4-6 weeks maximum, then iterate based on feedback
  • ✅ Do: Charge from day 1 — free users don't validate product-market fit
  • ✅ Do: Build the "happy path" first, handle edge cases later
  • ✅ Do: Use feature flags for gradual rollouts (e.g., Vercel Edge Config)
  • ✅ Do: Monitor user behavior from launch day — not after problems arise
  • ❌ Don't: Build every feature before talking to customers
  • ❌ Don't: Optimize for scale before reaching $10k MRR
  • ❌ Don't: Build a custom auth system — use Clerk, Auth.js, or Supabase Auth
  • ❌ Don't: Skip the onboarding flow — it's where most SaaS lose users

Troubleshooting

Problem: Users sign up but don't activate (don't use core feature) Solution: Reduce steps to first value. Track with PostHog where users drop off in onboarding.

Problem: High churn after trial Solution: Add an exit survey. Most churn is due to lack of perceived value, not price.

Problem: Stripe webhook events not received locally Solution: Use Stripe CLI: stripe listen --forward-to localhost:3000/api/webhooks/stripe

Problem: Database migrations failing in production Solution: Always run prisma migrate deploy (not prisma migrate dev) in production environments.

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.

These samples are starting points, not a production security implementation. Derive userId/workspace membership from the authenticated server session, validate price IDs against a server-owned allowlist, and use test-mode Stripe keys. Grant entitlements only from verified signed, idempotently handled webhook events, never the success URL. Tenant membership/schema alone does not enforce tenant authorization. Preserve critical failure, payment and recovery paths before launch; time/revenue/prepayment thresholds above are planning heuristics rather than universal go/no-go rules. Pin compatible SDK/API versions and verify the deployed Clerk integration.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
24,264
Repository forks
4,175
Repository npm downloads, 7 days
11,772
7-day trend score
72

Stars and forks are for the whole GitHub repository, not this skill alone. Downloads are for the repository's npm package. Refreshed 18 Mar 2026, 7 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/sickn33/antigravity-awesome-skills/saas-mvp-launcher/badge)](https://verified-skill.com/skills/sickn33/antigravity-awesome-skills/saas-mvp-launcher)

Something wrong with this skill or its page? Tell us.