Skip to content

Stacks — default services & libraries for digital products

Seeds with generous free tiers, not a closed menu — every choice accepts "other" (the user names it, you research and wire it). Per service: connect-or-create (BOOTSTRAP §12), access via mcp_config/custom-env, destructive/outward actions still gated by the owner. Offer only what the interview's needs actually name.

Services by need

Version control

  • Default: GitHub
  • What you'd use it for: repo = company monorepo; PRs are the conveyor's merge gate; webhooks feed autopilots
  • Free tier:

Backend / DB

  • Default: Supabase
  • What you'd use it for: Postgres + auth + storage + realtime + edge functions in one; RLS for permissions; good MCP
  • Free tier:

All-in-one client DB

  • Default: InstantDB
  • What you'd use it for: Firebase-alternative: realtime relational DB + auth + presence + storage; CLI-first, built for AI agents to drive without dashboards; offline-first multiplayer UIs
  • Free tier:

Offline-first sync

  • Default: PowerSync
  • What you'd use it for: syncs Postgres/MongoDB/MySQL/SQL Server into in-app SQLite; kills hand-rolled state-over-API plumbing; web, RN/Expo, Flutter, Swift, Kotlin
  • Free tier:

Deploy / hosting

  • Default: Vercel
  • What you'd use it for: web apps & sites, preview deploys per PR (Design QA loves them), edge functions, cron
  • Free tier:

Domains

  • Default: Namecheap
  • What you'd use it for: buy domains cheap; DNS can stay here or move
  • Free tier:

DNS

  • Default: Vercel DNS or Cloudflare
  • What you'd use it for: if the site lives on Vercel, its DNS is simplest (per-subdomain, zero config); Cloudflare when you want a proxy/WAF/workers in front or many non-Vercel services
  • Free tier:

Payments

  • Default: Stripe
  • What you'd use it for: cards/subscriptions/invoices, full control (needs your own tax handling); for solo digital products a Merchant-of-Record (e.g. Lemon Squeezy/Paddle) may fit better — MoR handles VAT
  • Free tier:

Auth + billing

  • Default: Clerk
  • What you'd use it for: drop-in auth UI (social, MFA, orgs) + subscription billing glued to it; fastest path for SaaS
  • Free tier:

Email

  • Default: Resend
  • What you'd use it for: transactional + marketing sends from code; React Email templates
  • Free tier:

Analytics

  • Default: PostHog
  • What you'd use it for: product events, funnels, session replay, feature flags, A/B; pairs with the Analyst role's whitelist
  • Free tier:

Error tracking

  • Default: Sentry
  • What you'd use it for: crash/error reports with releases + sourcemaps; wire alerts to an autopilot triage sweep
  • Free tier:

Cache / queues

  • Default: Upstash
  • What you'd use it for: serverless Redis + QStash (queues/cron over HTTP); rate limits, sessions, job fan-out
  • Free tier:

Vectors / memory / recall** (for the product)

  • Default: pgvector (Supabase) for small; Pinecone for scale; mem0 / Supermemory (managed agent memory) or Memori (SQL-native) for per-user recall; Memgraph when relationships dominate
  • What you'd use it for: RAG, semantic search, long-term/per-user memory, a knowledge graph — only if the app you're building needs it. Pick by shape: vector = similarity, graph = relationships
  • Free tier: mixed

AI gateway

  • Default: OpenRouter
  • What you'd use it for: one API to 400+ models / 70+ providers, OpenAI-SDK-compatible; fallbacks when a provider is down; per-model data policies; credit-based
  • Free tier:

Decision rules the assistant applies:

  • Fewest services that cover the need — Supabase already gives auth/storage/ pgvector; add Clerk/Pinecone only when its specific strength is needed.
  • MoR vs Stripe: selling globally as a solo/indie → MoR handles sales tax; platform features/marketplaces → Stripe.
  • DNS: site on Vercel → Vercel DNS; otherwise Cloudflare.
  • Product memory ≠ team memory. The memory row above is for the product you build. The agent team's own memory is the repo + issues (git-versioned, the source of truth) — never add a memory store as a second source. If a very large history ever needs semantic recall, add a vector index as a derived index rebuilt from the repo/issues, never something agents write to independently.
  • Anything here can be swapped by naming an alternative — research, compare, wire.

Default libraries — AI-fluent stacks

LLMs write best in what they've seen most; picking mainstream stacks measurably cuts hallucinated APIs and review churn. Defaults (override any via interview):

Web app / site

  • Default stack: TypeScript + React + Next.js + Tailwind + shadcn/ui (Radix under the hood)
  • Why: deepest LLM training coverage; shadcn is copy-in code agents can edit directly

Mobile

  • Default stack: React Native + Expo (cross-platform) · SwiftUI (iOS-native) · Jetpack Compose (Android-native)
  • Why: Expo for one codebase; native pairs when the product demands platform depth

Desktop

  • Default stack: Tauri (light, Rust shell + web UI) · Electron (max ecosystem) · SwiftUI/AppKit (macOS-native)
  • Why: pick by footprint vs ecosystem vs nativeness

API / backend

  • Default stack: TypeScript (Next.js API/Hono/Fastify) or Python (FastAPI)
  • Why: both are LLM home turf; match the team's main language

CLI / tooling

  • Default stack: TypeScript (commander) or Go
  • Why: distribution ease vs single-binary

AI features

  • Default stack: Vercel AI SDK (+ OpenRouter as the gateway)
  • Why: streaming/tool-calling glue LLMs know well

Rule of thumb: deviate from these only when the project itself dictates (a DSP app is C/Swift no matter what LLMs prefer) — and record the deviation in the guide.