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.yml
Ordering: 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: 3

The 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:

FileContent Type
lesson.ymlLesson
quiz.ymlQuiz
lab.ymlLab reference by labSlug; target existence is not verified by this CLI

Modular Architecture Benefits

  • ReusabilityContent items can be shared and referenced across multiple courses.
  • MaintainabilityUpdate content in one place — all courses referencing it reflect the change.
  • CollaborationTeams can work on different content items simultaneously without merge conflicts.
  • Version controlTrack changes to individual lessons, quizzes, and labs independently.
  • Incremental validationValidate individual content items before assembling the full course.