Skip to content

shusingh/Jotdown

Repository files navigation

Jotdown

The sticky notes app that Apple Stickies should have been.

Jotdown does for Stickies what iTerm2 did for Terminal: same familiar shape, an entirely different ceiling. Your notes are still small floating windows on your desktop, drag them, resize them, color them, but inside each one is a real markdown editor with live rendering, interactive checkboxes, syntax-highlighted code blocks, and proper undo. Jot something down; it looks good and stays useful.

No vaults. No projects. No file management. Just notes.

Why not just use Stickies?

Apple Stickies is wonderfully frictionless, and Jotdown keeps everything that makes it great: instant notes, floating windows, colors, zero setup. Then it fixes the ceiling:

Apple Stickies Jotdown
Instant floating notes
Colors, collapse, desktop notes
Todo lists rows of dashes real checkboxes, click to tick, auto-continue on Enter
Structure plain text headings, lists, quotes, dividers, live-rendered
Links plain text clickable, [title](url) or bare URLs
Code snippets plain text fenced blocks, syntax-highlighted in 30+ languages, auto-indent
Formatting fonts menu markdown + a hover toolbar
Your data proprietary archive plain .md files on disk, always readable
Export RTF/plain text Markdown, per note or all at once
Undo basic full history across every edit

And unlike heavier markdown apps (Obsidian, Notion, Bear), there is nothing to set up and nowhere to file things, a note is one keystroke away and lives on your desktop.

Features

  • Live markdown, Obsidian-style: headings, bold, italic, inline code, blockquotes, bullet lists, checkboxes, dividers, code blocks, and links all render in place. Click a line and it reveals its raw markdown for editing; click away and it re-renders. Only the line you're on shows its syntax, the editor is built on CodeMirror 6, the same engine Obsidian uses.
  • Interactive checkboxes: tick a - [ ] item and it checks off with a strikethrough. Lists auto-continue when you press Enter.
  • A real editor underneath: full undo/redo history, cross-line text selection, proper IME input, and the standard macOS editing keys.
  • Proper code blocks: fenced blocks are syntax-highlighted in 30+ languages (js/ts, python, swift, go, rust, sql, yaml, c/c++, java, kotlin, ruby, shell, …), show a small language badge, and auto-indent as you type: Enter after { or def f(): indents the new line, and closers like } snap back out. Forgot to tag the fence? The language is auto-detected from the code and written onto the fence for you (tag a block ```text to opt out). Double-click the empty space below to get out of a trailing code block and onto a fresh line.
  • Formatting toolbar: hover over a note to reveal a compact toolbar (heading, bold, italic, code, checkbox, bullet, quote, divider, link) so you never have to type the syntax yourself. Buttons are selection-aware and toggle cleanly.
  • True sticky windows: borderless desktop notes that follow you across Spaces and layer politely with your other windows (no always-on-top nagging). Drag by the title bar, resize from the edges, collapse to just the bar.
  • Pin a note: click the 📌 in the title bar and that one note stays above your other windows: perfect for a checklist you're working through. Click again to unpin. Pinned state survives relaunch.
  • Six colors, easy on the eyes: the "Linen" palette: soft paper pastels (cream, mist, sage, blush, lavender, stone) instead of the loud classic sticky colors. Gentle enough to live on your desktop all day.
  • Menu bar + Dock: a menu bar item for quick access, a regular Dock icon and main menu (File → New Note ⌘N, Show All Notes). Clicking the Dock icon brings every note forward.
  • Automatic persistence: every note saves as you type (debounced) and restores its content, color, position, and size on relaunch.
  • Safe closing + Markdown export: closing a note asks whether to save it as a .md file first, delete it, or cancel (just like Stickies, but exporting real markdown). File → Export Note as Markdown… (⌘E) exports the focused note any time, and Export All Notes… (⇧⌘E) writes every note into a folder of your choice.
  • Your data is plain text: alongside its internal store, every note is mirrored as a plain .md file in ~/Library/Application Support/Jotdown/markdown/, so your notes are always readable by anything, forever.

Building

Requirements: macOS 13+, Swift 5.9+ (the Xcode Command Line Tools are enough, no Xcode needed).

git clone <this-repo>
cd Jotdown
make install   # builds, packages Jotdown.app, installs to /Applications, launches

Other targets: make bundle (build the .app without installing), make run, make clean.

The editor's JavaScript bundle (Sources/Resources/editor.js, built from editor/) is committed, so swift build alone is enough. Rebuilding it requires Node:

cd editor && npm install && npm run build

To launch it at login, add Jotdown to System Settings → General → Login Items.

Usage

Action How
New note Menu bar icon → New Note
Edit a line Click it (reveals raw markdown)
Finish editing Click below the text or press Escape
Undo / redo ⌘Z / ⇧⌘Z
Format without typing syntax Hover the note → toolbar
Change color Hover the title bar → color dots
Collapse to title bar Yellow dot
Pin a note above other windows 📌 in the title bar (toggles)
Close note (prompts to save / delete / cancel) Red dot
Export note as .md File → Export Note as Markdown… (⌘E)
Export every note File → Export All Notes… (⇧⌘E)
Move note Drag the title bar
Resize Drag window edges

Supported markdown

# H1 / ## H2 / ### H3
**bold**  *italic*  `code`
- bullet
- [ ] task  /  - [x] done
> quote
---            (divider)
[title](url)   and bare URLs
```js … ```    (fenced code blocks, 30+ languages highlighted, auto-indenting)

Architecture

A deliberately small codebase:

  • Swift / AppKit (Sources/*.swift): menu bar app, borderless floating NSWindow per note, JSON persistence with a markdown mirror.
  • The editor (Sources/Resources/note.html + editor.js): a CodeMirror 6 markdown editor with a custom live-preview plugin, rendered in a WKWebView. The JS bundle is vendored (built offline from editor/, committed to the repo), so the app has no network dependency and swift build needs no Node.
  • Swift and JS talk over a WKScriptMessageHandler bridge: the web view reports text/color/drag events; Swift owns the windows and the disk.

See ARCHITECTURE.md for the full internals. Contributions are welcome, start with CONTRIBUTING.md and CODING_STANDARDS.md.

Data location

~/Library/Application Support/Jotdown/
├── notes/      # one JSON file per note (text + geometry + color)
└── markdown/   # plain .md mirror of each note's content

Delete a note in the app and both files are removed.

License

MIT, see LICENSE.

About

The sticky notes app that Apple Stickies should have been: floating macOS notes with a real live-markdown editor (CodeMirror 6), interactive checkboxes, syntax-highlighted code blocks, and plain .md files on disk.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages