An open API service indexing awesome lists of open source software.

https://github.com/owengage/infinite-monkeys

Experimental rich-text logbook for taking diary like notes.
https://github.com/owengage/infinite-monkeys

diary logbook

Last synced: 2 months ago
JSON representation

Experimental rich-text logbook for taking diary like notes.

Awesome Lists containing this project

README

          

# Infinite Monkeys

Infinite Monkeys is a personal experiment to create a log book for taking daily
or diary like notes.

All other note taking software I have used falls massively short of what I want
from a note-taking application. Most offer fancy rich text editing, and maybe
some light tagging. I want something that can heavily self-reference itself, and
show all information about a topic you've logged about easily.

This is no where near done.

## Technologies

At the moment I intend for the note taking application to be entirely a
web-frontend. It uses the local storage Web API to niavely persist state across
sessions. Not a permanent solution, but good enough for some development.

I'll be using the `contenteditable` attribute to create rich-text editing, and
generally taking advantage of as many modern web APIs as possible. I don't have
an intention at the moment to use an established framework such as Angular,
React or Vue.

## Guiding principles

### Everything is DOM

All information for the log should be stored in the DOM of the log itself, as if
it was pencil and paper. Data can be hidden in attributes of elements, but
everything is in the DOM of the log. There should be no separate storage of
information. Some form of cache to speed up operations would be fine, but the
truth lies in the DOM.

### Referencing

Since everything will be in the DOM, information should be fairly accessible by
referencing other parts of the DOM.

For example, if basic tagging of entries was added to be able to tag things with
information like 'personal' or 'work', then these two tags should have a home in
the DOM (Everything is DOM), and be referenced in order to tag that location.

The tag, that exists in the DOM, can then have arbitrary DOM around it to allow
things like filtering all things with or without that tag, or deleting it and so
on.

## Testing

You can run the tests using `./run-tests.sh`. You can pass extra flags to mocha,
so you can watch test files by doing `./run-tests.sh --watch`.