Obsidian.md meets many of your requirements (using Dataview and other plugins), but not web API or real-time collaboration (unless you have a good+fast file sync tool and don’t mind a 1-2s update interval).
Obsidian stores notes as markdown text with YAML front matter, and the Dataview plugin allows you to define code blocks that perform queries and format data, using either its query language or embedded Javascript. You can also insert calculated values, and it can use fields from YAML or marked up values in the bodies of notes.
With other plugins you can do drawings (including script-generated ones through an exposed API), kanban boards, mind maps, ebook annotations, etc. Full text search is built in, with a lot of search operators.
Want automation? Macro plugins and user-scripting plugins. Plugins that provide local obsidian:// URLs you can invoke from other programs to fire off commands. Plugins that let you invoke external commands on a note or folder, or launch calculated URIs, on demand. Or write your own plugins in JS. (There’s even a web server plugin, though it’s currently limited to statically serving your repo contents.)
Want collaboration or remote? Use any file sync tool you like. If a file is changed on disk while you’re editing, the changes are detected and merged, and the autosave interval is about 1s, so at least in principle if you had a fast enough file sync tool you could co-edit different parts of the same file. If you’re editing different notes in different panes, the other person’s edits will show up as soon as the file is closed after sync.
None of these parts can compare with something specialized in that area, but a jack of all trades, master of none, is still often better than a master of one. ;-) And it doesn’t hurt that it’s free and extensible.
Hmm, I guess conflict resolution would be garbage, but simultaneous editing is rarely a good experience anyway. Otherwise storing and sharing text files using a file sync service is fairly good compared to other options. Thanks!
Obsidian.md meets many of your requirements (using Dataview and other plugins), but not web API or real-time collaboration (unless you have a good+fast file sync tool and don’t mind a 1-2s update interval).
Obsidian stores notes as markdown text with YAML front matter, and the Dataview plugin allows you to define code blocks that perform queries and format data, using either its query language or embedded Javascript. You can also insert calculated values, and it can use fields from YAML or marked up values in the bodies of notes.
With other plugins you can do drawings (including script-generated ones through an exposed API), kanban boards, mind maps, ebook annotations, etc. Full text search is built in, with a lot of search operators.
Want automation? Macro plugins and user-scripting plugins. Plugins that provide local
obsidian://
URLs you can invoke from other programs to fire off commands. Plugins that let you invoke external commands on a note or folder, or launch calculated URIs, on demand. Or write your own plugins in JS. (There’s even a web server plugin, though it’s currently limited to statically serving your repo contents.)Want collaboration or remote? Use any file sync tool you like. If a file is changed on disk while you’re editing, the changes are detected and merged, and the autosave interval is about 1s, so at least in principle if you had a fast enough file sync tool you could co-edit different parts of the same file. If you’re editing different notes in different panes, the other person’s edits will show up as soon as the file is closed after sync.
None of these parts can compare with something specialized in that area, but a jack of all trades, master of none, is still often better than a master of one. ;-) And it doesn’t hurt that it’s free and extensible.
Hmm, I guess conflict resolution would be garbage, but simultaneous editing is rarely a good experience anyway. Otherwise storing and sharing text files using a file sync service is fairly good compared to other options. Thanks!