How can you add additional feature in Open edX tutor

Hi @Engr_James_Lusuegro,

Depending on your needs, there are different types of customization, such as course features or the user interface.

Customizing the Open edX user interface, such as by adding new static pages, is accomplished using theming. Micro Frontends (MFE) also create custom UIs, but they seem to be a different beast because they are a separate service entirely (they have their own Docker images).

To follow up on @uetuluk, most features added to Open edX are Django apps, with the most common type being XBlocks. However, there are other types if you know how to specify the entry_point in the setup.py file.

  • Django apps, regardless of the type, are installed the same way in Tutor by placing the reference or code in the requirements folder and then rebuilding the Open edX Docker images.

Here are two examples of Django apps and their entry points (I’m not familiar with other types, but you can find them by reading the codebase).

  • XBlocks - Add customizable content types to a course. The course developer can select these from the Advanced Component when editing a unit. For example, adding H5P content: h5pxlbock

      entry_points={
          'xblock.v1': [
              'h5pxblock = h5pxblock:H5PPlayerXBlock',
          ]
    
  • Course Tabs - Adds a new tab to a course. The tab is available when the course is opened, even by an anonymous user. For example, including real-time chat clients: rocketchat-tab

      entry_points={
          "lms.djangoapp": [
              "rocketchat_tab = rocketchat_tab.apps:RocketChatConfig",
          ],
          "openedx.course_tab": [
              "rocketchat_tab = rocketchat_tab.plugins:RocketChatTab",
          ]
      },
    

If the feature you want works in the native Open edX installation, then I would suggest looking at the entry points to see if it installs as a Django app. If so, the installation should be straightforward by placing the code in the requirements folder. If not, perhaps you can convert it to a Django app.

3 Likes