Courses · Labs · Blogs · AI-assisted
An open-source platform for publishing courses, blogs, and hands-on coding labs. Self-host or run our cloud.
What you publish
Sections, lessons, video URLs from your favorite host. Drafts, drag-to-reorder, free previews.
Embed live coding sandboxes inside lessons. Each student gets their own container, persisted between sessions.
Rich-text articles with images and code. Public, SEO-friendly, and the natural top-of-funnel for your courses.
Recurring access to a bundle of your content. Subscribers see the courses, blogs, and labs you choose to include.
Under the hood
Checkout, webhooks, refunds, disputes — all driven by Stripe events, not URL redirects. No transaction fee on top of what Stripe charges.
Bring your own domain. Automatic TLS. Looks and feels like your site, because it is.
Sections, lessons, anything. Restructure a course in seconds without breaking enrolled students.
Receipts, course-access, password reset, drip sequences. Wired into Resend with your sender domain.
Server-rendered pages, OG metadata, JSON-LD, sitemap. Your blog posts and free lessons rank on day one.
Built-in AI
Two assistants that save you the blank-page moment. They write the first pass; you make it yours before it ships.
Give it a topic and a rough outline. Get back a publish-ready Tiptap draft with headings, code blocks, and natural transitions — in your voice, not a generic LLM voice.
Redirect-based success flows look fine until the first refund — then they fall apart. Here's what to do instead…
Point it at any lesson — text body or a video transcript — and it returns a multiple-choice quiz. Edit the questions, set correct answers, ship.
For creators
Your school is a tree. Courses hold sections, sections hold lessons. Blogs and labs sit beside them. No surprises, no exotic concepts — what you author is what students see.
What people say
Spun this up over the weekend to replace my hand-rolled LMS. The multi-tenant routing alone was worth the move. Webhooks just work, finally.
Switched two courses over last weekend. The AI blog drafts saved me a Saturday — I had four posts queued by Sunday.
Launched three courses in a month. Custom domain, branded checkout, mobile-friendly student view — felt like ours from day one.
Embedded interactive labs in three lessons today. Students run Python in the browser without leaving the course. Quietly impressive.
The marketing page caught my eye, but the actual product made me stay. Boring is the right word for serious software.
Stripe Connect support would make me move tomorrow. As-is, still tempting. The model makes sense for any small school.
Illustrative quotes — real testimonials replace these as creators ship.
Pricing
No transaction fees beyond Stripe's own. No usage gotchas. Self-host for free, forever.
Run it yourself, forever.
Apache 2.0 · the full code
We host it. You teach.
or $14/mo billed annually
When teaching is the business.
or $44/mo billed annually
Multiple instructors or 5,000+ students? Talk to us.
Common questions
Ready when you are
The repo is public, the docs are getting better every week, and the local stack runs in about a minute. Nothing left to wait on.