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
| Field | Type | Description |
|---|---|---|
slug | string | Unique URL-safe identifier. Used in URLs and CLI commands. |
title | string | Display name shown to learners. |
description | string | Short description for course listings. |
difficulty | string | beginner, intermediate, or advanced (lowercase, exact). |
sections | array | Ordered list of sections, each with contentItems paths. |
owner | string | Your organization identifier. |
Discovery & Marketing
| Field | Type | Description |
|---|---|---|
teaser | string | One-line pitch shown in course cards and search results. |
icon | string | Icon identifier (e.g. 'kubernetes', 'terraform', 'nomad'). |
image | string | URL to course banner image. |
tags | string[] | Keywords for search and discovery. |
category | string | Primary category (e.g. 'DevOps', 'Kubernetes'). |
instructors | string[] | Display names of instructors, shown on the course listing page. |
instructorEmails | string[] | Email addresses of instructors. Paired by index with instructors. |
Learning Context
| Field | Type | Description |
|---|---|---|
prerequisites | string[] | What learners should know before starting. |
learningObjectives | string[] | Specific, measurable outcomes learners will achieve. |
skillsGained | string[] | Practical skills learners will develop. |
estimatedTime | number | Total course time in minutes. |
Sections Structure
Each entry in sections has:
| Field | Description |
|---|---|
id | Unique section identifier (slug-style). |
title | Display name for the section. |
description | Optional section description. |
order | Integer position of this section in the course. |
contentItems[].path | Relative path to the content directory (no trailing slash). |
contentItems[].order | Integer position of this item within the section. |
Publishing Options
| Field | Default | Description |
|---|---|---|
published | false | Set to true to make the course publicly visible. |
featured | false | Highlight the course in featured listings. |
isBeta | false | Display 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. |
freePreview | false | Allow non-subscribers to view the first lesson even when accessTier is premium. |
comingSoon | false | Show the course in listings with a Coming Soon badge but prevent enrollment. |
version | "1.0.0" | Semantic version string for tracking changes. |
