Building: Course ownership and repositories

Courses can be owned by organizations or individuals. Owners of a course will be able to:

  • see the course's dashboard
  • toggle the course's visibility
  • synchronize the course and the template repo

A course's owner is evident in its URL. For example, Introduction to HTML is accessible at, so it is owned by the githubtraining organization.

We will refer to this URL using the shortened format :owner/:course.

Course ownership by individuals

When an individual owns a course, only that person will be able to see the course's dashboard on Learning Lab.

Course ownership by organizations

Owners of the organization, and any members of a Lab Assistants team on GitHub will see the course's dashboard on Learning Lab.

How a Learning Lab course works

The repositories

Every GitHub Learning Lab course requires:

  1. A course repository
  2. A template repository

The course repository contains:

  • content for the course catalog
  • all steps in the course
  • expected event from the learner to trigger each step
  • actions taken by Learning Lab once a step is triggered
  • content for the bot's responses

The template repository contains:

  • the project codebase, only Git data from this repository will be copied for the learner

Set up the course repositories

Let's create the required elements for a course:

  1. Install Learning Lab on your personal account.
  2. (Optional, if your course is owned by an organization) Install Learning Lab on your chosen organization.
  3. Use the course creator to set up the starter repositories.

In the left panel, take a look at the files and folders in the newly created course repository:

Type Name Description
File config.yml Stores your courses metadata and logic, written in YAML.
File The full description of your course. This is what learners will use to decide whether or not they should take your course.
Folder responses/ Markdown files powering the bot's responses.

Add the template repository

The course creator will create an empty template repository on your account. You can either:

  1. Push your template code to this empty repository, or
  2. Tell the course to use an existing repository you own by:
    1. Navigating to Course information in the right panel of the course editor
    2. Replacing the repository name under Template>Repository to copy
    3. Remember this repository must be owned by the same account and you'll need to have Learning Lab installed on it

Set up your template repository with the necessary files and branches that will be copied for the learner. Learning Lab will not look for any specific files or folders.

GitHub Learning Lab's mascot A course on GitHub Learning Lab can guide you through this step.