Build a Startup Cheatsheet

Choosing Your Stack

Use this Build a Startup reference while you build software engineering projects, review code for technical interview prep, or polish examples for a software engineer resume.

Why Stack Choice Matters (and When It Does Not)

For an MVP, almost any reasonable stack will work. The main risk is choosing something so niche that you cannot hire for it, or something so complex that a solo developer cannot maintain it. The secondary risk is over-engineering — picking a distributed system when a single server would have been fine for years. If you are teaching yourself computer science, choose boring tools that reinforce fundamentals: HTTP, SQL, data modeling, testing, deployment, and debugging.

Choose your stack based on: what you know, what the team knows, and what the community supports. Performance and scale considerations come later.

The Default Stack for Most Startups

For the majority of web-based startups, this combination works:

LayerChoiceWhy
FrontendNext.js + Tailwind CSSSSR, routing, API routes all in one; huge ecosystem
AuthClerk or Supabase AuthZero auth code to write; handles sessions, OAuth
DatabaseSupabase (Postgres)Managed Postgres + storage + edge functions in one service
HostingVercel (frontend) + Supabase (backend)Both have free tiers; one-command deploy
PaymentsStripeIndustry standard; best docs; free until you earn
EmailResendModern API, generous free tier, React Email templates
AIOpenAI APILargest model selection; best ecosystem

This is not the only stack. It is the one that gets a solo founder from idea to paid users fastest.

Choosing a Language

The language choice has less impact than most developers think, but here is a practical breakdown:

LanguageBest forCommunity size
JavaScript / TypeScriptFull-stack web, APIs, serverlessLargest; most libraries
PythonAI/ML-heavy backends, data pipelines, scriptingDominant for AI; large web ecosystem (FastAPI, Django)
GoHigh-throughput APIs, CLIs, infrastructure toolsGrowing; great performance
RustSystems, CLI tools, WASM, performance-critical codeGrowing; steep learning curve
Java / KotlinEnterprise, AndroidLarge but slower iteration cycle

Recommendation: TypeScript for the frontend and most backends. Python if AI/ML is the core product. Do not mix languages in an MVP — it multiplies complexity.

The Build-vs-Buy Decision Framework

Before building any feature yourself, ask:

  1. Is this core to your competitive advantage?
  2. Will customers pay specifically because of this feature?
  3. Can an off-the-shelf tool do 80% of what you need?

If the answer to 3 is yes, buy. Build only what differentiates your product.

FeatureBuy (use a service)Build (only if essential)
AuthClerk, Supabase Auth, Auth0Custom OAuth only if very specialized
PaymentsStripeNever
Email deliveryResend, SendGridNever
SearchAlgolia, Typesense, pgvectorIf search is your core product
File storageS3, Cloudflare R2, Supabase StorageNever for MVP
AnalyticsPostHog, MixpanelOnly if you are building an analytics product

Monolith vs. Microservices

Start with a monolith. Always.

A monolith is a single codebase that handles all features. Microservices split features into independent services that communicate over the network.

  • Microservices solve problems of scale and team coordination — problems you do not have at zero to 10,000 users
  • A Next.js app with API routes is already a monolith; a separate Express server is still a monolith
  • Companies like Shopify and Stack Overflow ran monoliths for years at massive scale
  • Splitting too early creates deployment complexity, network latency, and distributed tracing headaches

Split a service out when: a specific part of the system has dramatically different scaling needs (e.g., a video transcoder), or when different teams need independent deployment.

Serverless vs. Always-On Servers

Serverless (Vercel Functions, Cloudflare Workers)Always-on (Railway, Render, EC2)
Cold startsYes (50ms–1s on first request)No
Cost at low trafficEffectively free~$5–$20/month
Cost at high trafficCan be expensivePredictable
Long-running jobsNot suitable (15s limit on Vercel)Works fine
WebSocketsNot supported on most platformsWorks fine
Setup overheadNear zeroMinimal

Recommendation: Use serverless (Vercel) for your frontend and API routes unless you need WebSockets, long-running processes, or background workers. Add a Railway or Render server when those needs arise.

TypeScript vs. Plain JavaScript

Use TypeScript from day one. The cost is minimal (a tsconfig.json and type annotations); the payoff is catching bugs at compile time rather than in production. Every major framework supports it, and type-safe database clients (like Drizzle ORM or Prisma) make your data layer far less error-prone.

When to Deviate from the Default Stack

  • Mobile-first product — add React Native (Expo) or swap to Flutter
  • Heavy real-time (multiplayer, collaborative editing, live dashboards) — add a dedicated WebSocket server or use Liveblocks/PartyKit
  • AI/ML core — add a Python FastAPI sidecar for model inference; do not put ML code in a Node.js route
  • High-performance API — Go or Rust instead of Node for specific endpoints, only when you have measured the bottleneck
  • Enterprise customers — they may require self-hosted deployments; factor that into your infrastructure design early

Practical Stack Combinations

Lean SaaS (solo founder, weeks to launch) - Next.js + Supabase + Vercel + Stripe + Resend

AI-first product - Next.js (frontend) + FastAPI (Python backend for AI) + Supabase + Vercel + Railway + OpenAI

Marketplace - Next.js + Supabase + Stripe Connect + Vercel + Resend

Developer tool / API product - Go or Node.js API + Postgres (Railway or Neon) + Stripe + Resend + Cloudflare for CDN/DNS

Consumer mobile app - Expo (React Native) + Supabase + Stripe (via RevenueCat) + OneSignal for push