Creating Courses

CLI Workflow

Validate and deploy courses using the pov CLI. Always validate before pushing.

CLI Commands

pov validate-course

Validate all content in the current course directory.

pov push-course

Deploy the course to staging (the default environment).

pov validate-course-batch <dir>

Validate all courses in a parent directory.

pov push-course-batch <dir>

Deploy all courses in a parent directory to the active environment.

Development Workflow

Follow these steps when creating or updating a course:

  1. 1Create your course directory with course.yml and content files.
  2. 2Log in: pov login
  3. 3Validate locally: pov validate-course
  4. 4Push to staging: pov push-course
  5. 5After staging verification, push to production: POV_ENV=production pov push-course.
# Validate
pov validate-course

# Deploy to staging (default)
pov push-course

# Deploy to production explicitly
POV_ENV=production pov push-course

Batch Operations

Use batch commands when managing multiple courses in a shared parent directory. Each subdirectory is treated as a separate course and processed in sequence:

# Validate all courses under ./courses/
pov validate-course-batch ./courses

# Deploy all to staging (default)
pov push-course-batch ./courses

# Deploy all to production explicitly
POV_ENV=production pov push-course-batch ./courses

Troubleshooting

Common validation and deployment errors and how to fix them:

ErrorCauseFix
missing required field: slugcourse.yml is missing the slug field.Add slug: "your-slug" to course.yml.
invalid difficulty valuedifficulty must be one of: beginner, intermediate, advanced.Use exact lowercase value.
content path not foundA path in sections[].contentItems references a directory that doesn't exist.Verify directory path matches exactly.
not authenticatedYou're not logged in or your session expired.Run pov login.