Importing a course
You can build a whole course — topics, lessons, quizzes and assignments — as a folder of files on your computer, then load it in one go. For a course that already exists as written material, this is far faster than typing it into the browser one lesson at a time.
You do not need to know how to code. You need a folder, a text editor, and the naming rules below.
Manage Courses → Import course → How it works is the complete version of this, written for someone who has never opened a terminal, and it is the one to follow while you are actually doing it. This page is the summary and the decision: whether importing is the right route for you at all.
How it goes
- Start from a folder. Copy an existing course, or ask whoever set the platform up for an example. It already has the right shape.
- Write your content as ordinary text files with markdown formatting.
- Choose the folder on the import screen. It reads it and lists anything wrong — a missing image, two lessons numbered the same, a quiz with no right answer — naming the file and the line every time.
- Review what will change. Every topic, lesson, quiz and assignment, marked New, Update or No change, next to a preview of exactly how learners will see it.
- Press Import.
Steps 3 and 4 change nothing. No file is uploaded and nothing is saved until you press Import. Run them as often as you like — checking your folder is free.
The folder
my-course/
course.md the course itself
assets/
thumbnail.png the course picture
01-getting-started/ a topic
topic.md this topic's name
assets/
diagram.png pictures used in this topic
lessons/
01-introduction.md
02-going-deeper.md
quizzes/
01-check-your-understanding.md
assignments/
01-build-something.md
02-next-steps/
...
Three rules cover nearly everything.
Numbers at the front set the order. 01-, 02-, 03-. Rename a file to
move it. Use 01 rather than 1, or ten sorts after nine.
Names use lowercase letters, numbers and dashes only. getting-started is
fine; Getting Started and getting_started are not, because the name becomes
part of a web address. The title learners read is set inside the file and can
say anything.
Pictures live in an assets folder next to the topic that uses them.
Every file starts with a settings block between two lines of three dashes, and it must be the very first thing in the file:
---
title: Introduction to Arrays
---
# Introduction to Arrays
This part is what learners see.
What to expect
New courses arrive as drafts. Nothing is visible to learners until you publish.
Re-importing applies only what changed. Import the same folder twice with no edits and nothing happens at all — every item reads "No change". That makes the import safe to re-run after fixing one typo.
Renaming a topic folder is not a rename. The folder is the topic's identity, so renaming it creates a new topic and leaves the old one. If you need to renumber, do it deliberately and tidy up afterwards.
When the check refuses
The check blocks the import on things that would produce broken content, and warns on things that are merely suspicious.
Blocked: a missing image; a name that is not lowercase-and-dashes; two items with the same number in one topic; a settings block the reader cannot parse; a quiz question with no correct answer, or with more than one on a single-answer question; a file over 100 MB; raw HTML script in a lesson body.
Warned: a quiz with no questions; an empty body; a pass mark that cannot be
reached; a settings key it does not recognise — which is what catches videourl:
written for video_url:.
Every message names the file, and usually the line. Fix and re-check.
Import or browser?
| Use the import when | Use the browser when |
|---|---|
| The content already exists as documents | You are writing as you go |
| It is a large course, or many of them | It is a lesson or two |
| Several people are writing in parallel | One person is authoring |
| You want the content in version control | You do not |
Editing in the browser afterwards works fine either way. Importing is a way to get content in, not a mode you are stuck in.
Bulk work, for operators
There is also a command-line importer for people running bulk or automated imports. It is the same engine behind the same checks, and it is documented in the platform's engineering reference rather than here.