# Why is Tutor documenting tutor-indigo theming when it does not work?

**URL:** <https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308>\
**Category:** Tutor Help\
**Created:** [March 20, 2025, 2:58pm UTC](https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308 "2025-03-20T14:58:04Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [March 20, 2025, 2:58pm UTC](https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308/1 "2025-03-20T14:58:04Z")

</div>

Hi,  
I am trying to figure out how theming works with OpenEdX and Tutor.

I have been mislead in following

> **[Changing the appearance of Open edX — Tutor documentation](https://docs.tutor.edly.io/tutorials/theming.html)**

which simply does not work.

The changes to this theme _only_ apply to pages that are under the direct `LMS_HOST` url, i.e. `edx.<domain>`, _NOT_ to any of the `apps.edx.<domain>` pages, which are the vast majority of pages. I figured that by adding a prefix to the `Powered by` text in the footer. The prefix _only_ appears on the “`courses`” page and the `wiki` pages, not the `learner-dashboard` (that redirects to `apps.edx.<domain>`, nor any of the courses page, nor the studio, nor anything else relevant!

How do I modify the theme for `apps.edx.<domain>` pages ?

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [March 20, 2025, 6:25pm UTC](https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308/2 "2025-03-20T18:25:11Z")

</div>

In other words, if I change

```auto
/tutor/.local/share/tutor/env/build/openedx/themes/indigocq/lms/templates/footer.html

```

it instantly changes the footer on the pages that are under `edx.<domain>`. What do I need to do for the changes to affect pages that are under `apps.edx.<domain>` ?

---

<div class="post-metadata">

**Author:** ![sarina](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sarina/32/2308_2.png) [@sarina](https://discuss.openedx.org/u/sarina)\
**Post date:** [March 21, 2025, 2:27pm UTC](https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308/3 "2025-03-21T14:27:39Z")

</div>

[@tutor-maintainers](https://discuss.openedx.org/groups/tutor-maintainers) any advice?

---

<div class="post-metadata">

**Author:** ![regis](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/regis/32/2640_2.png) [@regis](https://discuss.openedx.org/u/regis)\
**Post date:** [March 24, 2025, 10:56am UTC](https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308/4 "2025-03-24T10:56:23Z")

</div>

This question is documented here: [GitHub - overhangio/tutor-indigo: An elegant, customizable theme for Open edX](https://github.com/overhangio/tutor-indigo?tab=readme-ov-file#cant-override-styles-using-indigo-theme-for-mfes)  
and here: [GitHub - overhangio/tutor-mfe: This plugin makes it possible to easily add micro frontend (MFE) applications on top of an Open edX platform that runs with Tutor.](https://github.com/overhangio/tutor-mfe/?tab=readme-ov-file#customising-mfes)

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [March 24, 2025, 12:34pm UTC](https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308/5 "2025-03-24T12:34:14Z")

</div>

Mmm, ok, but then why is this not what’s documented in the [Tutor doc](https://docs.tutor.edly.io/tutorials/theming.html) ?

Also, how does one go ahead and test the changes without rebuilding the images ? Building the images takes ~20-30 minutes. This is not good for developing.

With `tutor-indigo`, we can simply mount the theme directory, make the changes and refresh the page and the effect of the changes are seen instantaneously. Also, it is quite obvious through `tutor-indigo` what the files are. With the npm branding stuff, the templates are not in the [repository](https://github.com/openedx/brand-openedx), it seems only a few of the images and the css files are.

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [March 24, 2025, 12:44pm UTC](https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308/6 "2025-03-24T12:44:36Z")

</div>

Also, the examples in [here](https://github.com/overhangio/tutor-indigo?tab=readme-ov-file#cant-override-styles-using-indigo-theme-for-mfes) and [here](https://github.com/overhangio/tutor-mfe/?tab=readme-ov-file#customising-mfes) contradict eachother

The first one states:

```auto
hooks.Filters.ENV_PATCHES.add_item((
            "mfe-dockerfile-post-npm-install",
            """
RUN npm install '@edx/brand@npm:custom-brand-package'
RUN npm install '@edx/brand@git+https://github.com/username/brand-openedx.git#custom-branch'
""",
        ))

```

while the second one states

```auto
hooks.Filters.ENV_PATCHES.add_item(
    (
        "mfe-dockerfile-post-npm-install",
        """
RUN npm install '@edx/brand@git+https://github.com/edx/brand-edx.org.git'
"""
    )
)

```

This is confusing. Do I need `RUN npm install '@edx/brand@npm:custom-brand-package'` ? or do I need `RUN npm install '@edx/brand@git+https://github.com/username/brand-openedx.git#custom-branch'` ? or both ? or `RUN npm install '@edx/brand@git+https://github.com/edx/brand-edx.org.git'` ? Is it `brand-openedx.git` ? or `brand-edx.git` ? This raises more questions than it gives answers.

---

<div class="post-metadata">

**Author:** ![regis](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/regis/32/2640_2.png) [@regis](https://discuss.openedx.org/u/regis)\
**Post date:** [March 25, 2025, 9:22am UTC](https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308/7 "2025-03-25T09:22:14Z")

</div>

> [@mboisson](#):
>
> Mmm, ok, but then why is this not what’s documented in the [Tutor doc](https://docs.tutor.edly.io/tutorials/theming.html) ?

Multiple reasons:

1. Tutor core and tutor-indigo and tutor-mfe are different things.
2. Different people take care of these different things.
3. The documentation is imperfect.

I’m not myself an expert in MFE/Indigo theming, so it’s difficult for me to give you good advice other than “read the docs”. If you feel like this documentation should be centralized in the core Tutor docs, then we would be more than happy to discuss this. Would you like to open a pull request? The docs are in the [`/docs`](https://github.com/overhangio/tutor/tree/release/docs) directory of the tutor repo.

> [@mboisson](#):
>
> Also, how does one go ahead and test the changes without rebuilding the images ? Building the images takes ~20-30 minutes. This is not good for developing.

I believe this is an intrinsic limitation of MFEs and tutor-mfe for production builds. But you should not have to rebuild the image when running `tutor dev` commands. Just install the branding package on the host, with `npm install ...`, and then bind-mount the MFE repository with `tutor mounts add ...`. Unless I’m mistaken, the `node_modules/` directory will also be bind-mounted. But I suggest you only try this out _after_ you get everything to work.

> [@mboisson](#):
>
> Do I need `RUN npm install '@edx/brand@npm:custom-brand-package'` ? or do I need `RUN npm install '@edx/brand@git+https://github.com/username/brand-openedx.git#custom-branch'` ? or both ? or `RUN npm install '@edx/brand@git+https://github.com/edx/brand-edx.org.git'` ? Is it `brand-openedx.git` ? or `brand-edx.git` ? This raises more questions than it gives answers.

All these commands are examples of the same thing. You should replace “edx/brand”, “brand-edx”, “username”, etc. with your own package name and GitHub repository.

Again, it’s quite possible that these instructions could be improved. If you have suggestions, I encourage you to open pull requests in the corresponding repositories.

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [March 25, 2025, 1:03pm UTC](https://discuss.openedx.org/t/why-is-tutor-documenting-tutor-indigo-theming-when-it-does-not-work/15308/8 "2025-03-25T13:03:20Z")

</div>

> [@regis](#):
>
> I believe this is an intrinsic limitation of MFEs and tutor-mfe for production builds. But you should not have to rebuild the image when running `tutor dev` commands.

That’s unfortunate. We run a development platform in a cloud VM with “tutor local”. As far as I understand, “tutor dev” only allows localhost, i.e. not exposed to the internet. That would mean that it’s very difficult to properly develop without it being installed on one’s local computer.
