Brand-openedx package changes not reflecting in local Tutor (Ulmo) setup

Hi Everyone,

I’m facing an issue with applying theme customizations using the brand-openedx package in my local Open edX setup and would appreciate some guidance.

Environment

  • Open edX installed using Tutor 21.0.1
  • Release: Ulmo
  • Default setup working fine
  • Default theme: Tutor Indigo

What I’m Trying to Do

I want to customize theme-related elements such as:

  • CSS changes
  • Fonts
  • Colors

Specifically, I’m trying to apply changes to the Learner Dashboard MFE.

Steps I Followed

  1. Mounted the learner dashboard MFE.

  2. Cloned the brand repository: git clone https://github.com/edly-io/brand-openedx.git -b indigo-2.5.0

  3. Installed it locally as a dependency: npm install @edx/brand@file:./brand-openedx

  4. Current folder structure:

my-project/
    - frontend-app-learner-dashboard/
        - brand-openedx/

Issue

After installing the brand-openedx package, I do not see any Indigo theme changes reflected on the Learner Dashboard.

This exact setup was working correctly in the Teak release, but in Ulmo, the changes are not being applied.

Questions

  • Is there any additional configuration required in Ulmo?
  • Is there a new recommended way to override brand assets in Ulmo?
  • What are the correct steps to set up brand-openedx in a local Tutor-based development environment?

Any guidance or updated documentation references would be greatly appreciated.

Thanks in advance!

Yes, you are right. These steps used to work in teak when applying theme customizations using the brand-openedx. But in ulmo, we have design tokens & theme variants stuff.

We recently separated design tokens for dark theme in this PR(Link), and these theme variants are available to all MFEs through this piece of code(Link) in ulmo.

There were 2 approaches for development with brand-openedx that we had in mind,

  1. Apply scss/css changes to brand-openedx. Run npm run build, commit the dist folder to github. Then copy the raw URL(https://raw.githubusercontent.com/edly-io/brand-openedx/refs/heads/ulmo/indigo/dist/dark.min.css) of our ulmo/indigo branch and paste it here in this code(Link).
    • There was an issue with this approach that with every change, we had to run npm run build, commit the dist folder to github, copy the raw URL of that dark.min.css of that particular commit, as due to some cache related issue. The changes were not reflecting.
  2. The approach we followed, we used tutor-contrib-paragon plugin, I’ll write the exact steps

I know the steps could be a bit confusing, But thats what we had followed.

1 Like

Hi @FarazM

Thank you very much for your detailed response. It was extremely helpful and has given me the right direction for utilizing design tokens effectively. I truly appreciate your guidance.

I will follow your instructions and reach out if I need any further assistance. Thanks again for your support.

Also, could you please let me know if there is any documentation available on how to use brand-openedx, design tokens, and Paragon packages in both local and production environments?

Thanks in advance.

Yes, sure. You can reach out if you have any queries.

The steps I shared above are what we have right now for documentation OR what I know. And these are for local development.
For production(you don’t need paragon plugin), after you complete the development, you should push the dist folder and replace the links in this piece of code(Link) and also change the brand link/version(Link) if you are customizing something on top of indigo.