- Not a service. This has to be durable and portable.
- Backed primarily by git and plaintext files, not a database. Explorable and manageable on the filesystem.
- Markdown
- Hyperlinks to articles that show up red if the page doesn't exist (yet). If a page is renamed, all hyperlinks to it must automatically update.
- Multiple tags / categories can be added to any page. Bonus if it supports hierarchical categories. These get indexed and can be bulk managed. When pages are updated and their tags change, the system automatically handles the bookkeeping.
- Indexed fuzzy search better than grep
- Server + browser interface (mobile friendly). It should also support editing from the browser and saving back to git.
- Native desktop app. Less important, but also enforces that git, files, and a simple set of indices are the core data model.
- Sync over git / github with easy diff fixing
- Publish to a public or private website. Bonus if statically rendered snapshots are supported.
- Despite all of the ancillary indices and support mechanisms, it must remain CLI/vim editing friendly. Indexes and links should update as a post commit hook or async job
- Images and media can be uploaded to a secondary service that handles indexing, hosting, backups, and thumbnail generation. This is a whole set of concerns all on its own.
tl;dr: git + markdown data model with a bunch of bookkeeping, indexing, and tooling on the side
I haven't found a good fit yet, but I haven't explored the entire space. I might just write it one of these days.
Definitely looking for recommendations!
Edit: thanks for the suggestions! :)