note-maps

module
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 18, 2022 License: Apache-2.0

README

Note Maps

GoDoc Go Report Card Build Status Coverage Status

Note Maps is a personal knowledge base intended for use on mobile devices. Notes are structured a bit like the contents of a dictionary, or the index at the back of a book.

Each note map is a collection of information about a set of topics. Any topic can be described with a set of names, types, and miscellaneous notes that may include definitions, timestamps, or links to images, videos, etc. Topics may be connected to each other through associations, and any association may itself be described as another topic. Even the role played by a topic in an association can, itself, be described as a topic.

This model is isomorphic to the Topic Maps Data Model defined in ISO/IEC 13250-2:2006. With Note Maps, it will be possible to for topic maps to be imported from or exported to standard data formats including XTM (ISO/IEC 13250-3:2013) and JTM (JTM 1.1).

Status: Exploratory. Note Maps is in an experimental stage and is not yet useful for taking notes. Many design and implementation options are being explored.

This is not an officially supported Google product.

Mobile App

The mobile app is a Flutter front end with a UI focused on entering and organizing notes.

Code paths:

  • flutter/nm_app
Roadmap

v0.next:

  • Notes are stored in a structure that might become isomorphic with topic maps, initially supporting at least "occurrences" and "names".
  • Notes can be edited through a rich-text editor.
  • Notes can be deleted.
  • All existing notes can be found.
  • UI includes warnings about the fragility of local data storage.

v0.next+1;

  • Notes can represent "associations" with "roles".
  • Notes can have one or more "types", where each type is a note.
  • Notes can have "scope", where a scope is a set of notes.

Command Line Interface

Emphasis on plain text representations of notes, plausible integration with text editor, and client-side-encrypted peer-to-peer storage.

Code paths:

  • ./cmd
  • ./notes
Roadmap

Development

Install Git Hooks

This repository comes with a Git pre-commit hook in ./githooks. Install it: cp ./githooks/pre-commit .git/hooks/pre-commit.

Manage Git Subtrees

Vendored code goes in the third_party directory, preferably using git subtree. For example:

git remote add third_party/zefyr https://github.com/memspace/zefyr.git
git fetch third_party/zefyr
git subtree add --prefix third_party/zefyr third_party/zefyr master --squash

How to update a subtree:

git fetch third_party/zefyr master
git subtree pull --prefix third_party/zefyr third_party/zefyr master --squash
Development Environment

Requirements:

  • GNU Make

Optional:

  • Flutter. To re-use an existing Flutter installation, create a config.mk file in the root of this repository and set FLUTTER_ROOT to the location of your Flutter installation. However, note the current version of Flutter in FLUTTER_ROOT will be modified by make download.

If you've got the time and the disk space, Nix is a neat way to get a consistent set of build tools for reproducible builds:

  1. Install Nix.
  2. Copy nix/shell.nix to the root of this repository.
  3. In the root of this repository, run nix-shell to launch a shell that includes all build dependencies. The first time this is done, it will take a few minutes.

You can use direnv to make this easier:

  1. install direnv.
  2. In the root of this repository, run cp nix/envrc .envrc and direnv allow.
  3. Optionally install nix-direnv to cache the nix-shell environment.
Building

Most tasks are automated through a GNU Make makefile in the root of this repository:

gnumake format lint test build

Installing and running the Flutter app is best done directly through the flutter command.

cd flutter
cd nm_app
flutter run
Source Code Headers

Every file containing source code must include copyright and license information. This includes any JS/CSS files that you might be serving out to browsers. (This is to help well-intentioned people avoid accidental copying that doesn't comply with the license.)

Apache header:

Copyright 2020 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Directories

Path Synopsis
cmd
flutter
kv
Package kv provides some useful abstractions over local key-value storage.
Package kv provides some useful abstractions over local key-value storage.
badger
Package badger providers a Badger-backed implementation of kv.Txn.
Package badger providers a Badger-backed implementation of kv.Txn.
cmd/kvschema/bindata
Package bindata Code generated by go-bindata.
Package bindata Code generated by go-bindata.
examples/docs
Package docs defines a schema for storing documents in a kv.Txn.
Package docs defines a schema for storing documents in a kv.Txn.
kvtest
Package kvtest provides some utilities to help test packages that use kv.
Package kvtest provides some utilities to help test packages that use kv.
memory
Package memory provides an in-memory implementation of kv.Txn.
Package memory provides an in-memory implementation of kv.Txn.
Package note provides types and functions for interacting with a note maps data storage system.
Package note provides types and functions for interacting with a note maps data storage system.
textile
Package textile uses Textileio ThreadsDB to implement the github.com/google/note-maps/note interfaces.
Package textile uses Textileio ThreadsDB to implement the github.com/google/note-maps/note interfaces.
yaml
Package yaml marshals notes to and from YAML format.
Package yaml marshals notes to and from YAML format.
Package otgen is an experimental and honestly amateur implementation of some ideas mostly misunderstood from various online blogs that have mentioned operational transformations.
Package otgen is an experimental and honestly amateur implementation of some ideas mostly misunderstood from various online blogs that have mentioned operational transformations.
Package tmaps defines a vocabulary of simple types and common constants that related packages can use to share topic maps and topic map items.
Package tmaps defines a vocabulary of simple types and common constants that related packages can use to share topic maps and topic map items.
ctm
Package ctm implements decoding from the CTM format.
Package ctm implements decoding from the CTM format.
ctm/internal/lex
Package lex implements lexing for the CTM data format.
Package lex implements lexing for the CTM data format.
internal/lex
Package lex implements common lexing utilities.
Package lex implements common lexing utilities.
mobileapi
Package mobileapi is intended for use with gomobile.
Package mobileapi is intended for use with gomobile.
pb
Package pb defines protocol buffer message types intended for use in tmaps APIs.
Package pb defines protocol buffer message types intended for use in tmaps APIs.
pbapi
Package pbapi implements an API based on protocol buffer messages.
Package pbapi implements an API based on protocol buffer messages.
tmdb
Package tmdb is an application database library for storing topic maps.
Package tmdb is an application database library for storing topic maps.
tmdb/models
Package models implements storage and retrieval of topic maps in a local key-value store using package kv.
Package models implements storage and retrieval of topic maps in a local key-value store using package kv.
tmdb/models/internal/pb
Package pb includes protocol buffer message types.
Package pb includes protocol buffer message types.
tmql
Package tmql implements decoding TMQL queries.
Package tmql implements decoding TMQL queries.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL