Creating Courses

course.yml Reference

The course.yml file in your course root defines all metadata, structure, and publishing settings.

Full Example

slug: "kubernetes-fundamentals"
title: "Kubernetes Fundamentals"
description: "Learn the core concepts of Kubernetes container orchestration"
category: "DevOps"
difficulty: "intermediate"        # beginner | intermediate | advanced
estimatedTime: 180                # Total course time in minutes

instructors:
  - "Jane Doe"
instructorEmails:
  - "[email protected]"
owner: "tekanaid"

teaser: "Master Kubernetes fundamentals through hands-on exercises"
icon: "kubernetes"
image: "https://example.com/kubernetes-course.png"
tags:
  - "kubernetes"
  - "containers"
  - "devops"

prerequisites:
  - "Basic understanding of containers and Docker"
  - "Command line familiarity"

learningObjectives:
  - "Understand Kubernetes architecture and components"
  - "Deploy and manage applications using pods and deployments"

skillsGained:
  - "Container orchestration"
  - "Kubernetes cluster management"

sections:
  - id: "introduction"
    title: "Introduction to Kubernetes"
    description: "Understanding the fundamentals"
    order: 1
    contentItems:
      - path: "sections/01-introduction/01-what-is-kubernetes"
        order: 1
      - path: "sections/01-introduction/02-kubernetes-quiz-1"
        order: 2

  - id: "core-concepts"
    title: "Core Kubernetes Concepts"
    order: 2
    contentItems:
      - path: "sections/02-core-concepts/01-pods-and-containers"
        order: 1

accessTier: "free"               # free | premium
freePreview: false
comingSoon: false

published: true
featured: false
isBeta: false
version: "1.0.0"

Required Fields

FieldTypeDescription
slugstringUnique URL-safe identifier. Used in URLs and CLI commands.
titlestringDisplay name shown to learners.
descriptionstringShort description for course listings.
difficultystringbeginner, intermediate, or advanced (lowercase, exact).
sectionsarrayOrdered list of sections, each with contentItems paths.
ownerstringYour organization identifier.

Discovery & Marketing

FieldTypeDescription
teaserstringOne-line pitch shown in course cards and search results.
iconstringIcon identifier (e.g. 'kubernetes', 'terraform', 'nomad').
imagestringURL to course banner image.
tagsstring[]Keywords for search and discovery.
categorystringPrimary category (e.g. 'DevOps', 'Kubernetes').
instructorsstring[]Display names of instructors, shown on the course listing page.
instructorEmailsstring[]Email addresses of instructors. Paired by index with instructors.

Learning Context

FieldTypeDescription
prerequisitesstring[]What learners should know before starting.
learningObjectivesstring[]Specific, measurable outcomes learners will achieve.
skillsGainedstring[]Practical skills learners will develop.
estimatedTimenumberTotal course time in minutes.

Sections Structure

Each entry in sections has:

FieldDescription
idUnique section identifier (slug-style).
titleDisplay name for the section.
descriptionOptional section description.
orderInteger position of this section in the course.
contentItems[].pathRelative path to the content directory (no trailing slash).
contentItems[].orderInteger position of this item within the section.

Publishing Options

FieldDefaultDescription
publishedfalseSet to true to make the course publicly visible.
featuredfalseHighlight the course in featured listings.
isBetafalseDisplay a beta badge. Place at the same level as comingSoon.
accessTier"free"Access control. "free" makes the course visible to all users. "premium" restricts it to subscribers.
freePreviewfalseAllow non-subscribers to view the first lesson even when accessTier is premium.
comingSoonfalseShow the course in listings with a Coming Soon badge but prevent enrollment.
version"1.0.0"Semantic version string for tracking changes.