← uka.dev

Lite Journal

Lite Journal is a journal that gets out of the way. You write a line, it lands on one clean timeline, and it stays private and searchable for as long as you keep it. It has been live since December 2024, and the core of it is free on the web — litejournal.co (opens in a new tab).

Where it started

It started the way the others did: as a problem in my own work. I wanted somewhere to put a thought without first deciding what kind of thought it was — no notebook structure to design, no folder to choose, no format to commit to. What I actually wanted was a writing surface with a memory. Everything since has been a consequence of that: capture has to be frictionless, and what accumulates has to still be findable years later.

The design is a subtraction

The interface says everything it needs with three ink tiers, four type sizes, one typeface and three corner radii. Hierarchy is carried by text alone — one grey for what matters, a softer one for the body of things, a third for the machinery: dates, placeholders, inactive state.

Emphasis moves up that ladder; it never turns into colour. A selected tag does not go gold, it goes from grey to ink, and that reads louder than a colour would, because nothing else on the screen is competing for the attention. Hue appears in exactly two places and both report state rather than importance: a warning, and a status badge. Neither is available for emphasis.

Radius encodes what a thing is, not how it should feel. 8px behaves like a row, 16px behaves like a card, a full pill is a call to action. Three values, chosen by function, so a shape is a statement instead of a decoration.

The modal had to go

For a long time, writing an entry opened a modal. It worked, and it was wrong: a modal is a decision to leave the page you were on, and journalling is not a task you start — it is something you do mid-sentence. In 2.9.0 every modal composer became an inline compose box, across all of it: entries, travels, films, concerts, workouts. You type where you already are.

What I kept on purpose

Entries are capped at 480 characters. It came up often enough that I went and checked whether the limit was even real, and it was not: the database column is unbounded text with no constraint on it. The cap was a choice, made three times in three files on the client.

I kept it. A cap that short makes you write the thing instead of the essay around the thing, and short entries are the ones that get re-read. What I did change was how it behaves when you reach it. The counter used to turn a destructive red, as though you had broken something; now the notice and the count use a calm amber and the text stays the colour it was. Same limit, no scolding.

The failures worth fixing first

A journal is trusted with things people do not say out loud, so the bugs that mattered here were never the visible ones.

Reduced motion is scoped rather than blanket: transforms and keyframes go, but colour and opacity feedback stays, because a state change you cannot see is its own accessibility problem.

Where it is now

Sixteen releases, counting the first in December 2024, and it is still a small app on purpose. If you want to use it rather than read about it, it is at litejournal.co (opens in a new tab).