Tech stack for a B2B SaaS (2026)
B2B project management SaaS, designed by StackPrism from one sentence: 11 components, a reason for each, and the live checks that watch them.
The stack
Next.js
Node.js
- Inngest
Clerk
Upstash
PostgreSQL
Supabase
Stripe
Resend
Sentry
“A B2B SaaS project-management tool with team workspaces, SSO/auth, Stripe subscription billing, transactional emails, file attachments and an admin dashboard. Production ready.”
Make it yours. Open this stack in the editor to check its health, harden it and hand it to your coding agent. No sign-up, nothing to generate.
Start from this stackSelect a component to see what it does and what it connects to, or pick one above to see what breaks if it goes down. Pinch or use the buttons to zoom.
Why this stack
One Next.js app on Vercel serves both the product and an internal admin dashboard, and both call a Node.js API that also runs on Vercel. Clerk handles sign-in, workspace membership and the SSO that business customers ask for. The API keeps workspaces, projects and tasks in PostgreSQL, puts file attachments in Supabase Storage and caches frequent reads in Upstash Redis. Stripe runs subscription billing, Resend sends invites and receipts, Inngest handles background work such as Stripe webhook follow-ups, and Sentry reports errors.
Why each piece
All 11 components on the diagram: what each one does, what it talks to, and what stops if it goes down.
Next.js App
Runs on Vercel, in Presentation Layer
Customer app. Calls Clerk (auth), Node.js API and Sentry (errors).
Nothing else on the diagram depends on it.
Admin Dashboard
Runs on Vercel, in Presentation Layer
Internal admin UI. Calls Node.js API.
Nothing else on the diagram depends on it.
Node.js API
Runs on Vercel
CRUD backend. Calls PostgreSQL (queries), Supabase Storage (stores), Stripe (billing), Resend (emails), Inngest (jobs), Upstash Redis (caches) and Sentry (errors). Called by Next.js App, Admin Dashboard and Stripe (webhooks).
If it goes down, 2 of 10 components stop working.
Inngest
Runs on Vercel
Background jobs. Called by Node.js API (jobs).
If it goes down, 1 of 10 components degrades.
Clerk
Auth and identity. Called by Next.js App (auth).
If it goes down, 1 of 10 components stops working.
Upstash Redis
Caching and rate limit. Called by Node.js API (caches).
If it goes down, 1 of 10 components degrades.
PostgreSQL
In Data and Storage Layer
Primary database. Called by Node.js API (queries).
If it goes down, 3 of 10 components stop working.
Supabase Storage
In Data and Storage Layer
File attachments. Called by Node.js API (stores).
If it goes down, 1 of 10 components degrades.
Stripe
In Monetization and Messaging Layer
Billing platform. Calls Node.js API (webhooks). Called by Node.js API (billing).
If it goes down, 1 of 10 components degrades.
Resend
In Monetization and Messaging Layer
Transactional email. Called by Node.js API (emails).
If it goes down, 1 of 10 components degrades.
Sentry
Error tracking. Called by Node.js API (errors) and Next.js App (errors).
If it goes down, 2 of 10 components degrade.
When this stack fits
- You sell to teams, so workspaces, invites and SSO are part of the product from the first release.
- You want the product, the API and the admin dashboard in one TypeScript codebase on Vercel.
- Billing is per-plan or per-seat subscriptions that Stripe can run end to end.
When to pick something else
- You sell to single users, not teams: organizations, invites and workspace rules are more than you need.
- Enterprise buyers ask for SAML, SCIM and an exportable audit log: the enterprise SaaS example is built for that.
- Reports or imports run for minutes: the API runs as functions on Vercel, which have time limits, so keep that work in Inngest jobs.
What you need to build this
11 components across 9 areas of the stack.
Build it with your AI agent
Hand the stack to Claude Code, Codex, Cursor or any coding agent as a brief: how it connects, install steps and a build plan.
Frontend2
- Docs
Next.js App
Customer app
npm install next
Admin Dashboard
Internal admin UI
Backend & APIs2
- Docs
Node.js API
CRUD backend
Inngest
Background jobs
Data1
- Docs
PostgreSQL
Primary database
Cache & queues1
- Docs
Upstash Redis
Caching and rate limit
Auth1
- Docs
Clerk
Auth and identity
npm install @clerk/nextjs
Payments1
- Docs
Stripe
Billing platform
npm install stripe
Email & messaging1
Resend
Transactional email
Storage & CDN1
- Docs
Supabase Storage
File attachments
npm install @supabase/supabase-js
Observability1
- Docs
Sentry
Error tracking
npm install @sentry/nextjs
Install
npm install next @clerk/nextjs stripe @supabase/supabase-js @sentry/nextjs
SDKs only. Pick your own database driver or ORM.