Your notes. Your structure. Live on the web.
A lightweight Python/Flask engine that turns a folder of Markdown files into a fully-featured website. Write, push to GitHub, see it live — no export step, no build pipeline, no CMS.
How it works
Your folder structure maps directly to URL paths — no configuration needed:
| Vault path | URL |
|---|---|
blog/My Post.md |
/blog/my-post |
gallery/Photo.md |
/gallery/photo |
About.md |
/about |
Add website: true to a note's frontmatter and it's live. A note with type: listing auto-generates a paginated post index. A note with type: homepage serves its content at the section root.
What you get
A production-ready site out of the box:
- Wiki-links, callouts, embeds, transclusions — rendered server-side, no plugins
- Server-side Dataview — dynamic post lists and tables from your vault metadata
- Full-text search with tag filtering
- RSS feeds (site-wide and per-section), sitemap, OpenGraph, JSON-LD
- Dark / light mode, reading time, breadcrumbs, related posts, pagination
- Hot-reload — the server detects file changes without restart
See Features for the complete list.
Works with any Markdown editor
OnyxFolio reads plain .md files with YAML frontmatter — it works with any editor that produces them. A plain text editor and git push is all you technically need.
That said, Obsidian is the recommended editor. It's the reference implementation for the syntax OnyxFolio understands: [[wiki-links]], [[wiki-links | display text]], ![[embeds]], > [!callouts], Dataview queries, inline tags, block references, and transclusions. Writing in Obsidian means every feature works as intended, with live preview as you compose.
If you prefer a different environment, the closest alternatives are:
- Foam (VS Code extension) —
[[wiki-links]], backlinks, and graph view; same file format as Obsidian; most syntax compatible - Logseq (Markdown mode) — similar linking model; full feature parity requires Obsidian-style files, not Logseq's default block format
- Zettlr — academic-focused Markdown editor with
[[wiki-link]]support and YAML frontmatter
Basic publishing works everywhere. The richer Obsidian-native syntax (Dataview, transclusions, callouts, block references) is only as good as your editor supports it.
Explore the docs
- Features — complete feature reference
- Getting Started — running locally and with Docker
- Deployment — deploying to production with Coolify
- Architecture — technical architecture and data flow
- Documentation — per-feature reference wiki (every feature in its own note)