Most course platforms treat code as an afterthought. We think the repo should be the source of truth — for content, versioning, and delivery.
Developers spend their careers mastering version control, code review, CI/CD, and pull requests. These tools exist because plain text + git is a surprisingly powerful substrate: it's durable, diffable, auditable, and composable.
Then they go to teach someone else, and suddenly they're in a WYSIWYG editor, dragging content blocks around, exporting ZIP files, and wondering why the "published at" timestamp is wrong by 3 hours.
The mismatch is jarring. And it's unnecessary.
When your course lives in a git repository, you get a set of properties that SaaS course platforms charge premium tiers to approximate:
Git commits are your course version history. You can tag a release (v1.2.0), roll back a lesson that introduced a bug, or maintain separate branches for "beginner" and "advanced" variants. No database migration required.
Pull requests work for course content too. A guest contributor fixes a typo? Opens a PR. You review it, suggest changes with inline comments, and merge. This is standard practice for documentation at most engineering teams — it should be standard for courses too.
With TeachRepo, a GitHub Actions workflow runs on every push. It validates your course YAML, compiles the MDX, runs your quiz answer keys through the grading logic, and deploys to Vercel. Broken quizzes fail the build before any student sees them.
There's no "export" step that can get out of sync. No proprietary format to migrate away from. The Markdown files in your repo are the course. Clone them, fork them, move platforms — your content goes with you.
Git-native isn't for everyone. If your audience is non-technical creators, a drag-and-drop interface is genuinely better. TeachRepo is explicitly not for that audience.
It's for engineers, DevRel leads, open-source maintainers, and technical educators who already write READMEs, documentation, and blog posts in Markdown. For them, the mental model is immediately familiar, and the tooling just works.
Here's what a course.yml file looks like:
title: "Advanced Git for Engineers"
slug: "advanced-git"
price_cents: 2900
currency: usd
version: "2.1.0"
tags: [git, engineering, devops]
lessons:
- filename: 01-rebasing.md
title: "Interactive Rebasing"
access: free
- filename: 02-reflog.md
title: "The Reflog: Your Safety Net"
access: paid
- filename: 03-hooks.md
title: "Git Hooks and Automation"
access: paidEvery field is intentional. Pricing, access control, versioning — all expressed as code, reviewable in a PR, tracked in git history.
The thesis extends further than individual courses. Imagine:
Git isn't a constraint. For the right audience, it's a superpower.
Build your first course the Git way.
Free tier — keep 100% of revenue. Deploy to your own Vercel account.