Skip to main content

Tutor Branding Plugin

This plugin customizes Open edX branding for Tutor, with a focus on Ulmo-era MFE theming.

Tutor 22 compatibility rendering uses frontend-base SiteContext for the theme selector; standalone MFEs retain frontend-platform AppContext. Imports are branding-specific aliases so combined plugin patches do not collide. The generated frontend-base site was built with Panorama and this unpublished checkout on 2026-09-08; browser theme-switching remains a staging check.

Installation

pip install tutor-contrib-branding

This release targets Open edX Ulmo with Tutor 21.x.

Quick Start

  • Register for free at branding.aulasneo.com. Follow the instructions to create and publish your theme. Copy the provided tutor command.
  • Enable the tutor-contrib-branding plugin.
  • Paste the tutor command
  • Restart services

Now you can tweak the theme parameters in https://branding.aulasneo.com and see the results in real time in your Open edX site (you might need to hard refresh or clear cache in your browser to see the changes).

Refer to the Branding documentation for more information.

Current approach

Branding is now centered on externally published Paragon theme assets. The Branding applications is an online editor that manages your Paragon assets and publishes it to be used in your Open edX site with no effort. It provides the tutor commands you need to link your site with the theme.

The supported path is:

  • publish Paragon core.css and variant CSS files from your design-token theme
  • point MFEs at those assets with BRANDING_PARAGON_THEME_URLS
  • configure logos and favicon explicitly with BRANDING_MFE_LOGO_URL, BRANDING_MFE_LOGO_WHITE_URL, BRANDING_MFE_LOGO_TRADEMARK_URL, and BRANDING_MFE_FAVICON_URL
  • use BRANDING_THEME_REPOS only for comprehensive theme content that still belongs to legacy pages, mainly certificates and static pages

Official references:

Configuring BRANDING_PARAGON_THEME_URLS

Set BRANDING_PARAGON_THEME_URLS to the PARAGON_THEME_URLS object expected by frontend-platform.

Example:

BRANDING_PARAGON_THEME_URLS:
  core:
    url: "https://cdn.example.com/theme/core.css"
  defaults:
    light: light
    dark: dark
  variants:
    light:
      url: "https://cdn.example.com/theme/light.css"
    dark:
      url: "https://cdn.example.com/theme/dark.css"
    high-contrast-dark:
      url: "https://cdn.example.com/theme/high-contrast-dark.css"

When multiple variants are declared, this plugin adds a footer theme selector to MFEs. It supports:

  • Auto
  • the configured default light variant
  • the configured default dark variant, if present
  • any additional variants declared under BRANDING_PARAGON_THEME_URLS.variants

MFE logos and favicon

MFEs still expect explicit asset URLs for brand images.

Available settings:

  • BRANDING_MFE_LOGO_URL
  • BRANDING_MFE_LOGO_WHITE_URL
  • BRANDING_MFE_LOGO_TRADEMARK_URL
  • BRANDING_MFE_FAVICON_URL

These values must be public URLs.

Catalog home page overlay

BRANDING_OVERLAY_HTML replaces the catalog home page overlay HTML when it is defined.

This value is passed through the org.openedx.frontend.catalog.home_page.overlay_html plugin slot and is only applied when the setting is set.

Catalog MFE and marketing site

By default, this plugin enables the catalog MFE, which replaces the home and the courses pages. If you have set marketing site, set BRANDING_ENABLE_CATALOG_MICROFRONTEND to False in order to redirect the home and courses pages to your marketing site URL instead.

Theme repositories and comprehensive theming

BRANDING_THEME_REPOS is still supported, but only for the remaining legacy/comprehensive theme surface.

That means:

  • certificates
  • legacy static pages
  • other legacy Django-rendered theming needs that are still served from the comprehensive theme

Example:

BRANDING_THEME_REPOS:
  - name: my-theme
    url: https://github.com/myorg/my-theme.git
    version: main

After updating the configuration:

tutor config save
tutor images build openedx
tutor local do init --limit branding

Notes:

  • only one theme can be active at a time
  • do not use theme as a custom theme name; that name is reserved for the base theme directory
  • assign the theme in Django admin if you need to switch the active comprehensive theme for a site

Deprecated and removed settings

