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
Naming convention: Prefix directories with numbers (01-, 02-) to control ordering. The platform sorts content items by their order field in course.yml, not alphabetically.

Path-Based References

Instead of embedding all content in course.yml, content items are referenced by directory path:

# 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 platform auto-detects content type based on the YAML filename found in each directory:

FileContent Type
lesson.ymlLesson — video content with transcript
quiz.ymlQuiz — interactive knowledge assessment
lab.ymlLab reference — link to a POV Demo lab

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.