A WordPress theme for Narcotics Anonymous service bodies — regions, areas, and zonal forums. Drop in the BMLT plugins you already use and the site rebuilds itself around them.
Lantern pairs a warm editorial aesthetic (Fraunces serif on parchment, terracotta accents, sage and gold secondaries) with first-class integration of the BMLT plugin family. Where most NA service-body sites look corporate or generic, Lantern feels considered and human — like a quiet meeting room rather than an enterprise homepage.
Lantern auto-detects and integrates with the following — install only what you need; missing plugins degrade gracefully:
| Plugin | Used for | Where it appears |
|---|---|---|
| Crumb | Meeting finder | Meeting Finder page template |
| Crouton | Meeting finder | Meeting Finder page template |
| Mayo Events Manager | Events listing + submission | Front page + Events template |
| Fetch Meditation | JFT / SPAD readings | Front page "Today" panel + Daily Meditation template |
| NACC | Cleantime calculator | Cleantime template |
| BMLT-Workflow | Meeting update form | For Members template |
| Bread | PDF meeting list | Linked from For Members |
Lantern supports either Crumb or Crouton as the BMLT meeting finder — pick whichever your service body already uses. The Meeting Finder template embeds whichever is active; if neither is installed, the page shows a friendly notice linking to both.
All plugin styling is rebound to the Lantern palette — Crumb via its #crumb-widget host variables, Crouton via its bmlt-* class hooks — so the finder, calculator, and forms inherit the theme without any markup changes.
- Download the latest
lantern.zipfrom releases — or runmake buildfrom this repo. - WordPress admin → Appearance → Themes → Add New → Upload Theme.
- Activate Lantern.
- Appearance → Customize → fill in Service Body, Helpline, and BMLT & plugins.
- Install the BMLT plugins you'd like to use.
- Create pages with the documented slugs (or apply the matching page template from the page editor's Template selector).
Create pages with these slugs and Lantern will discover them automatically:
| Slug | Template | Purpose |
|---|---|---|
meetings (or meeting-finder) |
Meeting Finder | Crumb meeting finder, full-width |
events |
Events | Mayo event list + optional submission form |
cleantime |
Cleantime Calculator | NACC calculator |
daily-meditation (or meditation) |
Daily Meditation | JFT + SPAD tabbed |
helpline |
Helpline | Large clickable number, FAQ |
public |
For the Public | Newcomer / families / professionals / literature |
members |
For Members | Minutes, subcommittees, events, BMLT-Workflow form |
professionals |
For Professionals | Curated NA literature for professionals |
literature |
Literature | Booklets / IPs / Group Readings + e-book retailers |
about |
(default) | About-NA pillar page — linked from hero |
All branding lives in Appearance → Customize:
- Service Body — name, tagline, founded year
- Helpline — phone number, contact email, supporting copy (shown in header, footer, homepage strip)
- Page links — point each themed slot (Newcomer, Members, Cleantime, Meditation, Events, Helpline, For the Public, Families, Professionals, Literature, Minutes, Subcommittees, Meeting changes, Service guides, Printable list, Meeting finder, About) at any page. Slots with no page hide their card instead of dead-linking.
- BMLT & plugins — root server URL
- Homepage copy — every line of homepage text is editable. Click directly on the text in the Customizer preview to jump to its setting. Includes an optional service-body "About us" block (heading + body, basic HTML allowed) that renders before the closing CTA when filled in, and a checkbox to hide the Announcements (journal) section.
- Footer — about blurb, disclaimer, motto / tradition line
- Palette — override Paper, Ink, Ember, or Sage to recolor the entire theme
Menu locations (Appearance → Menus):
- Primary Navigation — main header
- For the Public — footer column
- For Members — footer column
- Footer Links — bottom footer column
- Utility — top-right (reserved)
Lantern ships with a Docker setup that mirrors the rest of the BMLT family:
make dev # docker compose up, watch logs
make install # wp-cli: install WP, activate Lantern + sibling BMLT plugins, scaffold pages
make open # browser to http://localhost:8080 (admin / admin)
make bash # shell inside the WordPress container
make wp CMD="theme list"
make build # produces build/lantern.zip ready for upload
make nuke # wipe DB volume + start overThe compose file mounts the parent directory as wp-content/plugins, so if your ~/workspace/git/bmlt-enabled/ layout has Crumb, Mayo, NACC, etc. as siblings to this repo, they all become available inside the WordPress container automatically.
Visit http://localhost:8080 (HTTP) or https://localhost:7443 (HTTPS) once make install finishes.
bmlt-wp-theme/
├── lantern/ ← the WordPress theme (mounted to themes/lantern)
│ ├── style.css, functions.php, theme.json
│ ├── header.php, footer.php, index.php, page.php, single.php, …
│ ├── front-page.php
│ ├── page-templates/ ← Meeting Finder, Events, Cleantime, Meditation, …
│ ├── inc/ ← customizer.php, template-tags.php, widgets.php
│ ├── assets/ ← css/{theme,plugins,editor}, js/theme.js
│ └── readme.txt ← WP.org-style readme (theme metadata)
├── .github/
│ ├── workflows/ ← release.yml, pull-request.yml, latest.yml
│ └── scripts/ ← release-notes.sh (CHANGELOG.md → release body)
├── Dockerfile ← WordPress beta + PHP 8.3 + xdebug
├── docker-compose.yml ← wordpress + mariadb
├── Makefile ← help / build / dev / install / lint / nuke / …
├── README.md ← you are here
├── CHANGELOG.md ← Keep a Changelog format; release notes pulled from here
├── CONTRIBUTING.md
├── AGENTS.md ← guidance for AI agents working on this repo
└── LICENSE ← GPL v2
Cutting a release is tag-driven: move the ## [Unreleased] entries in
CHANGELOG.md under a new ## [X.Y.Z] - YYYY-MM-DD heading,
bump the version in lantern/style.css / functions.php / readme.txt,
then git tag vX.Y.Z && git push origin vX.Y.Z. GitHub Actions lints,
builds lantern.zip, parses the matching CHANGELOG section, and publishes
the release automatically. Tags containing beta, rc, or alpha are
marked as pre-releases.
See CONTRIBUTING.md.
GPL v2 or later — see LICENSE.