Tech stack for an online course platform (2026)
Course platform for independent instructors, designed by StackPrism from one sentence: 11 components, a reason for each, and the live checks that watch them.
The stack
Next.js
FastAPI
- Inngest
Upstash
PostgreSQL
Supabase
Resend
- Mux
Clerk
Stripe
Sentry
“An online course platform where instructors publish video lessons and quizzes, students buy courses, track their progress and earn certificates, and instructors get paid out every month.”
Their answers on the constraints step
- What they know
- Python
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
Students and instructors use one Next.js app and sign in with Clerk. Behind it sits a FastAPI service in Python, the language the team knows, which keeps courses, enrolments, progress and quiz results in PostgreSQL. Mux hosts and streams the lesson videos, and other files go to Supabase Storage. Stripe takes course payments and pays instructors out, and its webhooks tell the API when money moves. Inngest runs background work such as course emails through Resend, Upstash Redis caches hot data, 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 Web App
Student and instructor UI. Calls Clerk (auth), FastAPI App and Sentry (errors).
Nothing else on the diagram depends on it.
FastAPI App
In Backend Services
Core API service. Calls Inngest (triggers), Sentry (errors), Clerk (verifies), Stripe (charges), PostgreSQL (reads/writes), Upstash Redis (caches), Supabase Storage (files), Mux (streams) and Resend (emails). Called by Next.js Web App and Stripe (webhooks).
If it goes down, 1 of 10 components stops working.
Inngest
In Backend Services
Async workflows. Calls Resend (emails). Called by FastAPI App (triggers).
If it goes down, 1 of 10 components degrades.
Upstash Redis
In Data & Storage
Caching and rate limits. Called by FastAPI App (caches).
If it goes down, 1 of 10 components degrades.
PostgreSQL
In Data & Storage
Primary relational data. Called by FastAPI App (reads/writes).
If it goes down, 2 of 10 components stop working.
Supabase Storage
In Data & Storage
Media and files. Called by FastAPI App (files).
If it goes down, 1 of 10 components degrades.
Resend
In External Services
Transactional email. Called by Inngest (emails) and FastAPI App (emails).
If it goes down, 2 of 10 components degrade.
Mux
In External Services
Video hosting. Called by FastAPI App (streams).
If it goes down, 1 of 10 components degrades.
Clerk
In External Services
Authentication provider. Called by Next.js Web App (auth) and FastAPI App (verifies).
If it goes down, 2 of 10 components stop working.
Stripe
In External Services
Payments and payouts. Calls FastAPI App (webhooks). Called by FastAPI App (charges).
If it goes down, 1 of 10 components degrades.
Sentry
Error tracking. Called by FastAPI App (errors) and Next.js Web App (errors).
If it goes down, 2 of 10 components degrade.
When this stack fits
- Video is the core content, and you’d rather not build encoding and streaming yourself.
- Instructors need to be paid out, not just students charged.
- Your team writes Python.
When to pick something else
- You’re one instructor selling your own courses: a hosted course platform gets you selling without building one.
- You need interactive live classes: that takes a video calling service, which this diagram doesn’t include.
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.
Frontend1
- Docs
Next.js Web App
Student and instructor UI
npm install next
Backend & APIs3
- Docs
FastAPI App
Core API service
pip install fastapi
Inngest
Async workflows
Mux
Video hosting
Data1
- Docs
PostgreSQL
Primary relational data
Cache & queues1
- Docs
Upstash Redis
Caching and rate limits
Auth1
- Docs
Clerk
Authentication provider
npm install @clerk/nextjs
Payments1
- Docs
Stripe
Payments and payouts
pip install stripe
Email & messaging1
Resend
Transactional email
Storage & CDN1
- Docs
Supabase Storage
Media and files
npm install @supabase/supabase-js
Observability1
- Docs
Sentry
Error tracking
pip install sentry-sdk
Install
npm install next @clerk/nextjs @supabase/supabase-js pip install fastapi stripe sentry-sdk
SDKs only. Pick your own database driver or ORM.