about

selfalign is an orientation board

A place to hold a small number of intentions for today, work on one of them with a timer, and close the day honestly. It is deliberately small: it is not a notes app, not a project tracker, and not a habit streak.

The one idea

Notion is the context ledger; selfalign is the orientation board. The big picture — projects, people, reasons, checklists, notes — lives in Notion, where meaning has room. selfalign links to it tightly and never duplicates it. What selfalign holds is the part of the picture that is in front of you right now: today's intentions, what you are doing at this moment, the timer, and the close.

The spine

  1. One kind of thing: an intention — a line of text you wrote about what you want to happen. Any scale, but on the board it is almost always today-sized.
  2. Two attributes you actually type. for: zero or more contexts (rows of a Notion database, pinned to a digit and a colour so 3) write the brief or @paper … files an intention with one keystroke). when: today, for now; later a date, a rhythm, or "if life allows".
  3. Everything else is remembered, not set. Added, done, undone, not today, starred, appended, chosen again, released, work started and stopped, day opened and closed — each is an event on the line. Status is what those events fold to. Text edits append; nothing is overwritten, so a day can always be read back as it happened.
  4. No separate types for goals, projects, habits or errands. Those are for, when, and views.

Physics, not policy

A few rules are built into the mechanics rather than left to discipline:

What is on the board

Todaythe day's intentions — add, done, star, append, split, pick "what now"
Nowthe one intention you are working on, and its timer
Timerthe pomodoro / hourglass on its own, full-screen
Boardthe contexts at hand — up to nine, each with a digit and a colour
Timelinepast days, read back from the journal
Closeoutcomes, an "enough" verdict per context, then the day locks

How it is built

The kernel — the intention, the events, the fold, the timer physics — is a small, dependency-free TypeScript library with no knowledge of a browser. The web app on this page is a thin view over it; a command-line tool runs the same kernel in a terminal. Both write to one journal: append-only JSON lines in a plain directory, one file per month, plus a snapshot that a doctor command can always re-derive from the journal.

Hosted here, the journal for each account lives in its own folder on one server behind nginx, and the browser talks to a small Node process at /api. Sign-in is Google's ID-token flow, verified on the server with nothing but Node's own crypto; the session is an HttpOnly cookie. There is no database, no analytics, and no third-party script beyond Google's sign-in button and Google Fonts. Details on data and cookies: privacy.

Two read-only pulls keep the board honest with the rest of one's life: the Projects database in Notion becomes the contexts, and past intentions from intend.do — where this way of working comes from — are imported so the timeline reads back further than the app itself has existed. Nothing is ever written back.

Status

selfalign is a personal tool, in daily use by the person who builds it, and sign-in is currently invite-only. It is a work in progress and this page describes the version that is live.

Updated August 2026.