What does your day feel like?
A linear calendar shows blocks. 9:00 standup. 10:30 deep work. 14:00 lunch. It is a container for commitments. It does not show whether the day is full or spacious, whether you are in a morning sprint or evening wind-down, or whether six tasks can actually fit into the daylight you have left.
I wanted a different view. Not more blocks, but a sense of shape. A day planner that shows available energy instead of only allocated slots.
The spiral metaphor
Kairos is a spiral day planner. Time flows outward from the morning center to the evening edge. The morning sits in the middle — quiet, open, before the day accumulates. As you move outward, hours expand into the afternoon and evening. The spiral makes capacity visible: when tasks start filling the outer rings, the day feels full.
The spiral is not decoration. Every task is drawn as a wedge along its arc, positioned by the time it starts and sized by its duration. If the day is over capacity, a red overflow zone appears past the spiral edge. You see the limit, not just the list.
It uses sunrise and sunset data with real solar calculations — defaulting to Sofia, Bulgaria, where this lab operates. Morning tasks glow warm amber. Evening tasks shift to cool indigo. Task sectors on the spiral pick up the same colors, so the clock face itself tells you whether you are scheduling in daylight or after dark.
How it works
Type a task in natural language: "call dentist tomorrow at 14:00 for 30 min". Kairos parses the date, time, and duration, then places it on the correct day. If you type "draft launch post" with no time, it auto-schedules into the next open slot using a scheduler that respects day bounds, blocked events, and existing fixed tasks.
The stack is Vite + React + TypeScript with Tailwind v4 and Zustand persistence. State stays in the browser — no accounts, no backend, no login. Open the app, plan your day, close the tab. It remembers.
Other touches:
- Moon phase in the "now" marker at night instead of the sun icon
- Geolocation support — the spiral adjusts sunrise/sunset to your position
- Conflict detection when two tasks overlap at a fixed time
- Keyboard shortcuts:
Nfor new task, arrow keys for date navigation
Where it stands
Kairos works. It is deployed at kairos-qcdn.vercel.app and usable on a phone or desktop browser. The core loop — add a task, see it on the spiral, complete it — is smooth and satisfying.
It also has rough edges I am not hiding:
- The auto-scheduler has a trust-breaking bug where tasks can default to 00:00 on the current day instead of the next available slot
- There are no automated tests yet — the scheduler behaviour is proven by manual use, not CI
- A handful of lint warnings exist in the AddTaskModal and RadialClock components
- The app is mobile-width even on desktop, which works but feels unfinished on larger screens
The next upgrade cycle should fix the auto-schedule bug first, then add Vitest tests for the scheduler, then surface the onboarding so a first-time user understands the spiral without guessing.
Why this matters
Most day planners are inventories. You list what you have to do, check boxes, and feel bad about what did not get done. Kairos is an attempt at a different question: not what do I have to do today, but what can I actually fit into the energy and daylight I have.
That is a subtle shift. An inventory lists obligations. A capacity-aware planner asks for a decision. The spiral makes that decision visible — before you commit to a task that does not fit.
The name comes from the Greek word for the opportune moment. The right time for something to happen. Not clock time, but enough time.