← Docs

Repo Format

A TeachRepo course is just a Git repo with a specific directory layout and YAML frontmatter. No build step required — push and it publishes.

Directory layout

my-course/
├── course.yml          ← required: course metadata
├── 01-intro.md         ← lesson 1
├── 02-setup.md         ← lesson 2
├── 03-deep-dive/
│   ├── lesson.md       ← lesson in subfolder
│   └── sandbox.json    ← optional sandbox config
└── quizzes/
    └── intro-quiz.yml  ← auto-graded quiz

Lessons are discovered by file order (01-, 02-, …) or by order frontmatter.

course.yml fields

FieldRequiredDescription
titleYesDisplay name of the course
slugYesURL-safe identifier, e.g. git-for-engineers
descriptionNoShort description shown in course cards
price_centsNoPrice in cents. 0 = free. Default: 0
currencyNoISO 4217 code, e.g. usd. Default: usd
repo_urlNoSource repo URL (for version tracking)
versionNoSemver string, e.g. 1.0.0
draftNotrue = hidden from marketplace
tagsNoYAML list of topic tags

Lesson frontmatter

---
title: "Introduction to Git"
slug: intro-to-git           # URL-safe, auto-derived from filename if absent
order: 1
access: free                 # free | paid (default: paid)
estimated_minutes: 10
description: "Learn the basics of version control."
quiz_id: intro-quiz          # links to quizzes/intro-quiz.yml
sandbox_url: https://...     # optional: gated StackBlitz/CodeSandbox URL
---

Your lesson content in Markdown (MDX supported).

Full example

# course.yml
title: "Git for Engineers"
slug: git-for-engineers
description: "Master Git workflows used in real engineering teams."
price_cents: 4900
currency: usd
repo_url: https://github.com/you/git-for-engineers
tags:
  - git
  - devops
  - version-control
Next: Quizzes YAML →CLI usage