grand-todo is a simple single-page todo design: one quiet sheet of paper where a single person writes down tasks, sees them listed, crosses them off, and removes the ones no longer needed. The product intent is deliberately narrow — a single page that owns adding, viewing, completing, and deleting todo items, with no navigation, no accounts, and no surrounding application shell.
The audience is one self-organising individual (the Todo User) who wants the list to feel lighter after using it. The design register is calm and private rather than productivity-hyped: the page gives air, not adrenaline, and the act of crossing things out is treated as the real content.
grand-todo is delivered as a single custom page, Todo, which is the anonymous public entry surface and the only destination in the product. The page owns the complete todo lifecycle for the Todo User:
There is no authentication, no account, no cross-device sync, and no second page. The Todo User is the only active human actor; there are no other personas, no administrative roles, and no differentiated permissions over shared state. All work happens on the one page, in the browser, for the one person using it.
Removed from scope
The product is a single-page, first-party, browser-delivered todo design. The Todo page is publicly reachable with no identity step: the Todo User opens the page and immediately sees the wordmark, the add field, and their list. Because the accepted scope contains no account, no provider-owned work, and no external destination, there is no anonymous-to-protected access boundary to reconcile — the entire product lives inside one anonymous page.
Task persistence is local to the browser: the list is saved automatically on every change and rehydrated on load, so the Todo User's items remain after a page reload or reopening the application. There is no authentication and no cross-device sync; the list belongs to the browser it was written in.
Everything described in this document is current. No future-horizon capabilities are accepted, and none are planned here.
The single page of the product. A centred column of max-width 560px on an unbleached paper ground, with vast top space; the wordmark sits at roughly 22vh rather than at the very top. Order down the column: wordmark line, one-line quiet subtitle, hairline rule, add field with a small square submit, hairline, the list, and a whisper-thin footer line with the remaining count.
Information and state
Primary actions
Supporting elements
clamp(44px, 11vw, 96px), left-aligned to the column.#DED8CC) separating wordmark block, add field, and list.Domain entities
Component responsibilities
#8C5B3F on completion while a 1.5px clay line draws left-to-right through the item text.States
prefers-reduced-motion, the add fade, strike-through draw, and removal fade all become instant state changes.FR-1 — Single-page todo design (explicit) As a Todo User I should get the whole todo experience on one simple single page, so that I never navigate away from my list.
FR-2 — Add a new todo item (explicit) As a Todo User I should add new todo items, so that what I need to do is written down.
FR-3 — View the list of todo items (explicit) As a Todo User I should view my list of todo items, so that I can see what is done and what remains.
FR-4 — Mark a todo item complete (explicit) As a Todo User I should mark todo items as complete, so that the page records what I have finished.
#8C5B3F and a 1.5px clay line draws left-to-right through the item text over 300ms (instant under reduced motion); the item stays in its place; the remaining count decreases by one.FR-5 — Delete a todo item (explicit) As a Todo User I should delete todo items, so that the list only holds what still matters.
FR-6 — Local task persistence (required_inference) As a Todo User I should have my tasks saved automatically and remain available after a page reload and after reopening the application, so that my list survives between visits.
Product context. One self-organising person using a single quiet page to order their day. They arrive with a handful of things on their mind and want them written down, seen, crossed off, and cleared away — nothing more. The emotional register is calm and private: not productivity hype, not a dashboard, but a sheet of paper where a day gets ordered.
Primary goal. A clean, up-to-date single-page list of tasks reflecting what is done and what remains, with the list feeling lighter after use.
Distinct accepted responsibilities.
Relevant inputs and decisions. The text of each task; the judgement of whether a task is done (toggle complete) or should be removed (delete); whether to add another item now or stop.
Interactions with other accepted participants. None. The Todo User is the only active human actor; there is no counterparty, recipient, or administrator. The only other actor is the browser's local storage, which holds the list between visits.
Observable success. The list on the page matches what the Todo User intends: new items appear, completed items are struck through in clay and stay in place, deleted items are gone, the remaining count is accurate, and the same list is there after a reload.
#8C5B3F and a 1.5px clay line draws left-to-right through the item text over 300ms; the item stays in place; the remaining count decreases by one; the change is written to local storage.The visual direction is Emptiness as content, after Kenya Hara: a quiet sheet of unbleached paper where the blank space and the remaining space are the real content.
Palette (light mode)
#F4F1EA — unbleached paper ground, filling roughly 80% of the page.#FBF9F4 — barely-lifted paper surface for the list.#2B2825 — charcoal ink for all type and the single add control.#2B2825 — charcoal ink.#8C5B3F — warm clay, appearing only three times on the whole page: the active checkbox fill, the strikethrough draw-through on completed items, and the thin rule under the wordmark.#8F887C — counts and secondary labels.#DED8CC.Typography
clamp(44px, 11vw, 96px), weight 300, tracking 0.02em.Shape language
Layout
Imagery and texture
Avoid
#FFFFFF or pure black #000000 grounds and type.Readability at every viewport. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit, with no other element covering any part of them. Decoration and texture may be cropped or bled as the direction asks, as long as they cover no readable text or control.
The first screen is a sheet of unbleached paper with almost nothing on it. The word Todos is set in light 96px Zen Kaku Gothic New at roughly 22vh from the top, left-aligned to a 560px column rather than centred, with a single 8px ink circle above it and a one-line quiet subtitle below. Under a hairline rule the add field reads as a written line — a full-width 1px ink underline with placeholder text and a small 20px square submit at the right end, with no box, border-radius, or shadow. Beneath it the first two or three list items sit in 16px charcoal on ruled rows separated only by 1px #DED8CC hairlines.
The dominant element is empty space, then the oversized light wordmark. The only colour on the screen is the clay accent on the first completed item, if any. It could not be mistaken for a generic app hero because there is no card, no gradient, no button, and no centred stack.
Signature moves carried through the page:
clamp(44px, 11vw, 96px) floating in the upper third of the paper ground, left-aligned to the list column, with the top 22vh left completely empty.#8C5B3F on completion while a 1.5px clay line draws left-to-right through the item text over 300ms, the item staying in place.#DED8CC hairlines with 20px vertical padding and no card container, so the list reads as ruled paper.Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
Landing Hero Motion Brief
#F4F1EA; the 8px ink circle and the word Todos at roughly 22vh, left-aligned to the 560px column; the quiet subtitle; a hairline rule; the written-line add field with its small square submit; a second hairline; two or three 16px charcoal list items on ruled rows; the footer whisper line at the right edge reading the remaining count. The top 22vh is empty.prefers-reduced-motion, the add fade, the strike-through draw, and the removal fade all become instant state changes; the composed first frame is unchanged.prefers-reduced-motion.#8C5B3F colour used only for the active checkbox fill, the strikethrough draw-through, and the rule under the wordmark.
A quiet sheet for what is left to do.
3 remaining

A quiet sheet for what is left to do.
3 remaining
No comments yet. Be the first!