You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Brian Hicks 5a5dd203a5 add another one 7 months ago
docs use a screenshot instead of an ASCII drawing 8 months ago
nix add nix packaging 8 months ago
review remove unused stuff everywhere 8 months ago
script interpret ELM_FLAGS correctly 8 months ago
src move Database.Sync to PouchDB.Sync 7 months ago
tests add periodic compaction 7 months ago
vendor vendor custom element builtin 8 months ago
.envrc start using ninja 8 months ago
.gitignore remove more node stuff 8 months ago add another one 7 months ago
config.json add pouchdb-server 8 months ago
default.nix interpret ELM_FLAGS correctly 8 months ago
elm.json first pass at a relative time widget 8 months ago
modd.conf interpret ELM_FLAGS correctly 8 months ago
shell.nix add prettier back 8 months ago


This is my implementation of a note-taking app, organized around the following principles:

  • Linking creates structure as necessary. Having to choose a category or folder for notes just makes me tired. I want to write and connect stuff as I think of it. Structure will emerge where it needs to! I should also be able to see all linked/unlinked references to a note.

  • Notes are for me. Sharing is important but secondary, and exporting should be fine in most cases. Note, though, that this means I want importing to work great so I can slurp in stuff from multiple places!

  • Anything I can see, I can edit. There should be as few read-only views in the app as I can manage.

  • Keyboard shortcuts for the win. I want to be able to navigate completely with the keyboard. Vim-ish keybindings, if possible!

  • If I can't organize things I need to do, I'm not going to use the tool. It should handle TODOs nicely (due/defer, mark/complete/cancel, recurrence rules?) It should also be possible to reorder/filter todos in some sort of aggregate view.

  • Aggregate views reveal structure. These look like queries. Maybe I want to see only the first marked TODO in each note? Should be doable.

Keyboard Shortcuts

Shortcut Action Implemented
Alt-Up Move edit cursor up No
Alt-Shift-Up Move node up No
Alt-Down Move edit cursor down No
Alt-Shift-Down Move node down No
Alt-Right Move edit cursor to first child No
Alt-Shift-Right Indent No
Alt-Left Move edit cursor to parent No
Alt-Shift-Left Dedent No
Tab Indent Yes
Shift-Tab Dedent Yes
Enter Split node at cursor Yes
Backspace Join nodes Yes
Esc Stop editing Yes

Interaction Ideas

  • It'd be cool to be able to select/export a group of notes. These could either be viewed in a read-only mode or imported into someone else's database. I guess it would also be possible to structure the export with CRDTs for easy merges.
  • It'd be cool to persistently save a database somewhere shared, but that potentially violates the "no formal structure" principle so it needs to be done carefully.
  • It'd be super slick to do something like idea fight where one could order the children of a node.

Next things to do

Notes to Self

elm-rte-toolkit looks cool, and it may make sense to add it later, but don't go for the complexity now! Keep things simple as long as possible!


Prior Art

  • Roam does bidirectional links amazingly well.
  • Bear has a really nice user experience.


TODO: I need to add this to an in-app page somewhere.

  • chick by Symbolon from the Noun Project