A client-side viewer for Emacs org-mode files. Renders an org file (or a whole directory of them) as one of three views: an interactive mindmap, a wiki-style page, or a kanban-like “threads” board.
For a long time, I’ve been organizing my brain in org-mode files. I also pick up mind mapping apps from time to time to visualize better.
The hierarchical layout of org-files does fit into something that could work as a mindmap though, so I wanted to check if this could be done.
This is the result.
Currently this allows only to view the files. Editing support is planned for a future version.
Launch the app hosted on github: Org-Mind App
- Clone the repository.
- Install and run project.
npm install
npm run dev -- --openOpen single file– pick a single.orgfile from disk.Open URL– fetch an org file from the web. Defaults to the planning doc for this project on Github.Open org dir– pick a whole directory. The app indexes every.orgfile under it so that[[id:...]]and[[file:...]]links resolve across files. The Wiki view shows a file picker, and the dropdown in the toolbar lets you jump between root-level files.Reload filesappears once a file or directory is loaded, and re-reads from disk in place.
Switch between views with the toggle on the right of the toolbar:
- Wiki – a single org file rendered as a wiki page, with inline link resolution against the loaded org directory. URL hash routing (
#wiki:path/to/file.org) makes pages bookmarkable and the browser back button work. - Map – the original mindmap view: an interactive, expandable/collapsible tree with curved connector lines.
- Threads – a horizontally-scrolling kanban-style board, with one column per top-level heading. Done items are hidden by default; arrow buttons in the header skip horizontally between threads.
Toggle between light and dark mode with the sun/moon button in the toolbar. The choice is persisted.
This is a client-side SPA built on a few modern web APIs, so it needs a recent Chromium-based browser.
Used to mirror layout for nodes on the left vs. right of the mindmap.
@container style(--rol: left) {
.subtopic {
flex-direction: row-reverse;
}
}Used to open a single file or a whole directory from the user’s machine. Will eventually allow saving edits back.
Used to detect when the curved connector lines in the mindmap need to be redrawn.
npm run dev– start the dev servernpm run build– build for GitHub Pages (output indocs/, base path/org-mind)npm test– run the vitest suitenpm run check–svelte-kit sync+svelte-checktype checkingnpm run lint/npm run format– prettier + eslint
Built with SvelteKit 2, Svelte 4, TypeScript, Vite, and SCSS. No runtime dependencies – everything ships as static files.