Giter VIP home page Giter VIP logo

notemarks's Introduction

logo/full.png

Build Status

A git based labeling app to manage notes, documents, and bookmarks.

notemarks.app

Or try a demo:

  • Demo tutorial: This is a small walk-through of notemarks features.
  • Demo awesome: This demo consists of only one note โ€” the famous awesome readme. The main purpose of the demo is to show how embedded links are accessible in the general search.

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.

Why notemarks?

  • Mixing notes, documents, and bookmarks: My note-taking approach is an interplay of notes, documents (e.g. papers), and bookmarks. For instance, in some cases a note revolves around a bookmark or document, in other cases a note evolves into a collection of links. In notemarks all three can be managed in a coherent system โ€” at least eventually.
  • Hierarchical label system: Hierarchical labeling system are perhaps the most powerful way to structure information. They can do the same as normal file system trees, but at the same time allow to organize things in orthogonal categories. In fact, one of the planned features is to use the file system structure as a built-in label dimension.
  • Access notes & bookmarks from everywhere: Notemarks is entirely web-based. This makes it easy to access ones notes from everywhere. Currently there are no native mobile apps, but I tried to make the web-app mobile friendly so that I can access my notes easily from my smartphone.
  • Full git integration: I love git, and for me, note-taking has to be done in git. However entirely manual pull/commits/push cycles can become a bit tedious. Notemarks provides some convenience to perform these standard steps with just a few mouse clicks.
  • Multi Repository Support: Want to separate your work notes from private notes, or tech notes from cooking recipes? Notemarks supports storing all entities across multiple repositories, which can be enabled/disabled depending on the context.
  • Keyboard friendly UI: Notemarks tries to support standard workflows with keyboard-only input.
  • No vendor lock in / open source: Notemarks is an open-source client layer over plain git repositories. Currently only supports GitHub as git backend, but the way it stores notes, documents, and bookmarks is fully transparent and hackable.

Usage notes

Keyboard shortcuts

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.

Search

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 ๐Ÿ˜‰

GitHub authentication

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.

Internal concepts

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:

  • The .yaml directly correspond to notes/documents and store information such as creation timestamps and associated labels.
  • The link_db.yaml stores internal information on bookmarks like internal titles or associated labels.

Title encoding

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.

Planned features

Feel free to vote on linked issues to help prioritize features.

Short term

Mid term

Longer term

Support

If you like notemarks or want to support its development:

paypal

Thank you! ๐Ÿ™

notemarks's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

notemarks's Issues

Filter search by entry types

Currently the list view shows all entry types with priorities notes > documents > links. This makes it inconvenient to search for links. It would be good to add filtering possibilities for the three categories.

Eliminating need for .notemarks?

Hi!

First up - awesome piece of software ๐Ÿ‘

I love the idea of git backed notes, I am doing this myself with a git repository. I could imagine using notemarks but one thing I think would make it so much easier to adopt is the ability to edit the notes directly from your git web UI - whether it's github, gitlab, any other tool, even command line. I think this could actually be made to work, possibly as an option - basically:

  1. you would probably need to eliminate the "created at" concept (since in git it's hard to really track when a given file was created if it was renamed in the meantime, although I may be mistaken... I am sure some clever way exist to track that, and worst case you can just assume if a file is renamed, tough luck; for me "created at" is not really so super-useful BTW)
  2. just use git to figure out when the note was last updated. The repo carries that information, you don't need to store it twice.
  3. keep tags with the note itself, possibly as frontmatter. e.g. GitHub shows frontmatter nicely, so you would have the added benefit of being able to browse the notes and see the tags on GitHub.

I think making the notes more independent from the UI to manage them is always a big win, as it helps in terms of interop, portability etc. of the notes.

What do you think?

Auto-completion on labels

Currently the label edit field does not auto complete on existing label names. Having auto-completion would be so much nicer.

WYSIWYG editor

Hello! Thanks for making this project open-source! The project is really well-done!

I wonder if it would be possible to implement a Marktext or Typora-style editor for non-tech people? That way, they have an easier time editing without having to learn as much about how Markdown works.

Marktext is FOSS, Typora is not.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.