Datler is a personal data platform: capture anything about yourself with almost no friction, build new signals out of what you capture, and analyse it (correlations, regressions, trends) to learn about yourself over time. It is a dashboard for your own life, local-first, on the desktop and the phone (Architecture Overview).
Configurable primitives
Datler does not build diet, exercise and mood as features. It builds a small set of generic primitives, and diet and exercise are configurations of them. There are two axes.
Logging, over time:
- Trackable: a definition of something observed over time (Weight, Emotion, one exercise), with a typed value (Value Types). It is logged directly, computed from others (derived), or holds no value of its own (a tag).
- Entry: one observation of a trackable at a moment. It stores values and stable option codes, never labels, so renaming an option never rewrites history.
Reference, reusable definitions:
- Catalog: a collection (Food, Exercise) that owns the attributes its items fill and the basis they are stated per (Catalog Entities).
- Catalog entity: an item of a catalog, a named definition with structured attributes (the food Egg with its calories and protein). It is not a time series. The bridge between the axes: a trackable’s entries can carry a catalog item and an amount of it in one of their fields (120 g of Oats), and the item’s attributes flow into what the entry contributes, which analysis then reads.
A template is a third shape, and not a catalog item: a named batch of pre-filled entry lines bound to a trackable, whose lines carry that trackable’s own fields. A recipe (Egg & Cheese) and a circuit (Arm Circuit) are templates of things made of parts: logged, each is an entry holding an entry for each part, so every part counts as itself. A workout plan (Push) is a template of an Event, a stretch of time holding what was done during it.
What is built on them
- Tags: a trackable has any number of tags, a tag sits under any number of tags, and a child counts as every tag above it: a graph of membership edges, not a tree of folders.
- Derived Trackables: values computed when read, from other trackables and tags, through formulas that can build on other derived trackables; nothing computed is stored.
- Editor for Several Trackables: pick series, transform them, draw them (lines, a scatter with its line of best fit, a correlation matrix, distributions), and run honest statistics (Pearson’s r with its n and interval, regression, partial correlation, a one-way ANOVA across groups, and a correction for testing many pairs at once), saved as a visualization.
- Frictionless Capture: logging is near-instant everywhere, from one entry panel and a command palette.
- Theming System: six axes of theme, because a tool you live in every day has to look like yours.
- Units & Dimensions: every measured value is stored in its dimension’s base unit; the unit shown or typed is presentation and capture only.
- Profiles: one profile is one self-contained SQLite file, so a throwaway profile and a real one never mix.
- Diet and Nutrition: the worked example of the primitives: a bundled set of foods, your own foods, recipes as templates, meals as Events, daily totals as derived trackables.
Specificity lives in data
- Exercise is a catalog of movements, a record trackable that logs sets, tags, derived trackables for daily and per-tag totals, and templates for supersets (Exercise & Strength).
- Diet is catalogs, templates, entries that carry a food and an amount, and visualizations.
No area of life is special-cased in code. What is specific to food or exercise is data a person (or a module) writes, read by generic code; the test for any file is whether someone who has never heard of exercise or food could read it. Code written for one area would need a twin for every new one, and a feature built once for all of them (a total by an item’s Category: calories by food type, spending by shop) could not be shared.
Stance
Desktop-first and responsive, so the same flows work at phone width; local-first, so every device keeps the whole of a profile and reads only its own copy, with sync between devices on top (Synced Databases).
The notes
Foundations: Glossary · Primitives: Trackable Entry Value Types Tags Derived Trackables Capture Model Presentation Layer · Catalog: Catalog Entities Templates Diet and Nutrition Exercise & Strength · Analysis: Editor for Several Trackables Visualization Persistence · Capture: Frictionless Capture · Design: Theming System Design Tokens Page Specs · Data: Data Model Database Schema