Here’s my current opinionated stack for a modern SaaS in 2025—mixing hosted products and OSS libs that feel “bleeding edge but safe.”
[!tip] Adoption principle
Start hosted, keep exits clear. Switch to OSS when cost/latency/lock‑in is proven by traces and traffic.
Core app platform
- web/app: Next.js 15 + React 19 (RSC on by default)
- hosting: Vercel for frontends and simple Node runtimes; Railway for long‑running services
- background jobs & schedules: Inngest (simple, reliable), alternative: Temporal (complex, powerful)
- queues: Upstash Redis (serverless), alternative: Cloudflare Queues
Auth, users, billing
- auth + orgs + subscriptions: Clerk (fastest to ship)
- alt/OSS: Auth.js + Lucia + Stripe Billing if you must self‑host
- payments: Stripe (no contest for SaaS in 2025)
Data layer
- OLTP: Postgres (Neon or Supabase); Prisma client
- cache/kv: Upstash Redis; edge KV where needed (Cloudflare KV)
- object store: Cloudflare R2 or S3 compatible
- warehouse/OLAP: ClickHouse Cloud; alt: BigQuery
Product analytics, flags, experimentation
- product analytics + feature gates: Statsig (strong default)
- OSS alternative: PostHog + GrowthBook
Observability & reliability
- errors: Sentry
- logging: Better Stack or Axiom
- traces/metrics: OpenTelemetry everywhere; vendor: Grafana Cloud or Honeycomb
- incidents & runbooks: Rootly
Content & docs
- marketing/docs: Mintlify for docs, MDX for product surfaces
- CMS alt: Contentlayer or Sanity if you need authorship workflows
Communication
- email: Resend + react‑email
- support: Plain (shared inbox that doesn’t fight you)
Search
- hosted: Algolia (still excellent for relevance tooling)
- OSS: Meilisearch for speed and control
AI/LLM building blocks
- model router: OpenRouter (breadth, price); keep OpenAI/Anthropic direct as fallbacks
- SDK: Vercel AI SDK (streaming, RSC‑friendly)
- extraction & crawling: Firecrawl
- tracing/evals: Langfuse; offline evals with Braintrust or Phoenix
- embeddings & RAG: pgvector on Postgres for simplicity; ClickHouse + hybrid search when scale demands
Security & secrets
- secret management: Doppler
- runtime hardening: per‑request authZ, signed requests, audit logs; do not put permissions in prompts
Developer experience
- code: Cursor as the primary IDE; GitHub + Actions for CI
- UI: Tailwind CSS + shadcn/ui primitives
Quick links
- Vercel • Railway • Upstash • Neon • Supabase • Stripe • Clerk
- Statsig • PostHog • GrowthBook • Sentry • Better Stack • Grafana
- Mintlify • Resend • Plain • Algolia • Meilisearch
- OpenRouter • OpenAI • Anthropic • Vercel AI SDK • Firecrawl • Langfuse
[!warning] When to avoid the “cool” choice
Don’t adopt a new vector DB, router, or agent framework unless a concrete bottleneck exists. Your latency and cost graphs should make the case first.