Support theming
For some potential customers, we'd like to support theming of the dashboard:
- Custom colour scheme.
- Change the Stackspin logo into a custom logo.
- Maybe allow a background image.
This should cover both the dashboard itself and the login app.
We won't need a web interface for configuring the theming: it's okay it that's done by a developer or support officer when onboarding the customer.
Implementation suggestions:
- Making the colours and image urls variable can be done through css variables.
- We can put the variable definitions in a stylesheet file that's dynamically generated by the backend.
- Alternatively, the page javascript could load the values for these variables through the static info endpoint. To prevent the page style from flashing as the static info is loaded, we could cache the values in the browser's local storage.
- The custom images may exceed the common limit (1 MB) for configmap contents, so they would need to be stored in a persistent volume. We can make that an optional pv mounted in the frontend pod at
/custom
. That directory already exists, but I think it makes more sense to move the existing contents (app icons and markdown descriptions of non-core apps) to/public
. With a bit of restructuring, that would also make it easier for people to add custom icons.