Turn a folder of Markdown docs (one per repo) into a Figma-like board — read, search,
filter by status, edit every section, and write changes straight back to the real .md files.
AGENTS.md / README.md files are the single source of truth for a project, but
reading them inside the repo you're coding in is a poor experience. repoDocs reads any folder
with .md files, turns modern documents into cards on a board (or a canvas), and lets you:
- Read long docs as separate, collapsible sections.
- Search and filter by status (✅ done · 📌 pending · 🔶 in progress, configurable per project).
- Edit any section in place with live Markdown preview.
- Export / write back the full Markdown to the original .mdfiles.
- Preview a phone-style mock of your app (config-driven, optional).
npm install
npm run dev # scans ./examples → http://localhost:5173It works out of the box with the demo docs in examples/. Point it at your own repos:
cp mdboard.json mdboard.local.json # then edit (mdboard.local.json is gitignored){
"projectsRoot": "../my-projects-folder", // each subfolder with its .md files
"status": [
{ "key": "done", "emoji": "✅", "label": "Completada", "plural": "Completadas", "hint": "completad|listo" },
{ "key": "pending", "emoji": "📌", "label": "Pendiente", "plural": "Pendientes", "hint": "pendiente|falta" },
{ "key": "progress", "emoji": "🔶", "label": "En progreso", "plural": "En progreso", "hint": "en progreso|validad" }
],
"brands": {
"my-projects-folder": { "accent": "#7c5df8", "palette": ["#7c5df8", "#f59e0b"], "stack": ["React Native", "Expo"] }
},
"apps": [ // optional: phone-style previews; empty = hide the 📱 button
{ "forProject": "my-projects-folder", "name": "My App", "screen": { "kind": "party", "title": "🍾 My App" } }
]
}mdboard.json holds the public defaults (commit it). Put everything local/private in
mdboard.local.json (already gitignored).
- Edits always land in the browser first (localStorage, keypb:edits).
- When served by a Vite server (dev/preview), saving a section writes it back to the real .md(POST /__mdboard/writemiddleware) — and the 💾 Save button in the top bar writes the whole document. SetMDBOARD_NO_WRITE=1(or run outside Vite) to keep edits local-only.
- Export / Copy rebuilds the full Markdown with your changes applied, for manual pasting.
- ↺ Reset discards all local edits (never touches files).
- scripts/sync-docs.mjsparses each- .mdinto sections (H1/H2 blocks), detects status from the config emojis and the summary table (kept as a special- summarysection that is regenerated on export rather than edited).
- Edits are stored per line range (src/lib/registry.tsassembleRaw()), so separators and ordering are preserved and the exported Markdown is byte-identical when nothing is edited.
- src/generated/is auto-generated and gitignored — it never commits your private docs.
MIT © 2026 Alejandro Guerrero. Support the project via GitHub Sponsors (see FUNDING.yml).