Creating Courses
Course Structure
POV Demo courses use a modular, path-based architecture. Each content item lives in its own directory.
Directory Layout
A complete course follows this structure:
kubernetes-fundamentals/
├── course.yml # Main course configuration
└── sections/
├── 01-introduction/
│ ├── 01-what-is-kubernetes/
│ │ └── lesson.yml
│ └── 02-kubernetes-quiz-1/
│ └── quiz.yml
├── 02-core-concepts/
│ ├── 01-pods-and-containers/
│ │ └── lesson.yml
│ ├── 02-deployments-lab/
│ │ └── lab.yml
│ └── 03-services-networking/
│ └── lesson.yml
└── 03-advanced-topics/
├── 01-configmaps-secrets/
│ └── lesson.yml
├── 02-storage-volumes/
│ └── lesson.yml
├── 03-advanced-concepts-quiz/
│ └── quiz.yml
└── 04-final-project-lab/
└── lab.ymlOrdering: Put sections and content items in the intended sequence in
course.yml. The CLI preserves that list order and passes each item's order value to the loaded content; it does not derive order from directory names.Path-Based References
Instead of embedding all content in course.yml, each section references content directories by path. This is a fragment, not a complete course.yml file:
# course.yml
sections:
- id: "core-concepts"
title: "Core Concepts"
order: 2
contentItems:
- path: "sections/02-core-concepts/01-pods-and-containers"
order: 1
- path: "sections/02-core-concepts/02-deployments-lab"
order: 2
- path: "sections/02-core-concepts/03-services-networking"
order: 3The CLI reads the path, finds the YAML file inside it (lesson.yml, quiz.yml, or lab.yml), and determines the content type automatically.
Content File Detection
The CLI checks for these files in this order and uses the first one it finds in each referenced directory:
| File | Content Type |
|---|---|
lesson.yml | Lesson |
quiz.yml | Quiz |
lab.yml | Lab reference by labSlug; target existence is not verified by this CLI |
Modular Architecture Benefits
- Reusability — Content items can be shared and referenced across multiple courses.
- Maintainability — Update content in one place — all courses referencing it reflect the change.
- Collaboration — Teams can work on different content items simultaneously without merge conflicts.
- Version control — Track changes to individual lessons, quizzes, and labs independently.
- Incremental validation — Validate individual content items before assembling the full course.
