No description
  • JavaScript 98.8%
  • HTML 0.8%
  • Dockerfile 0.2%
  • Shell 0.2%
Find a file
LostSynapse 2f7cc19c13
All checks were successful
build / Test (push) Successful in 2m51s
build / Build, smoke test and push image (push) Successful in 6m7s
docs: add self-hosting guide and reference Kubernetes manifests
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 11:44:46 -04:00
.forgejo/workflows build: add multi-arch container image and Forgejo build workflow 2026-09-17 11:44:46 -04:00
.githooks docs: document commit conventions, test gates, and local git hooks 2026-08-10 21:02:21 -04:00
.github/workflows chore: bump CI actions off the deprecated Node 20 runtime 2026-06-20 02:01:15 -04:00
assets fix: bundle fonts so the font picker works offline and on flathub 2026-05-09 11:55:26 -04:00
build Sticky Notes — Ubuntu/macOS Electron desktop app 2026-04-17 17:33:30 -04:00
deploy docs: add self-hosting guide and reference Kubernetes manifests 2026-09-17 11:44:46 -04:00
flatpak chore: add v2.2.1 metainfo release entry 2026-08-11 22:08:13 -05:00
readme-assets Refresh README screenshots — hero, terminal, flat, closeup 2026-04-18 13:32:54 -04:00
server feat: add self-hosted server with per-user notes and conflict-checked saves 2026-09-17 11:44:46 -04:00
tests feat: add self-hosted server with per-user notes and conflict-checked saves 2026-09-17 11:44:46 -04:00
tests-e2e feat: include images in backups and copied notes 2026-08-11 19:59:08 -05:00
vendor feat: render Mermaid diagrams in code fences 2026-08-10 20:39:03 -04:00
.dockerignore build: add multi-arch container image and Forgejo build workflow 2026-09-17 11:44:46 -04:00
.gitignore feat: add self-hosted server with per-user notes and conflict-checked saves 2026-09-17 11:44:46 -04:00
app.jsx fix: make markdown headings clearly larger than body text 2026-08-11 22:08:13 -05:00
build-icons.mjs Sticky Notes — Ubuntu/macOS Electron desktop app 2026-04-17 17:33:30 -04:00
CHANGELOG.md chore(master): release 2.2.1 2026-08-12 03:08:31 +00:00
components.jsx feat: add self-hosted server with per-user notes and conflict-checked saves 2026-09-17 11:44:46 -04:00
CONTRIBUTING.md docs: expand the contributing guide for outside contributors 2026-08-12 08:44:36 -05:00
Dockerfile build: add multi-arch container image and Forgejo build workflow 2026-09-17 11:44:46 -04:00
hooks.jsx feat: add self-hosted server with per-user notes and conflict-checked saves 2026-09-17 11:44:46 -04:00
index.html feat: paste images into notes 2026-08-11 00:48:47 -04:00
LICENSE Add MIT license 2026-04-17 18:33:34 -04:00
main.js feat: include images in backups and copied notes 2026-08-11 19:59:08 -05:00
package-lock.json chore(master): release 2.2.1 2026-08-12 03:08:31 +00:00
package.json feat: add self-hosted server with per-user notes and conflict-checked saves 2026-09-17 11:44:46 -04:00
preload.js feat: include images in backups and copied notes 2026-08-11 19:59:08 -05:00
README.md docs: add self-hosting guide and reference Kubernetes manifests 2026-09-17 11:44:46 -04:00
storage.js feat: include images in backups and copied notes 2026-08-11 19:59:08 -05:00
utils.jsx feat: include images in backups and copied notes 2026-08-11 19:59:08 -05:00

Sticky Notes banner

→ Try the web demo

Sticky Notes

A sticky notes app for Linux (yes, for Linux too!) and macOS that doesn't look like it escaped from a 2006 GNOME panel.


Why this exists

For ten years I've been looking for a sticky notes app for Ubuntu that I could actually stand to look at.

Every one I tried fell into one of two camps:

  • Pretty but useless. Beautiful rounded corners, lovely typography, three features — one of which is "change the color of the note."
  • Useful but ugly. Tabs! Folders! Tags! Wiki-links! Markdown! Rendered in fonts last updated when Firefox had a phoenix logo.

I wanted both. I couldn't find it. So I built it in a day with Claude Design and Claude Code.

This is that app. It runs on Linux, macOS, and in the browser.


Screenshots