The following legacy build-time branding settings are no longer supported and have been removed in favor of externally published Paragon theme assets and runtime MFE configuration:

  • BRANDING_WELCOME_MESSAGE
  • BRANDING_FOOTER_NAV_LINKS
  • BRANDING_FOOTER_LEGAL_LINKS
  • BRANDING_BACKGROUND
  • BRANDING_BG_PRIMARY
  • BRANDING_BODY
  • BRANDING_PRIMARY
  • BRANDING_SECONDARY
  • BRANDING_FONT_FAMILY
  • BRANDING_BRAND
  • BRANDING_SUCCESS
  • BRANDING_INFO
  • BRANDING_DANGER
  • BRANDING_WARNING
  • BRANDING_LIGHT
  • BRANDING_DARK
  • BRANDING_ACCENT_A
  • BRANDING_ACCENT_B
  • BRANDING_HOMEPAGE_BG_IMAGE
  • BRANDING_EXTRAS
  • BRANDING_OVERRIDES
  • BRANDING_FONTS
  • BRANDING_FONTS_URLS
  • BRANDING_LMS_IMAGES
  • BRANDING_CMS_IMAGES
  • BRANDING_HIDE_DASHBOARD_SIDEBAR
  • BRANDING_HIDE_LOOKING_FOR_CHALLENGE_WIDGET
  • BRANDING_FIT_COURSE_IMAGE
  • BRANDING_INDEX_ADDITIONAL_HTML
  • BRANDING_FRONTEND_COMPONENT_HEADER_REPO
  • BRANDING_FRONTEND_COMPONENT_FOOTER_REPO
  • BRANDING_MFE_PLATFORM_REPO
  • BRANDING_CERTIFICATE_HTML
  • BRANDING_STATIC_TEMPLATE_404
  • BRANDING_STATIC_TEMPLATE_429
  • BRANDING_STATIC_TEMPLATE_ABOUT
  • BRANDING_STATIC_TEMPLATE_BLOG
  • BRANDING_STATIC_TEMPLATE_CONTACT
  • BRANDING_STATIC_TEMPLATE_DONATE
  • BRANDING_STATIC_TEMPLATE_EMBARGO
  • BRANDING_STATIC_TEMPLATE_FAQ
  • BRANDING_STATIC_TEMPLATE_HELP
  • BRANDING_STATIC_TEMPLATE_HONOR
  • BRANDING_STATIC_TEMPLATE_JOBS
  • BRANDING_STATIC_TEMPLATE_MEDIA_KIT
  • BRANDING_STATIC_TEMPLATE_NEWS
  • BRANDING_STATIC_TEMPLATE_PRESS
  • BRANDING_STATIC_TEMPLATE_PRIVACY
  • BRANDING_STATIC_TEMPLATE_SERVER_DOWN
  • BRANDING_STATIC_TEMPLATE_SERVER_ERROR
  • BRANDING_STATIC_TEMPLATE_SERVER_OVERLOADED
  • BRANDING_STATIC_TEMPLATE_SITEMAP
  • BRANDING_STATIC_TEMPLATE_TOS

Custom MFEs

You can still override or add MFEs with BRANDING_MFE.

Example:

BRANDING_MFE:
  authn:
    port: 2001
    repository: https://github.com/myorg/myfork.git
    version: mybranch

Repositories must end in .git, and custom MFEs must remain compatible with Tutor MFE build expectations.

Usage

tutor plugins enable branding
tutor images build openedx
tutor images build mfe
tutor local do init --limit branding

Notes:

  • tutor local do init --limit branding is needed only if you are using BRANDING_THEME_REPOS. This command associates the comprehensive theme directory to the site for legacy HTML pages.
  • tutor images build openedx is needed only if you are using BRANDING_THEME_REPOS.
  • tutor images build mfe is needed only if you want the theme variant (light/dark/auto/...) switch.

For Kubernetes deployments, also push rebuilt images and restart the affected services.

License

This software is licensed under the terms of the AGPLv3.

Release files for tutor-contrib-branding 22.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tutor-contrib-branding 22.0.0
File Size Uploaded
tutor_contrib_branding-22.0.0.tar.gz 22.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tutor-contrib-branding 22.0.0
File Interpreter ABI Platform
tutor_contrib_branding-22.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 34.6 kB

Release files / tutor_contrib_branding-22.0.0.tar.gz

Download URL tutor_contrib_branding-22.0.0.tar.gz
Size 22.7 kB
Tags Source
SHA-256 checksum
How to use checksums
28edf4bbb238dc366c97c1d9908a2c55cabd44074f7b9bf303f3961af4340ea3
BLAKE2b-256 checksum
How to use checksums
aaf62de6bc94e9ed7ac943ca4eeee4d614138c715caa363a51d560b60d1c6b18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / tutor_contrib_branding-22.0.0-py3-none-any.whl

Download URL tutor_contrib_branding-22.0.0-py3-none-any.whl
Size 11.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c5522bd4802f905c6f4a4bb3f6c006741b2aac280f06f74c962c3051fdd3e4cd
BLAKE2b-256 checksum
How to use checksums
2234841accef5fbfd2d7333fe7cae9cb0d783a6351b71558e73f12f5ce06cfb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

22.0.0 This release

2 release files

21.2.0

2 release files

21.1.0

2 release files

21.0.0

2 release files

20.0.1

2 release files

20.0.0

2 release files

19.0.3

2 release files

19.0.2

2 release files

19.0.1

2 release files

19.0.0

2 release files

18.8.1

2 release files

18.8.0

2 release files

18.7.0

2 release files

18.6.2

2 release files

18.6.1

2 release files

18.5.0

2 release files

18.4.0

2 release files

18.3.0

2 release files

18.2.0

2 release files

18.0.0

2 release files

17.6.2

2 release files

17.6.1

2 release files

17.5.0

2 release files

17.4.0

2 release files

17.3.0

2 release files

17.2.0

2 release files

17.1.0

2 release files

17.0.0

2 release files

16.1.2

2 release files

16.1.1

2 release files

16.1.0

2 release files

16.0.1

2 release files

16.0.0

2 release files

15.3.0

2 release files

15.2.0

2 release files

15.1.1

2 release files

14.2.0

2 release files

14.1.1

2 release files

14.1.0

2 release files

14.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page