Desktop markdown note-taking app (Electron + React) with:
- Filesystem-backed hierarchy at
~/.nim/notes - Folder tree + tabbed documents
- Markdown-first editing: source, split preview, and rendered views
- GFM source editing (lists, tasks, tables, fenced-code highlighting)
- Document outline, in-note find/replace, and formatting shortcuts
- Toggleable autosave
- Local conflict handling for external file edits
- Soft delete to
~/.nim/.trashwith restore
- Node.js 20+
- npm 10+
npm install
npm run devnpm run buildThen start Electron (loads built renderer from dist/):
npm start- src: CodeMirror source with GFM, nested fenced-code highlighting, list continuation, and formatting shortcuts
- split: source on the left, live preview on the right (new default)
- md: editable rendered view
- Outline jumps to headings; preview checkboxes write back to the markdown source
Ctrl+F/Ctrl+Hfind and replace in sourceCtrl+Shift+Vsplit view,Ctrl+Shift+Otoggle outline
~/.nim/notes/markdown notes and folders~/.nim/.trash/soft-deleted files/folders~/.nim/config.jsonapp settings~/.nim/session.jsonopen tabs/expanded folders
npm testRun end-to-end smoke tests (boots Electron and validates core UI chrome):
npm run test:e2eThis command uses npx @playwright/test and does not require a permanent local Playwright dependency.
Run full test suite:
npm run test:allCurrent coverage includes:
- Unit tests for
pathing,autosave, and markdown helpers - Integration tests for app bootstrap and note-open flow
- E2E smoke test for Electron boot + visible shell
npm run package:linux
npm run package:win
npm run package:macArtifacts are written to release/.
- CI workflow:
.github/workflows/ci.yml- runs unit/integration tests, production build, and Electron e2e smoke tests
- Release workflow:
.github/workflows/release.yml- triggers on
v*tags - builds platform installers and publishes to GitHub Releases via
electron-builder
- triggers on
Create a release by pushing a version tag, for example:
git tag v0.1.0
git push origin v0.1.0