Tech stack for a developer API product (2026)
Web page to Markdown API, designed by StackPrism from one sentence: 9 components, a reason for each, and the live checks that watch them.
The stack
Next.js
Vercel
- Inngest
Stripe
PostgreSQL
Upstash
Clerk
Sentry
“A developer API that turns any web page into clean Markdown. Developers sign up, create API keys, call a REST endpoint, see their usage in a dashboard, and pay per request after a free monthly quota. Traffic comes in bursts.”
Their answers on the constraints step
- Expected scale
- Spiky traffic
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
The API itself is a Node.js app on Vercel Functions, which scale up for bursts of traffic and back down when it’s quiet. Each request is checked against the caller’s key in PostgreSQL and their rate limit in Upstash Redis before any work starts, and long conversions are queued as Inngest jobs that write their results to PostgreSQL. Developers sign up with Clerk and manage keys and usage in a Next.js dashboard. Stripe handles billing past the free quota, and a separate webhook handler records Stripe’s events in PostgreSQL. Sentry reports errors.
Why each piece
All 9 components on the diagram: what each one does, what it talks to, and what stops if it goes down.
Next.js Dashboard
In Vercel
Developer dashboard. Calls Clerk (authenticates), Vercel Functions, PostgreSQL (reads) and Sentry (reports).
Nothing else on the diagram depends on it.
Vercel Functions
In Core Services
Node.js API. Calls Inngest (queues), Sentry (reports), PostgreSQL (queries) and Upstash Redis (reads). Called by Next.js Dashboard.
If it goes down, 1 of 8 components stops working.
Inngest
In Core Services
Background jobs. Calls PostgreSQL (writes). Called by Vercel Functions (queues).
If it goes down, 1 of 8 components degrades.
Stripe Webhooks
In Vercel
Billing callbacks. Calls Stripe (receives) and PostgreSQL (updates).
Nothing else on the diagram depends on it.
PostgreSQL
In Data & Storage
System of record. Called by Next.js Dashboard (reads), Stripe Webhooks (updates), Vercel Functions (queries) and Inngest (writes).
If it goes down, 4 of 8 components stop working.
Upstash Redis
In Data & Storage
Rate limiting. Called by Vercel Functions (reads).
If it goes down, 1 of 8 components degrades.
Stripe
In External Services
Billing platform. Called by Stripe Webhooks (receives).
If it goes down, 1 of 8 components degrades.
Clerk
In External Services
Authentication. Called by Next.js Dashboard (authenticates).
If it goes down, 1 of 8 components stops working.
Sentry
In External Services
Error tracking. Called by Vercel Functions (reports) and Next.js Dashboard (reports).
If it goes down, 2 of 8 components degrade.
When this stack fits
- Traffic comes in bursts and you don’t want servers sitting idle in between.
- You sell per request, so every call has to be counted and limited.
- Developers expect a dashboard with keys and usage from the first day.
When to pick something else
- Pages need a real browser to render: headless browsers are heavy for serverless functions, so run them on a container service.
- You’d rather not build keys and metering: API management services can issue keys and count usage for you.
What you need to build this
9 components across 8 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.
Frontend1
- Docs
Next.js Dashboard
Developer dashboard
npm install next
Backend & APIs1
Inngest
Background jobs
Data1
- Docs
PostgreSQL
System of record
Cache & queues1
- Docs
Upstash Redis
Rate limiting
Auth1
- Docs
Clerk
Authentication
npm install @clerk/nextjs
Payments2
Hosting & infra1
- Docs
Vercel Functions
Node.js API
Observability1
- Docs
Sentry
Error tracking
npm install @sentry/nextjs
Install
npm install next @clerk/nextjs stripe @sentry/nextjs
SDKs only. Pick your own database driver or ORM.