Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/jmcfarlane/notable

Notable - a simple note taking application
https://github.com/jmcfarlane/notable

golang linux macos notes security

Last synced: 2 days ago
JSON representation

Notable - a simple note taking application

Awesome Lists containing this project

README

        

# Notable

[![Go Report Card](https://goreportcard.com/badge/jmcfarlane/notable)](https://goreportcard.com/report/jmcfarlane/notable)
[![GitHub release](https://img.shields.io/github/release/jmcfarlane/notable.svg)](https://github.com/jmcfarlane/notable/releases)
![Build Status](https://github.com/jmcfarlane/notable/actions/workflows/test.yaml/badge.svg)
[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/jmcfarlane/notable/blob/main/LICENSE)

A **very** simple note taking application. It has no dependencies and
ships as a static binary.

![](docs/images/notable.png)

You can view recent changes in the [changelog](CHANGELOG.md).

## Features

- [x] Secure: Everything is local to your computer
- [x] Private: Each note can be encrypted
- [x] Search as you type (tag, tag prefix, and full text index)
- [x] Standalone: You can use it on an airplane
- [x] Keyboard friendly
- [x] Cross platform:
- [x] Linux (amd64, arm6, arm7)
- [x] MacOS
- [x] FreeBSD
- [x] Windows (experimental)
- [x] Distributed writes (*experimental*)
- [x] [Keybase](https://keybase.io/)
- [x] [Syncthing](https://syncthing.net/)
- [x] Autosave (note specific)
- [x] On demand re-indexing (useful for backup/restore)

## Installation

### Linux, FreeBSD, MacOS, Windows

Download and extract the latest
[release](https://github.com/jmcfarlane/notable/releases) version.
The zip file contains an executable named `notable`. The MacOS version also
includes an [app bundle](https://en.wikipedia.org/wiki/Bundle_(macOS)).

### Install from source

```
go install github.com/jmcfarlane/notable@latest
notable
```

### Understanding the build

Notable uses GNU Make and shell scripts for it's build. You can get
some detail on what the build supports by it's `help` target:

```
git clone https://github.com/jmcfarlane/notable.git
cd notable
make help
>> Help info for supported targets:
make all: Produce a binary suitable for local testing only
make build: Produce artifacts via scripts/build.sh (meant for OCI builds)
make clean: Purge the target directory
make coverage: Display code coverage in html
make docker-build-export-target: Perform an OCI build (and export the target dir)
make docker-build: Perform a docker build
make docker-runnable: Create a runnable docker container
make docker-run: Run the most recent runable docker container in the foreground
make help: Print help information
make install: Install using/into the active $GOPATH
make iterate: Build and run with a test db in the foreground
make prepare-release: Prepare all assets for release
make publish-release: Publish a release
make target: Create the target directory
make test: Run go test
make tidy: Tidy makes sure go.mod matches the source code in the module
make uninstall: Uninstall everything from this project
make vet: Run go vet
```

### Compile from source (using known good dependencies)

```
make test vet
make iterate
```

### Run via a [Docker](https://www.docker.com/) container

```
docker run -p 8080:8080 -d -v ~/.notable:/root/.notable jmcfarlane/notable:latest
```

### Build the Docker container and run it locally (ephemeral notes)

```
make docker-runnable
make docker-run
```

## Screenshots

### Keyboard shortcuts

Help can be invoked by the `?` key (when the note content is not
focused).

![](docs/images/help.png)

### Notes can be encrypted individually

![](docs/images/encrypted.png)

### Search via tag, tag prefix, and full text index

![](docs/images/search.png)

### Visual indication of unsaved changes

![](docs/images/unsaved-changes.png)

### Edit content

![](docs/images/edit.png)

### Open multiple notes via tabs

![](docs/images/tabs.png)

## Third party software

| Project | Reason for use |
| ------------------------------------------------------------- | ------------------------- |
| [Ace](https://ace.c9.io/) | Editor |
| [Backbone.js](http://backbonejs.org/) | Javascript framework |
| [bboltDB](https://go.etcd.io/bbolt) | Datastore |
| [Bleve](http://www.blevesearch.com/) | Full text search |
| [Bootstrap](http://getbootstrap.com/) | User interface |
| [Chi](https://github.com/go-chi/chi) | HTTP Router |
| [errors](https://github.com/pkg/errors) | Golang error primatives |
| [go-homedir](https://github.com/mitchellh/go-homedir) | Home directory detection |
| [Golang](https://golang.org/) | Business logic |
| [jQuery](https://jquery.com/) | Dom manipulation |
| [logrus](https://github.com/sirupsen/logrus) | Golang logging |
| [Mousetrap](https://craig.is/killing/mice) | Keyboard bindings |
| [Require.js](http://requirejs.org/) | Dependency management |
| [text plugin](http://github.com/requirejs/text) | Text templates |
| [Underscore.js](http://underscorejs.org/) | Client side templating |
| [uuid](https://github.com/gofrs/uuid) | UUID implementation |