note-maps

module
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2020 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).

A handful of mostly independent implementations are mixed together in this repository. Each focuses on different parts of the problem.

  1. A mobile app
  2. A progressive web app
  3. A command line interface

Mobile App

The mobile app is a Flutter front end with a UI focused on entering and organizing notes. Notes are stored through a Go backend in a Badger database on local storage, where they can be included in system backups.

Code paths:

  • ./kv
  • ./note-maps
  • ./tmaps
Screenshots

screenshot of library page screenshot of topic page with speed-dial actinos screenshot of topic editing page screenshot of browsing page

Roadmap to v0.1
  • Partial Go implementation of deserialization from CTM
  • Partial Go implementation of data storage for topic maps
  • Flutter native channel for communication with data storage
  • Minimal Flutter front-end that uses native channel to communicate with Go
  • Minimal UX research, recorded in this repository at docs/ux.md
  • Wireframe Flutter front-end with navigation
  • Topic maps can be created
  • Names can be created and edited
  • Notes can be created and edited
  • Topics added to a topic map can be reviewed
  • Deletion of topic maps works correctly in the UI
  • Adding, editing, and deleting names and notes works consistently
  • UI includes warnings about data storage, especially deletion
Roadmap to v0.2
  • Associations and roles can be entered
  • Associations involving a topic can be found from the topic page
  • Browsing a topic map supports viewing all data entered in that topic map
Roadmap beyond
  • Topic maps can be exported and imported
  • Data entry is reasonably easy

Progressive Web App

Emphasis on presenting and editing a subgraph of a note map as a structured document using QuillJS.

Code paths:

  • ./js

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 to v0.1

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.

Build the Mobile App

First, you'll need a build environment:

Then, generate the intermediate binaries from the tmaps/mobileapi package:

go generate -tags android ./tmaps/mobileapi
go generate -tags ios ./tmaps/mobileapi
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.

This is not an officially supported Google product.

Directories

Path Synopsis
cmd
note-maps command
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 command
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