A standalone Discourse theme for the Better Conversations Foundation community.
The theme must be installed from Git so that updates to this repository are automatically available in Discourse.
- Go to Admin > Customize > Themes & components
- Click Install and select From a Git repository
- Enter the repo URL:
https://github.com/Better-Conversations/discourse-theme-bcf - Click Install
- Once installed, click on the theme and set it as the active theme for your site
If the theme was previously created by pasting CSS directly into the admin editor:
- Note down any included components (e.g. Category Icons, Homepage Feature) — you'll re-add these
- Note down any theme setting overrides (colour palette selections, etc.)
- Install the theme from Git using the steps above
- Re-add the same components to the new Git-linked theme
- Re-apply any theme setting overrides
- Set the new theme as active
- Delete the old manually-created theme
Once installed from Git, go to Admin > Customize > Themes & components > BCF-Bespoke-Theme and click the update button (or enable auto-update in the theme settings to check for updates periodically).
Use the discourse_theme CLI to live-sync local changes to your Discourse instance without committing to Git.
gem install discourse_themediscourse_theme watch .On first run, it will prompt for:
- Discourse URL — e.g.
https://community.betterconversations.foundation - API key — create one at Admin > API > Keys (scoped to your admin user, with global scope)
These are saved for subsequent runs. After setup, every file save is instantly uploaded to Discourse — no commit/push/update cycle needed.
- Keep a browser tab open on your Discourse site to see changes in real time
- Use
Ctrl+Cto stop watching - If you need to reset the saved credentials:
discourse_theme config - The CLI only syncs the theme files — component settings (Category Icons config, etc.) still need to be changed in the admin UI
discourse_theme watch syncs directly to your live Discourse — all users see changes immediately. To avoid disrupting the community, use a dev branch and a separate theme:
One-time setup:
- Create a
devbranch:git checkout -b devand push it:git push -u origin dev - In Discourse admin, install a separate theme from Git using the same repo URL but set the branch to
dev - Name it BCF-Dev-Theme
- Add the same components (Category Icons, Homepage Feature) to the dev theme
- In your user preferences (Preferences > Interface > Theme), select BCF-Dev-Theme — only you will see it
Important: You must create the dev theme in Discourse before running discourse_theme watch. The watch tool will ask you which theme to sync to — select the dev theme, not the production one.
Development workflow:
- Work on the
devbranch locally - Run
discourse_theme watch .and select the BCF-Dev-Theme when prompted - Iterate — changes are visible only to you
- When happy, commit to
devand push - Create a PR from
dev→main - After merging, update the production theme in admin (or let auto-update pick it up)
Quick changes (low traffic):
For minor tweaks during quiet hours, working directly on main is acceptable. Use your judgement based on community activity.
Use the CLI for iterative development, then commit once you're happy with the result. This avoids cluttering the Git history with trial-and-error commits.
The theme includes two colour palettes defined in about.json:
| Field | Value | Purpose |
|---|---|---|
| primary | 333333 |
Dark grey text |
| secondary | ffffff |
White background |
| tertiary | 503F99 |
Purple — links, buttons, accents |
| quaternary | FBB050 |
Orange — secondary accent |
| header_background | ffffff |
White header |
| header_primary | 111111 |
Near-black header text |
| highlight | 5BC3B6 |
Teal — input focus, search highlights |
| danger | C42D39 |
Dark red — errors, delete actions |
| success | 5B8A2C |
Dark green — success messages |
| love | C42D39 |
Dark red — like button |
| selected | e9e9e9 |
Light grey — selected items |
| hover | f2f2f2 |
Very light grey — hover state |
| Field | Value | Purpose |
|---|---|---|
| primary | e0e0e0 |
Light text |
| secondary | 2d2d2d |
Dark background |
| tertiary | 8678C2 |
Confident purple — links, buttons |
| quaternary | FBB050 |
Orange — secondary accent |
| header_background | 202020 |
Darker header |
| header_primary | e0e0e0 |
Light header text |
| highlight | 5BC3B6 |
Teal — input focus, search highlights |
| danger | D44A4A |
True red — errors, delete actions |
| success | A8D381 |
Light green — success (dark text on top) |
| love | E05555 |
Warm red — like button |
| selected | 3d3555 |
Dark purple tint — selected items |
| hover | 3d3555 |
Dark purple tint — hover state |
These are created automatically when the theme is first installed from Git. Set them in Admin > Appearance > Color palettes.
about.json are not synced by discourse_theme watch or Git updates. Colour palettes are only auto-created on initial theme install. If you change a colour value in about.json, you must also update it manually in Admin > Appearance > Color palettes. This applies to both the production and dev themes.
Set in Admin > Appearance > Fonts:
- Base font: Open Sans
- Heading font: Lato
Both are dyslexia-friendly with clear letter differentiation. The brand guidelines specify Livvic, but these were chosen for accessibility. No custom CSS needed — Discourse loads them natively.
The theme requires two components:
- Homepage Feature —
https://github.com/nolosb/discourse-featured-cards(listed inabout.json, may auto-install) - Category Icons —
https://github.com/discourse/discourse-category-icons(see configuration below)
Add both via Admin > Customize > Components > Install and attach them to the BCF-Bespoke-Theme.
Following setting changes are required for this theme to render properly:
top menuneeds to be set to category, latest, new, unread, topdesktop category page styleneeds to be set to Boxes with Subcategories
The old discourse-search-banner theme component has been removed from this theme.
Use Discourse core welcome banner functionality instead:
- Configure your banner from the admin interface using the current Discourse "welcome banner" feature.
- If the old search banner component is still installed on your site, remove it from your active theme/component list.
Colours come from the bc-brand repository (the canonical brand toolkit). See BRAND-NOTES.md in this repo for how brand tokens map to Discourse.
Set the category badge colour for each category in Admin > Categories > [category] > Settings:
| Category | Colour | Hex |
|---|---|---|
| start here | Teal | #54C4B6 |
| course updates | Orange | #FBB050 |
| in action | Red | #EF404E |
| the foundation | Dark teal | #2E8B82 |
| anything else? | Coral | #E8635A |
| digging deeper | Blue | #4495D1 |
| course delivery | Orange | #FBB050 |
| translations | Green | #A8D381 |
| BCF faculty | Purple | #503F99 |
| staff | Dark | #333333 |
| site feedback | Grey | #8E99A4 |
| Outside The Walls | Sky blue | #6BCBDE |
| Partners | Blue | #4495D1 |
Icons are managed via the discourse-category-icons theme component.
Installation:
- Go to Admin > Customize > Components > Install
- Add the Git URL:
https://github.com/discourse/discourse-category-icons - Add the component to the BCF-Bespoke-Theme
Configuration:
In the component settings, set category_icon_list (one per line, format: slug,icon,color):
start-here,compass,#54C4B6
course-updates,bell,#FBB050
in-action,rocket,#EF404E
foundation,building-columns,#2E8B82
anything-else,comments,#E8635A
digging-deeper,microscope,#4495D1
delivering-better,chalkboard-user,#FBB050
translations,globe,#A8D381
bcf-faculty,graduation-cap,#503F99
staff,shield-halved,#333333
site-feedback,lightbulb,#8E99A4
otw,person-hiking,#6BCBDE
partners,handshake,#4495D1
Set svg_icons to:
compass|bell|rocket|building-columns|comments|microscope|chalkboard-user|globe|graduation-cap|shield-halved|lightbulb|person-hiking|handshake
Note: Verify category slugs match your actual slugs in Admin > Categories > [category] > Settings (or from the category URL).