Skip to content

LibreLingo Documentation on Course

A Course is the highest element in the course structure. It contains modules, which in turn contain skills. There is usually one course for each language.

To get a better understanding, you can explore the courses directory on this repository and read the course basics.

Confused? Ask people on GitHub Discussions.

Table of Contents:

Tree structure

A typical tree structure for a course is like this:

├── activities
│   ├── module.yaml
│   └── skills
│       ├── continuous.yaml
│       └── ser_estar.yaml
├── basics
│   ├── module.yaml
│   └── skills
│       ├── animals.yaml
│       ├── clothes.yaml
│       ├── food.yaml
│       ├── nature.yaml
│       ├── plurals.yaml
│       ├── professions.yaml
│       ├── verb_plurals.yaml
│       └── verbs.yaml
├── course.yaml
└── introduction
    ├── module.yaml
    └── skills
        ├── adjectives.yaml
        ├── phrases.yaml
        └── preferences.yaml

Here, activities, basics, and introduction are modules. The continuous.yaml, animals.yaml etc., are skills. There is also a file called course.yaml directly inside the course directory. This file contains information about the course (see below).

A course directory name should not have spaces and should be written in slug-form in plain English.


A course.yaml file for the Spanish course looks like this:

# This file contains generic meta-data about the course

    Name: Spanish
    IETF BCP 47: es
  For speakers of:
    Name: English
    IETF BCP 47: en
    Name: Attribution-ShareAlike 4.0 International
    Short name: CC BY-SA 4.0
  Special characters:
    - "á"
    - "Á"
    - "é"
    - "É"
    - "í"
    - "Í"
    - "ó"
    - "Ó"
    - "ú"
    - "Ú"
    - "ü"
    - "Ü"
    - "ñ"
    - "Ñ"
    - "¿"
    - "¡"

  - basics/
  - introduction/
  - activities/

Data breakdown

Course has information about the course.

  • Language
  • Language > Name: The name of the language you want to test for or teach.
  • Language > IETF BCP 47: The IETF BCP 47 code of the above language. List available here.
  • For speakers of
  • For speakers of > Name: The name of the language your target audience already speaks.
  • For speakers of > IETF BCP 47: The IETF BCP 47 code of the above language. List available here.
  • License
  • License > Name: Full license name under which your course is made available. In most cases, it's ok to keep it as is.
  • License > Short name: Short name for the license, e.g., CC BY-SA 4.0
  • License > Link: URL to reach the full text of the license, e.g.,
  • Special characters: An array of special characters that might not be present on a typical English keyboard.

Modules has a list of module directory names followed by a /.

Automated spell checker

To avoid mistakes, you can enable automatic spell-checking in your course. Automatic spell-checking won't let you export a course if it has spelling mistakes. This can prevent incorrect changes from being merged into your course.

The spell checker is implemeneted using Hunspell. In order to use it, you need to have Hunspell installed on your computer.

To install Hunspell, follow the instructions of your operating system. On Ubuntu, you can install Hunspell like so:

sudo apt-get update -y
sudo apt-get install -y hunspell

Don't forget to also install a dictionary for the languages that you use in your course. Here's a list of dictionary packages available on Ubuntu:

In order to enable Hunspell in your course, add the following section to your course.yaml:

    German: de # replace with the language code for your language
    English: en-US # replace with the language code for your language

Keep in mind that you also need to have the hunspell Python package installed. To install it, just run:

pip install hunspell