Skip to content

docs: reorganize site for easier discovery; remove dead links#3138

Merged
Yeraze merged 1 commit into
mainfrom
docs/reorganize-site-structure
May 22, 2026
Merged

docs: reorganize site for easier discovery; remove dead links#3138
Yeraze merged 1 commit into
mainfrom
docs/reorganize-site-structure

Conversation

@Yeraze

@Yeraze Yeraze commented May 22, 2026

Copy link
Copy Markdown
Owner

Summary

Reorganize the MeshMonitor docs site (meshmonitor.org) so a new user can actually find things. The site had grown to 80+ pages but discovery was rough — the Features sidebar was a flat 25+ item list, Configuration mixed connection setup with HTTPS/auth/hardening, and 10+ pages existed on disk but weren't in any sidebar. This PR tightens structure and cleans up dead links without rewriting page content.

What changed

Grouped sidebars (was: flat lists)

  • Features → Core / Messaging & Channels / Maps & Geography / Network Insight / Automation & Alerts / Administration & Security / Appearance & UX / Protocol-Specific
  • Configuration → Get Started / Connect Your Mesh / Networking & TLS / Authentication & Hardening / Production & Operations / Deployment Guides
  • Development → Getting Started / Architecture / API & Testing / Advanced Topics

Promoted 11 orphan pages (existed on disk, missing from any sidebar):

  • Features: maps.md (the main 19KB Interactive Maps page!), solar-monitoring, custom-themes, system-backup
  • Configuration: fail2ban, duckdns-https, node-load
  • Development: TEST_SUITE, FRONTEND_STRUCTURE, claude-getting-started, BLE_BRIDGE_MIGRATION

Moved internal docs out of /docs root to docs/internal/{dev-notes,meshcore-design,security-review,analysis,release-notes}/. These were already excluded from the VitePress build but cluttered the root for anyone browsing on GitHub. /docs root drops from 26 .md files to 8.

Deleted duplicate docs/development/api.md; merged its quick-start content into docs/development/api-reference.md (the page that actually embeds the Swagger UI).

Tightened ignoreDeadLinks to just /^http:\/\/localhost/. The old config silently matched any URL containing strings like PUSH_NOTIFICATIONS, swallowing real typos. With the new config, vitepress build caught 11 previously-hidden dead links, all fixed here (/development/api/development/api-reference; excluded-doc links rewritten to GitHub blob URLs).

Updated cross-repo references in CLAUDE.md, .devcontainer/README.md, and source-code comments in src/server/meshcoreManager.ts to point at the new docs/internal/ paths.

Build result

✓ building client + server bundles...
✓ rendering pages...
build complete in 10.45s.

No dead links. No errors.

