Skip to content

LibreLingo Documentation on Module

A Module resides below the courses within the course structure. It contains skills.

They have less complexity as they're here to group skills and nothing else. On the frontend, they appear as headings to group skills.

To get a better understanding, you can read the course basics.

Confused? Ask people on GitHub Discussions.

Table of Contents:

Tree structure

A typical tree structure for a module is like this:

├── module.yaml
└── skills
    ├── animals.yaml
    ├── clothes.yaml
    ├── food.yaml
    ├── nature.yaml
    ├── plurals.yaml
    ├── professions.yaml
    ├── verb_plurals.yaml
    └── verbs.yaml

Here, animals.yaml, clothes.yaml and food.yaml etc. are skills. Directly inside the module directory, there is also a file called module.yaml. This file contains information about the module (see below).

NOTE: A module directory name should not have spaces, be written in slug-form, and ideally in plain English characters. If your source language is not English, you can try roughly to follow the pronunciation and write it using English characters. The human-friendly Name in the yaml, however, can contain uppercase, spaces, and the actual name in the source language. The yaml skill files under it should always be inside a directory named skills.

NOTE: When a new module is created, it should be listed on the course.yaml under Modules key.


A module.yaml file for the Spanish Basics module looks like this:

  Name: "Basics"

  - animals.yaml
  - food.yaml
  - clothes.yaml
  - nature.yaml
  - verbs.yaml
  - plurals.yaml
  - verb_plurals.yaml
  - professions.yaml

Data breakdown

Name is the human-friendly name of the module. The name should be in the target audience's language or the language you set under For speakers of key on your course.yaml. For example, if the course is spanish-from-english, it should be in English. Skills has a list of yaml files for the skills under the module. NOTE: The order in which the skills appear in this YAML file is the order they will appear in the web app as well.

Creating a new module

To create a new module,

  • Create a directory under the course with the module name (keep it lowercase and no spaces)
  • Create a module.yaml file and put yaml code for the module.

For example, courses/french-from-english/traveling/module.yaml from the example above:

  Name: traveling

  - hello.yaml

Now create skills as you want and list them under the Skills key.