A course site for yourself is a modest app: lessons, quizzes, progress, a login and Stripe Checkout. An agent gets a working version running in a weekend, with video as the first catch because hosting and streaming lessons to students costs real bandwidth and needs signed URLs. The rest is what you stop outsourcing: you become the seller, so VAT or sales tax, refunds and chargebacks are yours, and student emails need to reach inboxes. Communities, memberships, bundles and the mobile app are where a home build stops being comparable.
Before you buildThinkific has no free plan, but its 30-day trial covers the whole platform. Try it before you commit your own build time.
Build me a course site to replace Thinkific. Requirements: - Node.js 22 + TypeScript: a Fastify server with server-rendered pages (Eta) and little vanilla JS. `npm start` serves http://localhost:4900: the catalog at /, the lesson player at /learn/<course>/<lesson> and admin at /admin. - Storage: better-sqlite3 in ./data/school.db: courses, sections, lessons (Markdown text, video, quiz or download), students, enrollments, progress, quiz attempts and coupons. Uploaded files in ./media. - Video: upload an MP4 in the admin, transcode to HLS at 360p and 720p with `ffmpeg`, and serve segments only through signed, expiring URLs tied to an enrolled student; play with `hls.js`. - Students: sign in with an emailed magic link (nodemailer, SMTP settings in .env), see their courses, resume where they stopped and mark lessons complete. A lesson can unlock N days after enrollment. - Selling: Stripe Checkout (`stripe`, keys in .env) at a fixed price per course with promotion codes. The `checkout.session.completed` webhook, with its signature verified, creates the enrollment and sends a receipt email; a refund revokes access. - Quizzes: multiple choice with a pass mark. Passing the final quiz issues a PDF certificate (`pdf-lib`) with a public verification URL. - Admin: one password in .env (signed cookie): edit courses, see students and orders, export students as CSV and grant free access. - Single instructor. No accounts beyond students' emails, no telemetry. Outbound calls: Stripe and SMTP. - Out of scope: communities, memberships and subscriptions, bundles, affiliates, live sessions, a mobile app, sales-tax calculation. - README: serving it behind HTTPS, `stripe listen` for local webhooks, and warnings that you are the seller (VAT or sales tax is yours) and that video bandwidth on a small VPS runs out fast.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Thinkific.
Add a Thinkific importer to the course site in this folder. Requirements: - A command `school import-thinkific users.csv progress.csv orders.csv` for the CSVs exported from Users, Student Progress and Sales > Orders. - Create students by email and match courses by name (print unmatched ones and stop). Store each student's completion percentage and date per course; do not guess lesson-level progress. - Record imported orders as free-access enrollments with the original date; send no emails. - Print a dry-run summary and write nothing until --apply; running twice must not duplicate rows. - Update the README with the export steps.
Add tax handling to the course site in this folder. Requirements: - Turn on Stripe Tax in Checkout (automatic_tax, collect the billing address) when STRIPE_TAX=1 in .env. - Store the tax amount, country and the Stripe invoice URL on each order and show them in /admin. - Add a monthly CSV export of orders by country with net, tax and gross. - Show prices tax-inclusive or tax-exclusive according to a setting. - Update the README with a warning that registering for VAT or sales tax is still your job.
Add a membership option to the course site in this folder. Requirements: - A plan with a monthly or yearly Stripe price that gives access to all courses marked "members". - Handle `customer.subscription.updated` and `customer.subscription.deleted` webhooks to grant or revoke access at period end; let students open the Stripe customer portal from their account page. - Keep one-off purchases working next to it and never revoke a course bought separately. - Add tests for a lapsed payment and a resubscription. - Update the README.
Course creators want to teach, not run video streaming, checkout and email delivery. Thinkific bundles those with a hosted student area, communities and reports, and its 30-day trial lowers the risk of starting. The switching cost is real once students and sales history live there.
Estimate · A small VPS plus object storage or a CDN for video; Stripe takes its usual per-sale fee and SMTP at student scale fits free tiers. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Basic | $54 | $40 | Unlimited courses, video lessons, quizzes and discussions, 1 community, up to 5 digital downloads, custom domain, checkout with coupons and abandoned-cart emails, 1 admin, 100 GB of video bandwidth a month. |
| Start | $109 | $82 | Everything in Basic plus memberships and subscriptions, completion certificates, assignments, bundles, upsells and payment plans, live cohorts and coaching with Zoom, an HTML and CSS editor, 2 admins, 200 GB of video bandwidth a month. |
| Grow | $219 | $164 | Everything in Start plus removal of Thinkific branding, 3 communities, group orders and B2B sales, invoicing, API access and webhooks, phone and priority support, 6 admins, 400 GB of video bandwidth a month. |
| Plus | custom | — | Custom student limits, video bandwidth from 7,500 GB a month, unlimited communities, a dedicated success team, an AI teaching assistant. |
No free plan. Every account gets a 30-day free trial of the whole platform.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Thinkific Payments checkout, order bumps, payment plans and abandoned-cart emails, Hosted video with bandwidth built in, and a student progress and engagement dashboard.
About $54 a month on the Basic plan, $648 a year (checked 2026-10-19).
Thinkific Payments checkout, order bumps, payment plans and abandoned-cart emails; Hosted video with bandwidth built in, and a student progress and engagement dashboard; Communities, memberships, bundles and group orders for company buyers; A branded mobile app for students; Support, uptime and a login students already know. If any of those matter to you, keep paying.
Yes: CourseLit (open source), LearnHouse (open source), Frappe LMS (open source).