Test plan

  • npm run docs:build succeeds with no dead-link errors
  • npm run docs:dev — manually verify each sidebar group expands/collapses and links resolve
  • Features sidebar shows 7 thematic groups instead of a flat list
  • Configuration sidebar shows 6 groups; HTTPS/auth/hardening live together
  • /features/maps, /features/solar-monitoring, /features/custom-themes, /configuration/fail2ban, /configuration/duckdns-https all reachable from the sidebar
  • /docs/internal/** not reachable from the public site, but still browsable on GitHub
  • CLAUDE.md's "Read order" link to docs/internal/dev-notes/ARCHITECTURE_LESSONS.md resolves on GitHub

🤖 Generated with Claude Code

The MeshMonitor docs site had grown to 80+ pages but new users had a hard time finding things. This commit tightens the structure without rewriting content:

- Group the flat 25+ item Features sidebar into 7 thematic sections (Core, Messaging & Channels, Maps & Geography, Network Insight, Automation & Alerts, Administration & Security, Appearance & UX, Protocol-Specific).
- Group the Configuration sidebar by deployment stage (Get Started, Connect Your Mesh, Networking & TLS, Authentication & Hardening, Production & Operations, Deployment Guides).
- Group the Development sidebar (Getting Started, Architecture, API & Testing, Advanced Topics).
- Promote 11 orphan pages that already existed on disk but were missing from any sidebar: features/maps (the main 19KB maps page!), solar-monitoring, custom-themes, system-backup, configuration/fail2ban, duckdns-https, node-load, development/TEST_SUITE, FRONTEND_STRUCTURE, claude-getting-started, BLE_BRIDGE_MIGRATION.
- Move internal planning/proposal/analysis docs out of /docs root into docs/internal/{dev-notes,meshcore-design,security-review,analysis,release-notes}/. These were already excluded from the VitePress build but cluttered the root for anyone browsing on GitHub. /docs root drops from 26 .md files to 8.
- Delete duplicate docs/development/api.md; merge its quick-start content into docs/development/api-reference.md (the page that actually embeds the Swagger UI).
- Tighten ignoreDeadLinks to just /^http:\/\/localhost/. The old config silently matched any URL containing strings like 'PUSH_NOTIFICATIONS', which swallowed real typos. With the new config, vitepress build catches 11 previously-hidden dead links — all fixed in this commit (rewrote /development/api → /development/api-reference; pointed excluded-doc links at GitHub blob URLs).
- Update CLAUDE.md, .devcontainer/README.md, and source-code comments in src/server/meshcoreManager.ts to reference the new docs/internal/dev-notes/ and docs/internal/meshcore-design/ paths.

Build passes: 0 dead links, 0 errors.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented May 22, 2026

Copy link
Copy Markdown

Claude finished @Yeraze's task —— View job


PR Review: Documentation Reorganization

This is an excellent documentation reorganization effort that significantly improves discoverability. Here's my detailed review:

Todo List:

  • Review VitePress configuration changes
  • Analyze sidebar structure reorganization
  • Check file moves and path updates
  • Verify dead link fixes
  • Review cross-reference updates
  • Assess documentation discoverability improvements
  • Check for any security or performance implications

Overall Assessment: Excellent Changes

This PR successfully addresses the core problem of poor documentation discoverability without breaking functionality.

Positive Changes:

🎯 Improved Structure (docs/.vitepress/config.mts:67-254)

  • Before: Flat 25+ item "Features" list was overwhelming
  • After: 7 logical groups (Core, Messaging & Channels, Maps & Geography, etc.)
  • Impact: Much easier for new users to find relevant sections

📋 Rescued Orphan Pages

Successfully promoted 11 important pages that existed but weren't discoverable:

  • Features: maps.md (19KB!), solar-monitoring.md, custom-themes.md, system-backup.md
  • Configuration: fail2ban.md, duckdns-https.md, node-load.md
  • Development: TEST_SUITE.md, FRONTEND_STRUCTURE.md, etc.

🧹 Clean Internal Organization

  • Moved internal docs from /docs root to /docs/internal/ subdirectories
  • Root directory drops from 26 .md files to 8 - much cleaner for GitHub browsing
  • VitePress properly excludes these via srcExclude (lines 289-299)

🔗 Dead Link Hygiene

  • Tightened ignoreDeadLinks from overly permissive patterns to just localhost
  • The old config silently matched URLs containing strings like PUSH_NOTIFICATIONS
  • Now real typos will surface instead of being hidden

📝 Content Consolidation

  • Deleted duplicate docs/development/api.md
  • Merged useful quick-start content into api-reference.md (lines 9-23)
  • Maintains single source of truth

Code Quality & Best Practices:

VitePress Configuration

  • Clean, well-structured sidebar grouping
  • Proper use of collapsed states for better UX
  • Logical categorization follows user mental models

Path Management

  • All cross-references properly updated to new docs/internal/ paths
  • CLAUDE.md:9, .devcontainer/README.md:563, meshcoreManager.ts:84,2012
  • GitHub blob URLs used for excluded docs (good practice)

Documentation Standards

  • Maintains existing link formats and conventions
  • Preserves all content - purely organizational changes
  • No content rewrites that could introduce errors

Security & Performance:

No Security Concerns

  • Changes are purely organizational/configurational
  • No executable code modifications
  • Internal docs moved but still accessible on GitHub

Performance Impact: Positive

  • Smaller sidebar trees load faster
  • Logical grouping reduces cognitive load
  • VitePress build process unchanged

Test Coverage Considerations:

The PR mentions a test plan but it's not implemented yet. Recommendations:

  1. Critical: Verify npm run docs:build succeeds with no dead-link errors
  2. UX: Test all sidebar groups expand/collapse correctly
  3. Links: Spot-check promoted orphan pages are reachable
  4. GitHub: Verify docs/internal/** links work in repository but not public site

Minor Observations:

  • Line 283: Comment about dead links could be clearer about what constitutes "examples"
  • The groupings are logical but "Administration & Security" could potentially be split if it grows

Verdict: ✅ Approve

This PR delivers exactly what it promises - dramatically improved discoverability without breaking changes. The reorganization follows user-centered design principles and makes the 80+ page documentation site actually navigable for newcomers.

Impact: New users can now find features like Interactive Maps (previously hidden 19KB page!) and fail2ban configuration that were completely invisible in the old flat structure.

@Yeraze Yeraze merged commit 3ee15fd into main May 22, 2026
19 checks passed
@Yeraze Yeraze deleted the docs/reorganize-site-structure branch May 22, 2026 14:21
Yeraze added a commit that referenced this pull request May 22, 2026
…ish (#3145)

Version bump and CHANGELOG entry for 4.6.5. Highlights:

- #3143 MQTT Bridge mirror dashboard (read-only Open button on bridge
  cards; suppresses every TX surface; MqttBridgeManager now exposes the
  Meshtastic-shaped methods the consolidated /api/poll + /api/connection
  endpoints expect).
- #3142 MeshCore Telemetry dashboard tab via source-agnostic Dashboard.
- #3141 MeshCore: preserve LPP channel byte in remote telemetry rows.
- #3140 DM: skip PKI flag when keyMismatchDetected.
- #3138 docs reorganization.
- #3137 unified: merge nodes across sources so labels show in the
  unified Nodes view.
- #3136 mqtt: allow standalone mqtt_bridge as client-proxy target.

CLAUDE.md version line updated to 4.6.5.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Yeraze added a commit that referenced this pull request Jun 18, 2026
… public site (#3534)

Both user-directed security warning pages (security-duplicate-keys, security-low-entropy-keys) were moved under docs/internal/ by #3138 and thus excluded from the VitePress build (srcExclude '**/internal/**'), 404ing their public URLs (incl. the bit.ly short link). Moved both back to the docs root to restore /security-duplicate-keys and /security-low-entropy-keys, added Administration & Security sidebar entries, and repointed automation.md's links to site-relative paths.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant