gentle-start is a simple calculator delivered as a single-page design. Its entire product intent is one page, one job: a person opens the page, enters numbers and operators on an on-screen keypad, and reads a correct arithmetic result. There is no navigation, no account, no marketing surface, and no second screen.
The audience is anyone who needs arithmetic in the moment — students, shoppers, freelancers, parents — and the product is designed to feel unhurried, humane, and quietly trustworthy: a well-made notebook page rather than a fintech instrument panel. Warmth and legibility matter more than spectacle; the keys should feel like objects you want to touch.
This document is the System Requirements Document for gentle-start, written for the requester, Diya Trivedi.
gentle-start is a single-page web calculator. The current delivery consists of:
Accepted behavior in scope:
Delivery and ownership:
Narrow exclusions: there is no second page, no navigation bar, no logo strip, no call-to-action, no history panel, no scientific functions, no unit conversion, and no persistence of calculations across visits.
Removed from scope
gentle-start is a public, anonymous, single-page utility. The Calculator page is reachable directly with no gate: a visitor lands on it and can immediately press keys. Because the accepted behavior is a self-contained arithmetic session with no durable actor-specific state, no commitment, no entitlement, and no value transfer, no application-owned identity is established and no session continuity is required. Nothing is protected.
The current horizon is exactly the one page described here. There is no future-horizon feature set accepted for this product; anything beyond the single calculator page — history, accounts, scientific modes — is out of scope rather than deferred.
The backend and database exist as provisioned infrastructure supporting the application; they do not introduce product behavior, entities, or access rules of their own.
The single page of the product. Anonymous, no identity, no navigation. A wide cream paper field with a narrow centred column.
Information and state
0.0; no expression in progress.Primary actions
0.Supporting actions
Domain entities
Component responsibilities
gentle-start with a hand-drawn rust squiggle underline beneath it.clamp(56px, 14vw, 120px). Shows the current value or committed result.translateY(1px) with the 2px offset shadow collapsing, like a real key.States
0.0 state.FR-1 — Open the calculator As a Calculator User I should open the Calculator page directly and see a ready calculator, so that I can begin arithmetic immediately.
0 and the full keypad visible.FR-2 — Enter digits As a Calculator User I should press digit keys 0–9 to build a number in the display, so that I can enter the operands of my calculation.
FR-3 — Enter a decimal point As a Calculator User I should press the decimal point key to begin a fractional part, so that I can calculate with non-integer values.
FR-4 — Select an operator As a Calculator User I should press an operator key (÷ × − +) to record the pending operation, so that I can combine two operands.
FR-5 — Evaluate the expression As a Calculator User I should press equals (=) to compute the result, so that I can read the answer to my calculation.
FR-6 — Clear everything As a Calculator User I should press AC to reset the calculator, so that I can start a fresh calculation.
0 and any in-progress expression is discarded.FR-7 — Delete the last character As a Calculator User I should press\x20\xe2\x8c\xab to remove the last entered character, so that I can correct a mistyped digit without clearing everything.
0.0.FR-8 — Use the keyboard As a Calculator User I should use Esc, Enter, and Backspace on my keyboard, so that I can operate the calculator without reaching for the mouse.
Product context. The Calculator User is anyone who needs arithmetic in the moment — a student checking a problem, a shopper totalling a basket, a freelancer working out an invoice line, a parent helping with homework. They arrive at gentle-start with a number in their head and no patience for ceremony. They are not signing in, not configuring anything, and not looking for a dashboard.
Primary goal. Get a correct arithmetic result from the on-screen keypad without leaving the page.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which numbers to enter, which operator to apply, whether to correct a digit or clear entirely, and when to commit with equals.
Interactions with other accepted participants. None. The Calculator User is the only human participant; the calculator itself is the counterpart that produces the result. There is no handoff, no approval, and no second party.
Observable success. The display shows the correct result of the entered expression, and the user can immediately begin another calculation or clear the page.
What makes this role distinct. The role's entire work is a short, private, in-session arithmetic loop on a single page. There is no identity, no history, no sharing, and no state that outlives the visit — which is precisely why the product can be one page.
gentle-start, the warm hint line, and the calculator card; the display reads 0. (Owner: Calculator page.)0 and start again. (Owner: Calculator page.)0. (Owner: Calculator page.)0 and any in-progress expression is discarded. (Owner: Calculator page.)The creative direction is authoritative for this section. Muse: Frank Chimero — warm editorial calm for a calculator you actually enjoy pressing. Headline idea: a well-made notebook page, not an instrument panel.
Mode. Light only. No dark mode.
Colour tokens (exact hex, by role)
| Role | Hex | Use |
|---|---|---|
| Background | #F4ECDF | Warm cream paper ground covering the page |
| Surface | #FBF6EC | Calculator card, slightly lighter than the ground |
| Text / Ink | #2A2622 | All readable text, display numerals, key outlines |
| Primary | #B4532B | Rust — equals key, operator column tint, status dot, squiggle, spot illustration |
| Accent | #C99A2E | Mustard — AC/\xe2\x8c\xab keys, thin section rule |
| Muted | #8A7F70 | Warm grey — labels, hints, key legend, footer |
Contrast: ink on cream ≈ 13:1; rust on cream ≈ 4.9:1 at body size. No white-on-white, no blue anywhere.
Typography
-0.01em, generous line-height for the small page title.0.01em, so digits read like a printed ledger and never jitter as you type.0.08em tracking.clamp(56px, 14vw, 120px); page title clamp(28px, 5vw, 44px); key labels 18–22px; micro-labels 11px uppercase with 0.08em tracking; body/hint 15px.Shape language. Paper and ink. One rounded rectangle for the calculator body (18px radius, hairline #2A2622 at 12% opacity). Keys are soft 12px-radius blocks with a 1px ink outline and a 2px offset "printed" shadow rather than a glossy lift. A single hand-drawn underline squiggle beneath the page title; a small ink corner tick on the card. No blobs, no glass, no gradients.
Layout. Single centred column, max-width 420px on mobile and 460px on desktop, on a wide cream field with generous margins. Above the card: a left-aligned page title and a one-line warm hint ("Take your time — the numbers will wait."). The card holds a full-width result display at the top, a thin mustard rule, then a strict 4-column keypad: AC and\x20\xe2\x8c\xab in the top row tinted mustard, the operator column (÷ × − +) tinted rust, digits in cream with ink, and the equals key spanning the bottom-right as a larger rust block. A footer line of tiny muted text gives keyboard shortcuts (Esc, Enter, Backspace). On desktop the card sits slightly right of centre with the title anchored left, so the whitespace is asymmetric.
Imagery. No photography, no 3D renders. Illustration is limited to one small hand-drawn ink spot illustration in the top-right of the card — a pencil or abacus line drawing in rust at 2px stroke — and the squiggle underline. A faint paper grain texture at 3% opacity over the cream ground. Everything else is type and keys.
Spacing rhythm. Generous outer margins; a consistent 8px base unit for key gaps and card padding; the display given the most vertical breathing room so the numeral dominates.
The calculator is the hero. The first screen is a wide cream paper field with a narrow centred column. A left-aligned Literata title gentle-start sits above a hand-drawn rust squiggle, followed by a one-line warm hint in Karla. Then the calculator card itself: its display showing a large Literata 0 at clamp(56px, 14vw, 120px), right-aligned, sitting above the strict keypad grid.
The dominant element is the oversized display numeral — not a button, not an image. Rust and mustard appear only on the operator and clear keys, so the card reads as ink on paper with two coded columns. The composition is asymmetric in its whitespace: the card sits slightly right of centre on desktop with the title anchored left. There is no navigation bar, no logo strip, and no CTA — one object, one job.
Signature moves carried into the build:
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
translateY(1px) over 180ms (transformation), so the key reads as a physical object being pressed; when equals is pressed, the display value fades softly over 220ms into the committed result (outcome). Nothing else moves.0 — a single static frame that already contains the whole product.prefers-reduced-motion, all transitions become instant and the staggered reveal becomes a single static frame; the calculator remains fully usable.clamp(...) to fit. No element covers any part of readable text or a control.prefers-reduced-motion is honoured with a usable static arrangement.backend, database, and frontend.0.prefers-reduced-motion state in which all transitions become instant and the staggered reveal becomes a single static frame.
Take your time — the numbers will wait.
Esc clearEnter equalsBackspace delete

Take your time — the numbers will wait.
Esc clearEnter equalsBackspace delete
No comments yet. Be the first!