Your whole desk, at a glance. Pan, zoom, and drop notes wherever they feel right. Link two notes by clicking the link icon on one and then the other — connections show up as dashed arrows on the canvas.

Workspace overview

Folders that aren't an afterthought. Colored folder badges, per-folder note counts, and a drawer that actually gets out of the way when you want it to.

Three looks — because a 2pm notes session and a 2am notes session are not the same notes session.

Paper is the default. Flat if you want something quieter. Terminal if you've made peace with what you are.

Flat theme Terminal theme
Flat Terminal

Close up. Markdown body, link arrows, color-coded folder badges. Click the red pushpin in a note's header — pinned notes follow you into every folder, so the important stuff is always one click away.

Close-up of notes with link arrow


What it does not do

  • Sync to the cloud. (I may add this. I also may not.)
  • Collaborate in real time. These are sticky notes.
  • Send you notifications. These are sticky notes.
  • Parse your notes with a large language model to surface insights. These are sticky notes.

Design principles

A short list, because the whole point of this project is that somebody should have written one:

  1. It should be pleasant to open. If the app is ugly, I won't use it, and then none of the features matter.
  2. Features should earn their place. Every toolbar button is a small betrayal of the reader's attention.
  3. The canvas is the interface. Not a sidebar. Not a list. The notes, where you put them.
  4. Escape hatches everywhere. Keyboard shortcut for the common things. Drag-and-drop for everything. Your notes are a JSON file you can read with cat.

Install

Easiest path on Ubuntu — install from the Snap Store, auto-updates included:

sudo snap install sticky-notes-canvas

Or grab the latest from Releases and pick the file for your platform:

Platform File How to install
Ubuntu / any distro with snapd (Snap Store) sudo snap install sticky-notes-canvas
Ubuntu / Debian sticky-notes-canvas_<ver>_amd64.deb sudo dpkg -i sticky-notes-canvas_<ver>_amd64.deb
Linux (portable) Sticky Notes-<ver>.AppImage chmod +x and double-click — no install needed
macOS — via Homebrew (tap) brew install --cask faridjaff/tap/sticky-notes-canvas
macOS — Apple Silicon (M-series) Sticky Notes-<ver>-arm64.dmg mount → drag to /Applications
macOS — Intel Sticky Notes-<ver>.dmg mount → drag to /Applications

Note for macOS

The macOS builds are not code-signed. If your Mac refuses to open the downloaded app, build from source instead — instructions below.

Web (no install)

Hosted version: https://faridjaff.github.io/StickyNotesCanvas/. Each visitor's notes live in their own browser's localStorage — separate from any other browser, separate from the desktop app. Survives refresh; cleared if you wipe site data.


Build from source

Prerequisites

  • Node.js 20+ and npm
  • macOS only: Xcode Command Line Tools — xcode-select --install
  • Linux only: nothing extra; electron-builder fetches fpm (for .deb packaging) on first build

Clone and install

git clone git@github.com:faridjaff/StickyNotesCanvas.git
cd sticky-notes-canvas
npm install

Build and install

Linux

npm run build:linux
sudo dpkg -i "dist/sticky-notes-canvas_$(node -p 'require(\"./package.json\").version')_amd64.deb"

The app appears in your Activities menu as Sticky Notes. To uninstall later: sudo apt remove sticky-notes-canvas.

macOS

npm run build:mac
cp -R "dist/mac-arm64/Sticky Notes.app" /Applications/

(Use dist/mac/Sticky Notes.app instead if you're on an Intel Mac.)

Launch from Spotlight (Cmd+Space → "Sticky Notes") or from Launchpad. To uninstall later, drag the app from /Applications to the Trash.


Self-hosted server

This fork adds a container that serves the web app with notes stored on the server, one board per user signed in through a reverse proxy (Authentik). Multi-arch images are built by .forgejo/workflows/build.yaml. See deploy/README.md.

DEFAULT_USER=me npm run serve

Where your notes live

Path
Linux ~/.config/sticky-notes-canvas/notes.json
macOS ~/Library/Application Support/sticky-notes-canvas/notes.json
Browser localStorage key stickies.all
Self-hosted server $DATA_DIR/users/<username>/notes.json

The JSON format is identical across all three — copy the file from one machine to another and your notes come with it.


License

MIT — © 2026 faridjaff. Designed with Claude Design and engineered with Claude Code. Built in a day. Tested over the course of a decade of quietly being annoyed.