Product intent. todo-application is a simple, single-page todo application. It exists so one person can keep a personal task list on a single page: seeing what is still open, adding new tasks, marking tasks complete, and removing tasks they no longer need. The whole product is one page — there is no navigation, no second screen, and no separate settings or account area.
Audience. The product serves a single active human role, the Todo User: a taste-literate individual who opens the page on a laptop in the morning and again late at night, and who treats the list as a short personal statement about the day rather than as an enterprise work queue. The register is editorial and private, not dashboard-utility.
Scope of this document. This SRD specifies the current, single-page product: its one page, its one persona, its four accepted actions (view, add, complete, remove), the visual and interaction direction, and the technology and non-functional constraints that follow from the sources. Anything beyond that — accounts, sharing, multiple lists, reminders, sync, notifications, analytics — is out of scope and is not introduced here.
todo-application is delivered as a single page with no authentication and no account. The page is anonymously reachable: opening it is the entire entry experience, and the Todo User begins working immediately. There is no sign-in, no sign-up, no invitation, no provisioning step, and no protected destination, because the accepted product has no durable per-actor identity requirement — the list is a personal, single-session artifact on one page.
Actors.
Accepted behavior. Four actions, all on the one page: view the list of tasks, add a task, mark a task complete, and remove a task. Completion moves a task out of the open list into a ruled "DONE" section; removal deletes it. The open-task count is visible at all times and updates as tasks are added or completed.
Ownership. All accepted human-facing behavior is owned by the single first-party page, Todo. There are no provider surfaces, no external destinations, and no headless-only delivery paths in the current product.
Narrow exclusions. No additional pages, no navigation chrome, no accounts or authentication, no multi-user or shared lists, no due dates, priorities, tags, categories, sub-tasks, attachments, or search/filter controls are part of the current product. No persistence beyond what the page itself holds is specified by the sources.
Delivery. The product is a single-page web application. The page is the product: it is anonymously reachable, it renders the hero, the entry sheet, and the task list, and it holds the task state for the session. Because the accepted product has no requirement for a person to privately own or resume durable actor-specific state, and no commitment, entitlement, or value transfer that must remain bound to a specific participant, no application-owned identity is introduced. There is no login page, no registration flow, and no protected area.
Current boundary. Everything described in Sections 3, 5, and 2c is current: the one page, the four actions, the live counter, the DONE section, and the visual and motion direction.
Future boundary. Nothing in the authoritative thread requests future work. No future features are specified, and none are implied by this document. If future work is later requested, it must be added explicitly rather than assumed from the product category.
The page inventory is exactly one page, matching the explicit single-page constraint and the supplied page contract.
The single page of the application. It is the anonymous entry surface and the complete todo lifecycle: viewing open tasks, adding tasks, completing tasks, and removing tasks. It is one cohesive working context with one authoritative state (the task list) and one completion outcome (an up-to-date personal task list).
Information and state
OPEN label.Primary actions
Supporting actions
Domain entities
Component responsibilities
TODAY in roman display type continuing into the italic phrase carrying the live open-task count — and updates the phrase as the count changes.OPEN small-caps label; scales up briefly when a task is added or completed.ENTER ↵ label; owns task creation on Enter.States
Each requirement below is a distinct story point with its provenance, lifecycle facts, and observable acceptance.
FR-1 — View the task list (explicit) As a Todo User, I should see my tasks on the single page so that I know what I have to do.
FR-2 — Add a task (explicit) As a Todo User, I should add a task by typing it and pressing Enter so that it is captured on my list.
FR-3 — Complete a task (explicit) As a Todo User, I should mark a task complete so that my list shows what is finished.
FR-4 — Remove a task (explicit) As a Todo User, I should remove a task I no longer need so that my list stays accurate.
FR-5 — See the live open-task count (explicit) As a Todo User, I should see how many tasks are still open so that I can read the state of my day at a glance.
OPEN label show the current number of open tasks, and the hero sentence's count phrase stays consistent with it.FR-6 — Review completed tasks (explicit) As a Todo User, I should still see my completed tasks so that I can confirm what I finished.
FR-7 — Single-page delivery (explicit) As a Todo User, I should do all of this on one page so that I never have to navigate.
Product context. The Todo User is the only human actor in todo-application. They open a single page on a laptop — typically early in the morning and again late at night — and use it as a private daily ritual rather than a shared work tool. The list is short, personal, and read as a statement about the day. They are taste-literate and notice typography, spacing, and restraint; a generic dashboard would feel wrong to them.
Primary goal. Keep an accurate, up-to-date personal task list on one page: capture what they need to remember, see what is still open, mark off what is done, and delete what no longer matters.
Distinct accepted responsibilities.
Relevant inputs and decisions. The task text they type; the decision of whether a task is done or still open; the decision of whether a task should be deleted rather than completed. They do not supply due dates, priorities, categories, or assignees, because the product does not accept them.
Interactions with other accepted participants. There are none. The Todo User is the sole human participant; the application is the only other actor, and it responds to their actions by updating the list, the DONE section, and the count. No other person is affected by, awaits, or receives anything from this work.
Observable success. The page shows exactly the tasks the Todo User intends to have on it, with the correct split between open and done, and an open-task count that matches the number of open rows.
todo-application in a browser. The page is anonymously reachable; no sign-in or account step occurs.TODAY continuing into the italic count phrase, the oversized open-task numeral with its OPEN label, the full-bleed photographic strip, the white entry sheet, and the task list.Empty case. If there are no tasks, the list area shows muted empty-state copy and the open count reads zero. The Todo User proceeds to Flow 2.
ENTER ↵ label indicates that Enter is the way to submit; there is no add button.The creative direction is authoritative for this section. The muse is Tobias van Schneider, and the headline read is editorial swagger for a single list — enormous type, one hot accent, zero chrome.
Mode. Light mode only.
Color tokens (exact hex, by role).
| Role | Hex | Usage |
|---|---|---|
| Background (paper ground) | #F4F1EA | Warm off-white paper ground; carries roughly 70% of the page |
| Surface | #FFFFFF | Reserved for the single task-entry sheet, so it reads as a physical card laid on paper |
| Text | #0E0E0E | Ink black; all type |
| Primary | #0E0E0E | Ink black; the primary action and all hairlines |
| Accent | #E4321B | Vermilion red; used only for the live counter, the completed strike-through rule, and the destructive delete affordance — never for the main add action |
| Muted | #8C877C | Warm grey; metadata, timestamps, and empty-state copy |
No gradients, no tints, and no soft shadows beyond a 1px hairline.
Typography.
-0.03em tracking and 0.92 line-height, set in mixed case (never all-caps) so the italic swashes read as a magazine masthead.+0.01em tracking; small caps at 11px for labels such as OPEN and DONE.Shape language. Sharp corners everywhere — 0px radius on the entry sheet, the task rows, and the buttons. Structure comes from 1px ink hairlines and full-bleed horizontal rules, not from cards or shadows. The only curve on the page is the italic Playfair swash in the hero. Buttons are rectangles with generous 20px/28px padding. The checkbox is a 22px square with a 2px ink border that fills solid ink when checked, with the task text struck through by a 2px vermilion rule.
Layout. Asymmetric editorial grid: a 12-column page where the hero headline occupies columns 1–9 and bleeds past the right margin; the live open-task counter sits alone in columns 10–12 as an oversized italic numeral; the list itself is a single 8-column measure (max 720px) offset left, with the remaining right columns left intentionally empty as margin. The entry sheet is a full-bleed white band that interrupts the paper ground between the hero and the list. Completed tasks collapse into a ruled DONE section below a heavy 4px ink rule, set 40% smaller with vermilion strikethrough.
Spacing rhythm. Generous editorial breathing room: full-bleed rules and bands define the vertical rhythm rather than card padding; the list measure is offset left so the right columns read as deliberate margin.
Imagery style. Almost none — this is a type-and-rule page. The single visual asset is a monochrome, high-contrast, tightly cropped photographic band (a desk edge, a cup, a hand holding a pen — shot at macro, ink-toned) used once as a 200px full-bleed strip between the hero and the entry sheet, half-covered by the white entry band so it reads as an editorial page break rather than a stock hero. No icons except one 20px ink glyph for delete and the 22px square checkbox; no illustration, no 3D, no emoji.
Forbidden. No blue or indigo primary on white — no #2563EB, #4F46E5, or any bootstrap-blue button. No Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Poppins, or system-ui for any type on the page. No rounded cards with soft drop shadows, no hover-lift on list items, no grid of identical tiles. No gradient-blob or abstract-shape hero backgrounds. No centred headline + subhead + primary CTA stack above the fold. No checkbox rows styled as pill-shaped chips with pastel fills. No emoji as task icons and no celebration confetti on completion. No more than one photographic asset, and no stock photo of a smiling person at a laptop. The generic indigo/blue-on-white SaaS template is forbidden for this project.
The page as a masthead. The first screen is a warm off-white paper field with no hero image at the top. A 96px Playfair Display 900 headline reading TODAY sits flush-left at columns 1–4, and immediately below it, on the same baseline block, the italic Playfair phrase has 7 things to say continues to column 9 — one sentence broken across two type registers, spanning nearly the full viewport width. In columns 10–12, aligned to the headline's cap height, an oversized italic numeral 07 in vermilion is the live count of open tasks, with an 11px small-caps OPEN label beneath it. Below the headline a 1px ink rule spans the full width, then the white entry sheet begins flush to the viewport edges. There is no centred stack, no subhead paragraph, and no button above the fold — the only interactive element in the first screen is a single ink-outlined input line reading Add a task… with a right-aligned ENTER ↵ label.
Signature moves.
TODAY in 96px Playfair Display 900 roman continues on the same line block into has 7 things to say in Playfair italic, so the sentence itself spans columns 1–9 of a 12-column grid and the adjective count updates live as tasks are added.ENTER ↵ as a small-caps right-aligned label instead of a button. Pressing Enter is the only way to add, and the sheet's 1px ink border is the only chrome.DONE section below a 4px rule.This concept only recomposes accepted content, states, and controls: the headline, the count, the entry sheet, the open rows, the DONE section, and the delete affordance. It introduces no new behavior, page, or destination.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
TODAY in roman Playfair Display 900 continuing into the italic count phrase — with the oversized vermilion open-task numeral in the top-right column.cubic-bezier(0.2, 0.8, 0.2, 1). Checking a task plays a 180ms ink fill of the checkbox followed by the vermilion strike-through drawing left-to-right over 260ms, then the row reflows down to the DONE section. Hover on any task row shifts its text 6px right and reveals the delete glyph in vermilion. No bounce, no spring, no particles.ENTER ↵ label — a complete, readable page before any motion runs.NFR-1 — Single-page constraint (explicit) The application must be a single page. All accepted behavior — viewing, adding, completing, and removing tasks — happens on that one page, with no navigation to another page and no additional routes.

7 open tasks on your list.

7 open tasks on your list.
No comments yet. Be the first!