Open-source course engine

Interactive courses built around your goals

Build a course that meets the learner where they are: practical lessons, exercises, flashcards, spaced repetition, and progress tracking. Describe the audience and outcome, let an AI coding tool generate the content, then ship a static course site.

terminal
$ gh repo clone jmilne22/vibe-learn
$ npm run new-course -- python
$ claude "Create a Python course"
$ npm run build
# Course ready at dist/python/
Available courses
Infrastructure Development with Go
From DevOps engineer to infrastructure developer. Build CLI tools, API clients, concurrent services, networking utilities, container internals, Kubernetes controllers, and algorithm practice.
13 modules · ~10-20 hours
Sample Course
A starter template demonstrating every platform feature. Fork this as a base for your own course.
Template
3 modules · ~2-4 hours
How it works
01
Scaffold
Create a course directory with the right lesson, exercise, and asset structure.
npm run new-course -- python
02
Generate
Give your AI tool the starter prompt, learner profile, and target outcome.
claude "Create a Python course"
03
Build and ship
Compile markdown and YAML into a static site that can be deployed anywhere.
npm run build
What you get
>_
Lessons & code comparisons
Markdown with syntax highlighting and side-by-side code comparisons. Show the same concept in two languages.
[ ]
Exercises & challenges
Warmups, challenges, multiple variants, difficulty modes, progressive hints, and annotated solutions.
SRS
Spaced repetition & flashcards
SM-2 scheduling surfaces exercises and flashcards when you're about to forget. Review, discover, and weak-spot modes.
|||
Analytics & progress
Mastery dashboard with health cards, heatmaps, streaks, action items, and full data export. All local, no accounts.

Content files drive features — no registries, no config files, no wiring. Drop files in the right place and the build figures out the rest.

Drop a course folder — it appears on the site
The build scans courses/ for any directory with a course.yaml. Add a folder, rebuild, done.
courses/python/ + course.yaml → auto-discovered
Add a content file — the feature activates
Each plugin declares a content pattern. If a course has matching files, it gets the feature. No files? No dead links.
content/flashcards/flashcards.yaml → flashcards page active
Start building your course

Works with Claude Code, Cursor, Copilot, Augment, or any AI coding tool. See STARTER_PROMPT.md to get started.

Fork on GitHub