All Projects → srid → chronicle

srid / chronicle

Licence: other
Forming reliable memories.

Programming Languages

elm
856 projects
HTML
75241 projects
TSQL
950 projects

Projects that are alternatives of or similar to chronicle

Hazama
simple cross-platform diary app
Stars: ✭ 24 (-72.41%)
Mutual labels:  journal
angular-dersleri
En popüler front-end framework'ü Angular 12' i sıfırdan en ileri seviye kadar öğrenin.
Stars: ✭ 27 (-68.97%)
Mutual labels:  spa
ws
scripts for building web projects
Stars: ✭ 13 (-85.06%)
Mutual labels:  spa
Fun.Blazor
Powered by .NET blazor!!! ❤ F#
Stars: ✭ 107 (+22.99%)
Mutual labels:  spa
lm180 iEVE Echoes
a web based tools box for eve echoes
Stars: ✭ 16 (-81.61%)
Mutual labels:  spa
webmarks
remoteStorage-enabled bookmarking app
Stars: ✭ 65 (-25.29%)
Mutual labels:  spa
page-title
A Polymer element for easily updating a webpage's title, such as in a SPA.
Stars: ✭ 13 (-85.06%)
Mutual labels:  spa
SPA-With-Blazor
Creating a Single Page Application with Razor pages in Blazor using Entity Framework Core database first approach.
Stars: ✭ 27 (-68.97%)
Mutual labels:  spa
bizbook-client
The repository of bizbook client project
Stars: ✭ 28 (-67.82%)
Mutual labels:  spa
ui-library
BlaBlaCar React Component Library
Stars: ✭ 37 (-57.47%)
Mutual labels:  spa
EcommerceDDD
Experimental full-stack application using Domain-Driven Design, CQRS, and Event Sourcing.
Stars: ✭ 178 (+104.6%)
Mutual labels:  spa
laravel-vue-spa
Laravel Vue SPA 教程
Stars: ✭ 19 (-78.16%)
Mutual labels:  spa
example-app
Example app showcasing fulls1z3's Angular libraries
Stars: ✭ 27 (-68.97%)
Mutual labels:  spa
ajxnetcore
Its an innovative method to turn an ASP.NET Core Application Into Single Page Application, While enhancing the Software performance both on server and client side.
Stars: ✭ 31 (-64.37%)
Mutual labels:  spa
preact-journal
14k offline-capable journaling PWA using preact, node, MySQL, and IndexedDB.
Stars: ✭ 33 (-62.07%)
Mutual labels:  journal
scaffold
Scaffold for laravel
Stars: ✭ 51 (-41.38%)
Mutual labels:  spa
microfest
Manifest management for single page applications driven by micro frontend apps
Stars: ✭ 14 (-83.91%)
Mutual labels:  spa
create-vuefront-app
Generator for quick VueFront project setup
Stars: ✭ 16 (-81.61%)
Mutual labels:  spa
platzi-exchange
Proyecto del Curso Basico de Vue.js de Platzi 💚
Stars: ✭ 26 (-70.11%)
Mutual labels:  spa
aem-spa-page-model-manager
Interface between Adobe Experience Manager and Single Page Application framework.
Stars: ✭ 26 (-70.11%)
Mutual labels:  spa

chronicle

Deploy (see below)

Chronicle allows you to form reliable memories. It keeps track of a tree of memories that are, ultimately, linked to the factual records recorded at the very moment they happened.

STATUS OF PROJECT: Chronicle is no longer active and has been superseded by neuron, which is based on Zettelkasten. The README below is left as is for historical reasons.

Why do this?

Humans are adept at denialism. The author therefore presumes that only a data-centric approach can be effective at improving human well-being and productivity.

Over a period of data collection, one can't help but gain insights into what actually causes — as opposed to what one remembers or is taught to be causing — one's happiness and unhappiness.

Chronicle explained in detail

The basic idea is to keep track of a tree of memories. Accumulation of data occurs at the level of leaf nodes (individual moments), from which we "fold" the memories up to summarize at the ancestries. Specifically, we fold all moments of the day to summarize for that day, and then fold all days to summarize for that week, then month, year and so on.

All level of summarizations are ultimately linked to the specific moments (thus forming a tree) that can be consulted at any time. We thus create reliable "memories" that are recorded at individual moments (the very moment they happened) without the bias of faulty recall.

There is also the notion of "story" (yet to be implemented) which some moments can belong to. A story is thus linked to the individual moments, and can be consulted when "telling" (to oneself or others) the story later on, and with little bias.

How is the data represented?

Chronicle stores all of its data in PostgreSQL. There are 4 concepts (tables):

Moment

This is what the user records (nothing else); it represents how things were going at that very moment (only) involving no recall or reverie.

Story

This, as the word indicates, is a string of moments forming a "story" to be recalled (or re-told) later. Examples:

  • Work
  • Work at $company
  • India trip 2015
  • Chronicle development

Each moment can belong to at most one story. Some stories, like "India trip 2015", are smart stories in that they are specified using time ranges (thus moments can't explicitly belong to them).

Marks

These are analogous to the colored shapes in my blackboard (cf. Seinfeld productivity hack). The idea is to have basic (SVG?) shapes defined somewhere – in Elm, or database — and let the user specify a list of them to be rendered ultimately in the calendar view. Fields:

  • Shapes: list of shapes
  • Value: numeric value of this mark (used for aggregating in outter folds)

Folds

Each day, week, month, year are summarized as folds. Stories may have their own folds (eg: work fold). Fields:

  • Summary
  • Time range
  • Marks (list of marks, as described above).

The calendar view of folds will be showing these marks (usually just the default one), thus emulating what we have in the blackboard. The user can define custom marks in the Marks table and refer to them in the folds.

Fold can also enable habit tracking (eg: contemplate XYZ every day; with value=0 or 1, accumulating over week/month/etc).

Tech

  • spas (via PostgREST) - automatic REST API for PostgreSQL
  • Elm - client-side language using FRP
  • Bootstrap - HTML/CSS framework

Future use

HACKING

Please note that chronicle is not yet ready for public use.

As the first step, prepare a local postgresql database:

echo "CREATE database chronicle;" | psql
psql -d chronicle < schema.sql
# Optionally load production dump from Heroku (see below) as:
pg_restore -d chronicle -a -t moments latest.dump

Then:

make run  # requires spas cloned and compiled in parent repo
make compile # rebuild Elm sources whenever they change

Database notes

Full schema available in schema.sql. Use \d+ 1.moments to inspect the view.

Use ALTER ROLE <username> SET timezone = 'America/Vancouver'; to set database timezone. This however doesn't automatically change the day end marker from 12am to something custom (like 3am).

To retrieve schema from Heroku Postgres:

heroku pg:backups capture
curl -o latest.dump `heroku pg:backups public-url -a <appname>`

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U srid -d chronicle latest.dump
rm latest.dump
pg_dump -s chronicle > schema.sql
vim schema.sql  # remove odd looking definitions

Elm package ideas

Some new packages I can create by extracing code from this repo:

  • Date formatter
  • Time ago (eg.: 23 secs ago)
  • Search query parser (see src/Search.elm)
  • Bootstrap.elm (maybe use this?)

Deploying to Heroku

  1. Deploy the app using the Heroku button at the top of this README.
  2. Create the database schema using heroku pg:psql --app $APPNAME < schema.sql
  3. Note down the basic auth credentials by inspecting the app environment (eg: heroku config | grep SPAS)
  4. Access the app at the URL: https://${APPNAME}.herokuapp.com/index.html (note the "index.html" suffix that is required).
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].