A plain-text project tracker powered by Markdown. Your board data lives in a .md file you own — version-controllable, human-readable, and editable in any text editor. The index.html file provides a visual board that reads and writes it directly.
No server. No database. No accounts. One HTML file + one Markdown file.
- Download
index.html - Open it in Chrome or Edge (86+)
- Click Open board and pick the folder containing your
.mdfile (or tryexample.mdfrom this repo) - Changes you make in the board write back to the file automatically
# Board Title
<!-- meta: version=1.0 updated=2026-01-01 tests=42 -->
## Phase Name | done
<!-- sub: Optional subtitle or date range -->
- [x] Done feature :: Optional description
- [~] In-progress feature :: Description [2026-04-15]
- [ ] Pending feature
## Another Phase | active
<!-- sub: Current phase -->
- [ ] Feature with due date :: Description [2026-06-01]
- [ ] Feature without due date
## Notes
Free text notes here. Saved automatically.| Marker | Status |
|---|---|
[x] |
Done |
[~] |
In progress |
[ ] |
Pending |
Append | done, | active, or | pending to any ## heading. The board will auto-derive this from its features when you click — but you can also set it manually in the file.
Add [YYYY-MM-DD] at the end of a feature line (after the description). The board colour-codes them:
- Red — overdue
- Amber — due within 7 days
- Grey — future
- Strikethrough — done (date preserved for reference)
The <!-- meta: key=value ... --> comment is optional. Recognised keys:
| Key | Description |
|---|---|
version |
Shown in the board header |
updated |
Auto-updated on every save |
tests |
Shown in the stats bar |
- Multiple boards — open several project folders as tabs, switch between them
- Click to cycle — click any feature to cycle pending → active → done
- Drag to reorder — drag features within a phase, or drag phases to reorder
- Due dates — colour-coded overdue/soon/future badges
- 5 themes — Dark, Light, Ocean, Amber, plus custom CSS (global override via + CSS)
- Favicon — built-in default; override globally via + Icon or per-project via
.mbconfig - Project plugins — drop a
.mbconfig/folder next to your.mdfile;favicon.svgandtheme.cssinside are loaded automatically when you open that project - Auto-save — every status change writes back to the
.mdfile immediately - Notes field — free-text area saved to the
## Notessection - Zero dependencies — single HTML file, works offline
| Shortcut | Action |
|---|---|
Ctrl+S / Cmd+S |
Save the active board immediately |
Ctrl+Tab / Cmd+Tab |
Switch to the next open board tab |
Ctrl+Shift+Tab / Cmd+Shift+Tab |
Switch to the previous open board tab |
Enter / Space |
Cycle status on the focused feature (keyboard navigation) |
Place a .mbconfig/ folder next to your .md file. When you open the project folder in MarkBoard, any supported files inside are loaded automatically:
my-project/
board.md
.mbconfig/
favicon.svg ← custom favicon (also: .png, .ico, .jpg)
theme.css ← custom CSS theme
Plugins are per-project: switching between board tabs applies each board's own .mbconfig. When no board is open, global overrides (see below) take effect.
Per-project: put theme.css in .mbconfig/ — loaded automatically when you open that project folder.
Global override: click + CSS in the theme bar and pick any .css file. Remembered across sessions via localStorage.
The theme format is a single CSS block targeting [data-theme="custom"]:
/* theme.css */
[data-theme="custom"] {
--bg: #1e1e2e;
--surface: #181825;
--surface2: #313244;
--border: #45475a;
--accent: #a6e3a1;
--accent-dim: #1e3a2e;
--accent2: #fab387;
--accent2-dim: #3d2010;
--blue: #89b4fa;
--red: #f38ba8;
--muted: #6c7086;
--text: #cdd6f4;
--text-dim: #a6adc8;
--radius: 10px;
}Any omitted variables fall back to the dark theme. You can also include arbitrary CSS rules to customise individual components. To reset the global override, call clearCustomTheme() in the browser console.
Per-project: put favicon.svg (or .png, .ico, .jpg) in .mbconfig/ — loaded automatically.
Global override: click + Icon in the theme bar and pick any image file. Remembered across sessions via localStorage. To reset, call clearFavicon() in the browser console.
Chrome or Edge 86+ (uses the File System Access API to read and write local files). Firefox does not support this API.
Because your board data is a plain .md file, you can commit it alongside your code:
git add tracker.md
git commit -m "docs: mark search feature as done"Diffs are human-readable. You get a full history of your project progress.
The .mbconfig/ folder can be committed too, so your favicon and theme travel with the repo:
.gitignore
board.md
.mbconfig/
favicon.svg
theme.css
Parts of this project were developed with the assistance of AI coding tools (Claude by Anthropic). All AI-generated code has been reviewed, tested, and is the responsibility of the project maintainers.
MIT — see LICENSE

