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 11 months ago
docs use a screenshot instead of an ASCII drawing 11 months ago
nix add nix packaging 11 months ago
review remove unused stuff everywhere 11 months ago
script interpret ELM_FLAGS correctly 11 months ago
src move Database.Sync to PouchDB.Sync 11 months ago
tests add periodic compaction 11 months ago
vendor vendor custom element builtin 11 months ago
.envrc start using ninja 11 months ago
.gitignore remove more node stuff 11 months ago add another one 11 months ago
config.json add pouchdb-server 12 months ago
default.nix interpret ELM_FLAGS correctly 11 months ago
elm.json first pass at a relative time widget 11 months ago
modd.conf interpret ELM_FLAGS correctly 11 months ago
shell.nix add prettier back 11 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