A git based labeling app to manage notes, documents, and bookmarks.
A git based labeling app to manage notes, documents, and bookmarks.
Or try a demo:
Project status: The app is currently in an early beta status. There will be bugs, and there are many things to improve internally and externally. Nonetheless it has reached a level of basic usefulness 😉. I hope I can stabilize the app over the following weeks.
In the long term it is planned to make keyboard shortcuts configurable. Currently they are:
CTRL+p jumps to the search input — following VSCode conventions.
↑ and ↓ in the search allows to select notes.
ENTER in the search to select note.
CTRL+e toggles between note editing and note viewer.
The label tree allows to include or exclude certain labels. A left mouse click (short press on mobile) selects a label for inclusion, a right mouse click (long press on mobile) selects a label for exclusion.
In general the search prioritizes notes over documents over links. Filter the search by entry type is an obvious TODO 😉
Notemarks can be used without GitHub authentication in read-only mode on public repositories — as is done in the demos. If write-access or read-access to private repositories is needed, it is necessary to authenticate with GitHub. This is currently solved by using GitHub's personal access token feature. In order to create a personal access token you need to go to your GitHub Settings → Developer settings → Personal access tokens → Generate new token. Currently I'm giving the token the repo
status, i.e., Full control of private repositories. I need to investigate if a more fine granular access would work as well.
This access token then needs to be specified in the notemarks settings under GitHub authentication. Note that notemarks will never store the token without encryption. If you want to avoid re-entering the token every time, you can run notemarks with a local encryption password. In this case, notemarks uses strong encryption from webcrypto to store the token securely.
Notemarks operates on plain files in a git repository, and stores all its internal information in a top-level .notemarks
folder (similar to a .git
folder). For instance, if your files are:
.
├── notes
│ ├── Note on bar.md
│ └── Note on foo.md
└── papers
└── Great paper on something.pdf
it will internally create additional meta data files resulting in:
.
├── .notemarks
│ ├── link_db.yaml
│ ├── notes
│ │ ├── Note on bar.yaml
│ │ └── Note on foo.yaml
│ └── papers
│ └── Great paper on something.yaml
├── notes
│ ├── Note on bar.md
│ └── Note on foo.md
└── papers
└── Great paper on something.pdf
There are two kind of meta data files:
.yaml
directly correspond to notes/documents and store information such as creation timestamps and associated labels.link_db.yaml
stores internal information on bookmarks like internal titles or associated labels.Notemarks infers note and document titles directly from their filenames in order to avoid having internal titles different from file system titles. Since some characters like /
are useful characters in a note/document title, it encodes them into close unicode equivalents which are supported by file systems — in case of /
e.g. ⧸ (BIG SOLIDUS). This is mainly tested against POSIX systems so far.
Feel free to vote on linked issues to help prioritize features.
If you like notemarks or want to support its development:
Thank you! 🙏