Summary
A focused UI/UX improvement effort for docs.miden.xyz addressing the six highest-leverage problems identified through a comprehensive audit. All changes work within Docusaurus v3 patterns — no architectural rewrites.
Audit Findings
Top 5 UX Problems (Priority Order)
| # |
Problem |
Impact |
Type |
| 1 |
Cross-section wayfinding is absent — No mechanism guides users between Build and Core Concepts |
All users navigating between practical and conceptual docs |
Component + content |
| 2 |
Core Concepts landing page is a wall of text — No DocCards, no scannable entry points, confusing version note |
Protocol researchers, anyone entering via Core Concepts nav |
Content + structure |
| 3 |
Version messaging is confusing — Two pages say content is "available in released versions only" without explaining how to switch |
All users, especially on unstable/next version |
Content + component |
| 4 |
Hub pages have broken learning flow — Tutorials category missing sidebar link, hub pages have misleading pagination |
Tutorial users, pagination navigators |
Structure |
| 5 |
No page-level orientation scaffolding — Pages jump into content with no audience, prerequisites, or "what you'll learn" |
First-time users landing via search |
Component + content |
What's Already Good
- Builder landing page has solid DocCard hub structure
- Design system is well-organized (tokens, components, sidebar CSS)
- Theme swizzle wrapper pattern is clean and extensible
DocItem/Layout wrapper is empty — perfect extension point
- Sidebar hierarchy with section labels works well
Implementation Checklist
1. Create SectionLinks component for cross-section wayfinding
Problem: Users in Build docs have no way to discover related Core Concepts pages (and vice versa).
Solution: Reusable React component rendering a styled box with contextual cross-links.
Props:
interface SectionLinksProps {
title?: string; // e.g., "Related Core Concepts"
links: Array<{ href: string; label: string; description?: string }>;
}
Visual: Bordered box with left accent in --color-accent, compact link list, dark theme support. Follows CodeTabs component pattern.
Files:
2. Create VersionNote component for actionable version messaging
Problem: Current :::info Version Note blocks say "available in released versions only" without explaining what that means or how to switch. Two pages use this confusing pattern.
Solution: Reusable component with clear copy: "Development version. {subject} is available in released versions. Select {stableVersion} from the version dropdown."
Props:
interface VersionNoteProps {
subject?: string; // e.g., "Client documentation"
stableVersion?: string; // defaults to "v0.13"
}
Files:
3. Refactor Core Concepts landing page into navigation hub
Problem: The Core Concepts index is a long essay with no DocCards, no scannable entry points, and a confusing version note.
Changes:
Target structure:
# Miden Core Concepts
[1-paragraph framing]
<VersionNote />
## Explore by Topic → [4 DocCards]
<SectionLinks title="Start Building" />
---
## Architecture Overview → [existing content]
## Protocol → [existing content]
## VM → [existing content]
## Compiler → [existing content]
## Node → [existing content]
File: docs/core-concepts/index.md
4. Improve Builder landing page with cross-section links
Problem: No cross-links to Core Concepts, slightly alarming version messaging.
Changes:
File: docs/builder/index.md
5. Enhance DocItem/Layout with front matter metadata scaffolding
Problem: Interior pages lack audience, prerequisites, and learning objectives.
Solution: Use the empty DocItem/Layout wrapper + useDoc() hook to render metadata from front matter fields. Zero rendering when fields absent.
Front matter fields (all optional):
audience: Rust developers
prerequisites:
- Miden CLI installed
- Basic Rust knowledge
what_you_will_learn:
- Create accounts programmatically
- Understand account types
Rendering: Compact bordered container with audience badge + labeled lists. Only appears when fields present.
Files:
6. Fix sidebar and pagination issues
Problems:
- Tutorials is the only sidebar category without a
link property
- Hub pages show confusing Previous/Next pagination across sections
Changes:
7. Add page-level metadata to high-value pages
Apply metadata to 3 key pages to demonstrate and validate the scaffolding:
Design Principles
- Orientation before density — Users should know where they are and where to go within seconds
- Builder and concept flows cooperate — Build explains how, Core Concepts explains why
- Landing pages are hubs, not essays — Cards, paths, entry points over walls of text
- Version state is visible and actionable — Don't just warn, explain what to do
- Small reusable primitives — Components used across sections, not one-off styling
- Keep Docusaurus mental model intact — Swizzled components, front matter, MDX, CSS modules
Dependency Graph
1. SectionLinks component ─┬─→ 3. Core Concepts landing
└─→ 4. Builder landing
2. VersionNote component ──→ 3. Core Concepts landing
5. DocItem metadata ────────→ 7. Page metadata content
6. Sidebar/pagination (independent)
Not In Scope
- Editing
versioned_docs/ or versioned_sidebars/
- Changing
docusaurus.config.ts plugin structure
- Rebuilding site architecture
- Custom routing systems
- Search enhancement (defer to separate effort)
Acceptance Criteria
Follow-up Work (future PRs)
- Add
SectionLinks to interior pages (e.g., smart-contracts/accounts → core-concepts accounts)
- Add page metadata to more pages incrementally
- Improve search placeholder text and empty-state messaging
- Add sidebar badges via
customProps (Tutorial, Reference, Start Here)
- Create "Choose Your Path" decision component for Builder landing
- Fix Get Started title inconsistency ("Quick Start" title vs "Get Started" sidebar label)
Summary
A focused UI/UX improvement effort for docs.miden.xyz addressing the six highest-leverage problems identified through a comprehensive audit. All changes work within Docusaurus v3 patterns — no architectural rewrites.
Audit Findings
Top 5 UX Problems (Priority Order)
What's Already Good
DocItem/Layoutwrapper is empty — perfect extension pointImplementation Checklist
1. Create
SectionLinkscomponent for cross-section wayfindingProblem: Users in Build docs have no way to discover related Core Concepts pages (and vice versa).
Solution: Reusable React component rendering a styled box with contextual cross-links.
Props:
Visual: Bordered box with left accent in
--color-accent, compact link list, dark theme support. Follows CodeTabs component pattern.Files:
src/components/SectionLinks/index.tsxsrc/components/SectionLinks/styles.module.csssrc/components/index.ts— add export2. Create
VersionNotecomponent for actionable version messagingProblem: Current
:::info Version Noteblocks say "available in released versions only" without explaining what that means or how to switch. Two pages use this confusing pattern.Solution: Reusable component with clear copy: "Development version. {subject} is available in released versions. Select {stableVersion} from the version dropdown."
Props:
Files:
src/components/VersionNote/index.tsxsrc/components/VersionNote/styles.module.csssrc/components/index.ts— add exportdocs/core-concepts/index.md— replace:::info Version Notedocs/builder/tools/index.md— replace:::info Version Note3. Refactor Core Concepts landing page into navigation hub
Problem: The Core Concepts index is a long essay with no DocCards, no scannable entry points, and a confusing version note.
Changes:
:::info Version Notewith<VersionNote>component<SectionLinks>cross-linking to Builder docspagination_next: null,pagination_prev: nullTarget structure:
File:
docs/core-concepts/index.md4. Improve Builder landing page with cross-section links
Problem: No cross-links to Core Concepts, slightly alarming version messaging.
Changes:
<SectionLinks>at bottom linking to Core Conceptspagination_next: nullFile:
docs/builder/index.md5. Enhance DocItem/Layout with front matter metadata scaffolding
Problem: Interior pages lack audience, prerequisites, and learning objectives.
Solution: Use the empty
DocItem/Layoutwrapper +useDoc()hook to render metadata from front matter fields. Zero rendering when fields absent.Front matter fields (all optional):
Rendering: Compact bordered container with audience badge + labeled lists. Only appears when fields present.
Files:
src/theme/DocItem/Layout/index.tsx— add metadata renderingsrc/theme/DocItem/Layout/styles.module.css6. Fix sidebar and pagination issues
Problems:
linkpropertyChanges:
sidebars.ts— addlink: { type: "doc", id: "builder/tutorials/rust-compiler/index" }to Tutorials categorydocs/builder/get-started/index.md— addpagination_prev: nulldocs/builder/smart-contracts/index.md— addpagination_prev: null7. Add page-level metadata to high-value pages
Apply metadata to 3 key pages to demonstrate and validate the scaffolding:
docs/builder/get-started/index.md— audience + what_you_will_learndocs/builder/smart-contracts/index.md— audience + prerequisitesdocs/builder/tutorials/rust-compiler/index.md— audience + prerequisites + what_you_will_learnDesign Principles
Dependency Graph
Not In Scope
versioned_docs/orversioned_sidebars/docusaurus.config.tsplugin structureAcceptance Criteria
npm run buildpasses cleanlyFollow-up Work (future PRs)
SectionLinksto interior pages (e.g., smart-contracts/accounts → core-concepts accounts)customProps(Tutorial, Reference, Start Here)