- Enable navigation.instant, prefetch, progress, content.code.select, content.tabs.link - Fix edit_uri (main→v2), copyright year (2024→2024-2026), consent banner config - Add abbreviations glossary (47 acronyms with hover tooltips via snippets auto-append) - Add tags to all 72 doc pages with consistent taxonomy (audience/module/type) - Add status:new badges to 16 recent feature pages, search:boost to 7 entry pages - Rewrite Architecture page with 5 Mermaid diagrams and full component documentation - Rewrite Troubleshooting page from 5 to 13 sections with actionable checklists - Fix broken links (Monitoring/Contributing pointed to blog placeholder) - Expand Admin Guide roles table from 5 to 11 roles - Create custom 404 page, blog with authors and inaugural v2 announcement post - Fresh Playwright screenshots for login, dashboard, campaigns, users, settings, locations, shifts - Remove 5 test/dev files and orphan template override - Add planning document (DOCS_NEXT_STEPS.md) for future editorial reference Bunker Admin
306 lines
10 KiB
Markdown
306 lines
10 KiB
Markdown
# Documentation Next Steps — Editorial & Material Theme Enhancement Plan
|
||
|
||
**Date:** 2026-03-22
|
||
**Branch:** v2
|
||
**Status:** Planning → Execution
|
||
|
||
---
|
||
|
||
## Executive Summary
|
||
|
||
The MkDocs documentation site is comprehensive (70+ pages, all with proper frontmatter, no stubs) and already uses many Material theme features well (grid cards, admonitions, code copy, mermaid diagrams, social cards, blog plugin, dark/light toggle). This plan focuses on **activating dormant Material theme capabilities** and **editorial polish** to take the docs from "complete" to "professional-grade."
|
||
|
||
---
|
||
|
||
## Step 1: mkdocs.yml Configuration Hardening
|
||
|
||
**Goal:** Enable Material theme features that are available but not configured.
|
||
|
||
### 1a. Add missing theme features
|
||
```yaml
|
||
features:
|
||
# Already enabled (keep):
|
||
- announce.dismiss
|
||
- content.action.edit
|
||
- content.action.view
|
||
- content.code.annotate
|
||
- content.code.copy
|
||
- content.tooltips
|
||
- navigation.footer
|
||
- navigation.indexes
|
||
- navigation.path
|
||
- navigation.prune
|
||
- navigation.tabs
|
||
- navigation.tabs.sticky
|
||
- navigation.top
|
||
- navigation.tracking
|
||
- search.highlight
|
||
- search.share
|
||
- search.suggest
|
||
- toc.follow
|
||
|
||
# ADD these:
|
||
- navigation.instant # SPA-like navigation (no full page reload)
|
||
- navigation.instant.prefetch # Prefetch pages on hover
|
||
- navigation.instant.progress # Show loading progress bar
|
||
- content.code.select # Line selection in code blocks
|
||
- content.tabs.link # Linked content tabs (sync across page)
|
||
```
|
||
|
||
### 1b. Fix consent banner
|
||
The copyright references `#__consent` but no consent config exists. Add:
|
||
```yaml
|
||
extra:
|
||
consent:
|
||
title: Cookie consent
|
||
description: >
|
||
We use cookies to recognize your repeated visits and preferences,
|
||
as well as to measure the effectiveness of our documentation.
|
||
With your consent, you help us improve.
|
||
actions:
|
||
- accept
|
||
- reject
|
||
- manage
|
||
```
|
||
|
||
### 1c. Fix copyright year
|
||
Change `2024` → `2024–2026` in the copyright line.
|
||
|
||
### 1d. Fix edit_uri branch
|
||
Change `edit_uri: src/branch/main/mkdocs/docs` → `edit_uri: src/branch/v2/mkdocs/docs`
|
||
|
||
### 1e. Add abbreviations snippets
|
||
Create `docs/includes/abbreviations.md` and reference via snippets:
|
||
```yaml
|
||
markdown_extensions:
|
||
- pymdownx.snippets:
|
||
auto_append:
|
||
- includes/abbreviations.md
|
||
```
|
||
|
||
Common abbreviations: API, JWT, RBAC, CSV, ORM, SMTP, CORS, SSL, TLS, DNS, CRUD, SSO, SPA, CLI, GUI, QR, GPS, GDPR, CDN, VPS, CGNAT, NAR, CRM, OG, DDoS, SSE, UUID, FOSS, HSTS, CSP
|
||
|
||
### 1f. Add privacy plugin (optional, external resource proxying)
|
||
```yaml
|
||
plugins:
|
||
- privacy
|
||
```
|
||
|
||
---
|
||
|
||
## Step 2: Page-Level Metadata Enhancement
|
||
|
||
**Goal:** Add `tags`, `status`, and `search.boost` metadata to every page.
|
||
|
||
### 2a. Tags
|
||
The tags plugin is loaded but zero pages use tags. Add contextually appropriate tags to every page. Example tag taxonomy:
|
||
|
||
- **Audience:** `admin`, `volunteer`, `user`, `operator`, `developer`
|
||
- **Module:** `influence`, `map`, `media`, `payments`, `broadcast`, `social`
|
||
- **Type:** `guide`, `reference`, `tutorial`, `concept`, `troubleshooting`
|
||
- **Feature:** `campaigns`, `canvassing`, `shifts`, `gallery`, `landing-pages`, `newsletter`, `sms`, `chat`, `events`
|
||
|
||
### 2b. Status badges
|
||
Material supports `status: new` and `status: deprecated` on pages, shown as badges in the nav sidebar. Apply:
|
||
- `status: new` — Recent features (Gallery Ads, People CRM, Achievements, Social Calendar, CrowdSec, SMS, Docs Comments, Payments)
|
||
- `status: deprecated` — Legacy/archival content if any
|
||
|
||
Requires adding to `extra:` in mkdocs.yml:
|
||
```yaml
|
||
extra:
|
||
status:
|
||
new: Recently added
|
||
deprecated: Legacy
|
||
```
|
||
|
||
### 2c. Search boost
|
||
Boost important entry-point pages so they rank higher:
|
||
```yaml
|
||
---
|
||
search:
|
||
boost: 2
|
||
---
|
||
```
|
||
Apply to: Getting Started index, Installation, First Steps, Features at a Glance, FAQ/Troubleshooting.
|
||
|
||
---
|
||
|
||
## Step 3: Abbreviations Glossary
|
||
|
||
**Goal:** Create a shared abbreviations file so that hovering over acronyms shows their meaning.
|
||
|
||
Create `mkdocs/docs/includes/abbreviations.md`:
|
||
```markdown
|
||
*[API]: Application Programming Interface
|
||
*[JWT]: JSON Web Token
|
||
*[RBAC]: Role-Based Access Control
|
||
*[CORS]: Cross-Origin Resource Sharing
|
||
*[SMTP]: Simple Mail Transfer Protocol
|
||
*[CSV]: Comma-Separated Values
|
||
*[ORM]: Object-Relational Mapping
|
||
*[SSL]: Secure Sockets Layer
|
||
*[TLS]: Transport Layer Security
|
||
*[DNS]: Domain Name System
|
||
*[CRUD]: Create, Read, Update, Delete
|
||
*[SSO]: Single Sign-On
|
||
*[SPA]: Single Page Application
|
||
*[CLI]: Command Line Interface
|
||
*[GUI]: Graphical User Interface
|
||
*[QR]: Quick Response (code)
|
||
*[GPS]: Global Positioning System
|
||
*[GDPR]: General Data Protection Regulation
|
||
*[CDN]: Content Delivery Network
|
||
*[VPS]: Virtual Private Server
|
||
*[CGNAT]: Carrier-Grade Network Address Translation
|
||
*[NAR]: National Address Register
|
||
*[CRM]: Customer Relationship Management
|
||
*[OG]: Open Graph
|
||
*[DDoS]: Distributed Denial of Service
|
||
*[SSE]: Server-Sent Events
|
||
*[UUID]: Universally Unique Identifier
|
||
*[FOSS]: Free and Open Source Software
|
||
*[HSTS]: HTTP Strict Transport Security
|
||
*[CSP]: Content Security Policy
|
||
*[BullMQ]: Bull Message Queue
|
||
*[FFprobe]: FFmpeg Probe (media metadata tool)
|
||
*[FFmpeg]: Fast Forward Moving Picture Experts Group
|
||
*[XMPP]: Extensible Messaging and Presence Protocol
|
||
```
|
||
|
||
---
|
||
|
||
## Step 4: Custom 404 Page
|
||
|
||
**Goal:** Branded 404 page instead of browser default.
|
||
|
||
Create `mkdocs/docs/404.md`:
|
||
```markdown
|
||
---
|
||
template: main.html
|
||
title: Page Not Found
|
||
hide:
|
||
- navigation
|
||
- toc
|
||
- footer
|
||
search:
|
||
exclude: true
|
||
---
|
||
|
||
# Page Not Found
|
||
|
||
The page you're looking for doesn't exist or has been moved.
|
||
|
||
[Go to Documentation Home](docs/index.md){ .md-button .md-button--primary }
|
||
[Search](docs/index.md){ .md-button }
|
||
```
|
||
|
||
---
|
||
|
||
## Step 5: Content Fixes — Broken Links & Stale Warnings
|
||
|
||
**Goal:** Fix all broken links, placeholder content, and stale warnings.
|
||
|
||
### 5a. Fix broken "Coming soon" links
|
||
- `docs/index.md`: Monitoring card links to `../blog/index.md` → link to `admin/services/monitoring.md`
|
||
- `docs/index.md`: Contributing card links to `../blog/index.md` → create a contributing stub or remove placeholder
|
||
|
||
### 5b. Fix Architecture page
|
||
Remove "Under Construction" admonition. Flesh out with:
|
||
- Mermaid system diagram
|
||
- Database entity relationship summary
|
||
- Authentication flow (already started)
|
||
- Request lifecycle
|
||
|
||
### 5c. Fix Troubleshooting page
|
||
Remove "Under Construction" admonition. Add more entries from CLAUDE.md and production experience.
|
||
|
||
### 5d. Fix Admin Guide roles table
|
||
Only lists 5 roles but there are 11. Add missing roles:
|
||
BROADCAST_ADMIN, CONTENT_ADMIN, MEDIA_ADMIN, PAYMENTS_ADMIN, EVENTS_ADMIN, SOCIAL_ADMIN
|
||
|
||
### 5e. Social icons semantic fix
|
||
GitHub icon links to Gitea — change icon to `fontawesome/brands/gitea` or `simple/gitea` if available, or use a generic `fontawesome/solid/code-branch`.
|
||
|
||
---
|
||
|
||
## Step 6: Cleanup Test/Orphan Files
|
||
|
||
**Goal:** Remove files that shouldn't be in the docs directory.
|
||
|
||
- `docs/test.md` (41KB test file)
|
||
- `docs/test-page.md`
|
||
- `docs/testing.md`
|
||
- `docs/lander.md` (override template pointer — keep if used by index.md)
|
||
- `docs/main.md` (override template pointer — keep if used)
|
||
|
||
Verify `lander.md` and `main.md` are still needed by checking if any page uses `template: lander.html` or `template: main.html`.
|
||
|
||
---
|
||
|
||
## Step 7: Announcement Bar
|
||
|
||
**Goal:** Use Material's announcement bar for version/status info.
|
||
|
||
Create `mkdocs/docs/overrides/main.html` addition (or modify existing) with announcement block:
|
||
```html
|
||
{% block announce %}
|
||
Changemaker Lite v2 — <a href="docs/getting-started/index.md">Get started in 5 minutes</a>
|
||
{% endblock %}
|
||
```
|
||
|
||
Note: The existing `main.html` override is 35KB — check if it already has an announce block before modifying.
|
||
|
||
---
|
||
|
||
## Step 8: Blog Seeding
|
||
|
||
**Goal:** Create 1–2 initial blog posts so the blog section isn't empty.
|
||
|
||
Suggested posts:
|
||
1. **"Introducing Changemaker Lite v2"** — Overview of the rebuild, what's new, philosophy
|
||
2. **"Why Self-Hosted Campaign Tools Matter in 2026"** — Draws from the Philosophy page
|
||
|
||
---
|
||
|
||
## Step 9: Screenshot Audit
|
||
|
||
**Goal:** Verify all `` references resolve to actual files. Take new screenshots with Playwright where missing or outdated.
|
||
|
||
Pages referencing screenshots:
|
||
- Getting Started index (dashboard.png)
|
||
- First Steps (login.png, dashboard.png, settings-organization.png, campaigns.png, locations.png, shifts.png)
|
||
- Dashboard (dashboard.png)
|
||
- People & Access (users.png)
|
||
- Settings (settings.png)
|
||
- Campaigns (campaigns.png)
|
||
|
||
---
|
||
|
||
## Priority Order
|
||
|
||
| Priority | Step | Impact | Effort |
|
||
|----------|------|--------|--------|
|
||
| **P0** | Step 1 (mkdocs.yml fixes) | High — broken consent, wrong branch, missing SPA nav | Low |
|
||
| **P0** | Step 5 (broken links/content) | High — broken UX | Medium |
|
||
| **P0** | Step 6 (cleanup test files) | Medium — professional appearance | Low |
|
||
| **P1** | Step 3 (abbreviations) | Medium — reader comprehension | Low |
|
||
| **P1** | Step 4 (404 page) | Medium — UX polish | Low |
|
||
| **P1** | Step 2 (tags/status/boost) | Medium — discoverability | Medium-High |
|
||
| **P2** | Step 7 (announcement bar) | Low-Medium — branding | Low |
|
||
| **P2** | Step 8 (blog seeding) | Low — completeness | Medium |
|
||
| **P2** | Step 9 (screenshot audit) | Medium — visual credibility | High |
|
||
|
||
---
|
||
|
||
## Material Theme Reference
|
||
|
||
Key Material docs for implementers:
|
||
- [Setting up tags](https://squidfunk.github.io/mkdocs-material/setup/setting-up-tags/)
|
||
- [Setting up navigation](https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/)
|
||
- [Page status](https://squidfunk.github.io/mkdocs-material/reference/index/#setting-the-page-status)
|
||
- [Search boosting](https://squidfunk.github.io/mkdocs-material/setup/setting-up-site-search/#search-boosting)
|
||
- [Abbreviations](https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-abbreviations)
|
||
- [Cookie consent](https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#cookie-consent)
|
||
- [Custom 404](https://www.mkdocs.org/user-guide/custom-themes/#custom-theme)
|
||
- [Announcement bar](https://squidfunk.github.io/mkdocs-material/setup/setting-up-the-header/#announcement-bar)
|