Go back
Text size

fullstack · Feb 2026

Clara

Clara connects tasks, notes, and focus sessions so the time spent doing the work becomes part of the plan.

Visit the project
Dashboard 2 project view
Dashboard 2

A to-do list can tell you what you forgot

It is much worse at telling you what your week felt like. Ten ticked boxes might mean a calm afternoon or three frantic days held together by coffee. Most productivity software records the plan and quietly loses the doing.

Clara started with a small question: what if the timer, task, note, and weekly picture were parts of the same object? It is a focused workspace for planning work, getting into it, and seeing where the time really went afterwards. Not where the calendar hoped it would go. Where it went.

One small object holds the week together

Clara calls an area of work a sector. University can be one. Reading, running, client work, or the side project that has somehow become a second job can be others. A sector owns its tasks and notes, and every focus session points back to one.

That connection is the system. Move a task across the board and its context stays intact. Start a timer from that task and the resulting session already knows what it belongs to. Open the dashboard later and Clara can separate four hours of writing from forty minutes of administrative shuffling without asking for another round of tags.

DashboardDashboardKanban boardKanban boardTask timerTask timer

The board is deliberately ordinary

Tasks move from backlog to to-do, in progress, and done. They can have a deadline, priority, and a rough size. None of this is novel on its own, which is rather the point: the board should disappear quickly enough for the work to begin.

The useful difference is what happens around it. Completing a task updates the sector’s progress. Focusing on it creates a timed session. The dashboard can then compare work completed with time spent instead of pretending those are interchangeable.

The timer is not a stopwatch taped on top

A focus session can begin from a task, from the focus view, or from the command palette. It can use a pomodoro rhythm or run freely. Either way, the session keeps its sector, optional task, start time, pauses, and eventual duration. When it ends, that record becomes part of the activity view immediately.

The delicate part is making a timer feel local without making it fragile. The ticking display lives in the browser so it responds instantly. Its durable state is saved behind the scenes, checkpointed while it runs, and reconciled when the page returns. Refreshing the tab should not produce the productivity equivalent of “new phone, who dis?”

The command palette calls the same actions as the visible controls. It is not a decorative shortcut menu with a smaller feature set. Starting a session with the keyboard and starting it with the timer button produce the same session record and the same eventual history.

Cmd+k navigationCmd+k navigation

A session becomes evidence, not a score

Each finished session is a small, plain fact: this person worked on this task, in this sector, for this long. Clara rolls those facts into a line showing total focus, a row of active days, sector breakdowns, calendar history, and the list of sessions underneath. The weekly, monthly, quarterly, and yearly views are different windows over the same records.

Focus timeFocus time

The empty days matter as much as the busy ones. Clara does not invent a streak where none exists or turn a quiet Tuesday into a moral failure. The aim is observability: enough history to notice that reading gets squeezed out, that one client consumes every afternoon, or that supposedly tiny tasks keep taking an hour.

Quiet at the surface, strict underneath

The interface is built with Next.js and TypeScript. Supabase handles accounts, Postgres storage, realtime updates, and the database rules that keep one person’s workspace invisible to everyone else. The model stays compact: people own sectors; sectors organise tasks and notes; sessions connect the person, sector, and optional task.

Realtime subscriptions keep task boards in agreement when more than one view is open. Shared types keep the browser and server honest about the shape of a session. The timer’s local state is checked against the stored record when the app resumes, because a calm interface is not very calming if closing a laptop loses forty-seven minutes of work.

The product has to know when to stop

Clara is live, and the tempting list of additions is long: shared workspaces, calendar blocking, mobile support, better task breakdowns, smarter summaries. The harder job is restraint. A feature earns its place only if it makes starting the work easier or makes the week clearer afterwards.

That is the standard I keep returning to. Clara should remember enough that the user does not have to, then get out of the way.

© 2026 Charlie Piper. All rights reserved.