hardy-calculator is a single-page calculator: one anonymous person opens one page, enters numbers and operators, and reads a correct arithmetic result. The product intent is deliberately narrow — a simple, single-page design of a calculator, presented as a calm, well-made instrument rather than a marketing site. The audience is any person who needs to perform basic arithmetic in a browser without accounts, navigation, or surrounding application chrome.
The design brief is "less, but better arithmetic": a Braun-panel calculator in the spirit of Dieter Rams — a strict grid, aligned label/value pairs, muted warm surfaces, and one saturated signal colour marking the result and the equals key.
hardy-calculator is delivered as a single custom page, Calculator, reachable anonymously with no sign-in, no account, and no additional routes. The page presents a display panel and a 4×5 keypad; the user presses digit and operator keys, the expression is shown beneath the display, and pressing equals commits a computed result to the display.
Actors:
Current scope is exactly one page and one arithmetic workflow. There is no history, no memory storage beyond a display indicator, no accounts, no settings, no multi-page navigation, and no server-side persistence. Future ideas are not part of the current product.
The product is a first-party, browser-delivered, single-page utility. Access is anonymous and public: the Calculator page is the entry surface and requires no identity, so no authentication, registration, or session continuity is introduced. All arithmetic interaction happens on that one page; the calculator engine runs in support of the page's interaction and is not a separate destination.
The explicit hard boundary is the page count: the design must be a single page, and no additional pages are requested. The design must be simple. Anything not needed to enter numbers and operators and read a computed result — navigation, dashboards, saved history, account management, marketing sections — is outside the current delivery boundary.
The single page of the product. Anonymous public entry; no identity required.
Information and state
0 on load, rendered at display scale.MEMORY label with a filled or hollow 6px dot reflecting whether a value is held.Primary actions
0–9 to append digits to the current entry.+, −, ×, ÷ to select an operation.Supporting actions
Domain entities
Component responsibilities
HARDY at left and CALCULATOR · MODEL 01 at right; mirrored bottom rule carrying keyboard hints.EXPRESSION label and expression string at left; MEMORY label and dot at right, in 10px muted small caps.States
0 and an empty expression.0, expression empty, memory dot hollow.0 and expression to empty at any time.FR-1 — Open the calculator page (explicit)
As a Calculator User I should open the single Calculator page and immediately see a display reading 0 and a full keypad, so that I can begin arithmetic without any setup.
0, empty expression, hollow memory dot, and all keys visible.FR-2 — Enter digits (explicit)
As a Calculator User I should press digit keys 0–9 and see each digit appended to the current entry in the display, so that I can build the number I want to compute.
0 before a non-zero digit.FR-3 — Enter a decimal value (explicit) As a Calculator User I should press the decimal key to add a fractional part to the current entry, so that I can compute with non-integer numbers.
0..FR-4 — Select an operator (explicit)
As a Calculator User I should press +, −, ×, or ÷ to choose the operation, so that the next entered number is combined with the current value.
FR-5 — Commit a result with equals (explicit) As a Calculator User I should press the equals key and see the computed result replace the display, so that I can read the answer to my arithmetic.
FR-6 — Clear and recover (explicit) As a Calculator User I should press the clear key to reset the current entry and expression, so that I can start a new calculation or recover from a mistake.
0, expression empties, memory dot returns to hollow.FR-7 — Handle invalid arithmetic (required_inference) As a Calculator User I should see a clear error indication when my expression cannot be evaluated (for example division by zero), so that I understand the result is not a number and can recover.
0 and the expression to empty.FR-8 — Keyboard operation (required_inference) As a Calculator User I should be able to operate the calculator with my keyboard (digits, operators, decimal, Enter for equals, Escape for clear), so that I can compute without reaching for the mouse.
FR-9 — Evaluate expressions (required_inference) As the Calculator Engine I should evaluate the entered expression using standard operator precedence and produce a finite numeric result, so that the Calculator User's committed result is correct.
Product context. A single anonymous person who opens hardy-calculator to do a quick piece of basic arithmetic — adding up a few amounts, checking a multiplication, dividing a figure. They arrive with a number in mind and no patience for setup, sign-in, or navigation. The page is the whole product.
Primary goal. Enter numbers and operators and read a correct result on the one page, without leaving it.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which digits to enter, which operator applies, when the expression is complete enough to commit, and whether to continue from the result or clear.
Interactions with other participants. The Calculator User interacts only with the Calculator page and, through it, the Calculator Engine, which evaluates the committed expression and returns the result or an error. There are no other human participants.
Observable success. The display shows the correct computed result after equals; the expression string reflects what was entered; the page never requires the user to leave it or sign in.
Constraints. The experience must remain simple and confined to one page; no history, accounts, or additional destinations are part of this role's work.
0, an empty expression, a hollow memory dot, and the full 4×5 keypad.+, −, ×, or ÷). The operator appears in the expression string and the keypad reflects the selection.0, the expression empties, and the memory dot returns to hollow.0.Muse and headline. Dieter Rams — "Less, but better arithmetic." A Braun-panel calculator: a small, dense, honest control surface where every key is a function and nothing decorative is permitted.
Mode. Light mode only.
Colour tokens (exact hex by role)
#E8E4DC#F4F1EA#1C1B19#2B2A27#E4610F#8A857BColour usage rules. Warm off-white ground covers the page; the calculator body is a slightly lighter panel with a 1px #1C1B19 hairline border and no shadow. Number keys are #F4F1EA with ink labels; operator keys are graphite #2B2A27 with off-white labels. Braun orange is used only twice: the equals key face and the thin rule under the display — never as a large field. Proportions: 70% warm neutrals, 25% graphite, 5% orange.
Typography
clamp(56px, 11vw, 132px).Shape language. Rounded-rectangle keys with a 10px radius on a 4px grid, uniform 8px gutters, a 1px hairline border on every key, and hard-edged rectangular panels for the display and surrounding frame. Nothing is a pill, a blob, or a circle except the two tiny indicator dots beside the display labels. Keys depress 1px with a 1px inset line — mechanical, not soft.
Layout. A single centred column, max-width 420px on mobile and 380px at 1280px, on the warm ground with generous margins (64px+ on desktop). Vertical stack: small-caps wordmark HARDY top-left with a ruled line running to the right edge of the column; the display panel (full-width rectangle, 1px ink hairline, orange rule beneath, tabular number right-aligned at display scale, metadata row underneath); the 4×5 keypad grid with equal 8px gutters; a bottom ruled strip with keyboard hints in 10px caps. On desktop the instrument is flanked by two thin vertical rules at the page edges, like a schematic frame, and the wordmark scales up to sit on the top rule.
Imagery. No photography, no illustration, no 3D. The only "image" is the instrument itself plus diagrammatic line work: hairline rules, the 4×5 grid, small-caps labels, and a faint schematic tick-mark scale of eight 1px ticks at 4px intervals along the left edge of the display panel. A single tiny orange dot sits at the top-right of the display as a power indicator.
Avoid. Gradient blobs, glassmorphism, drop shadows on keys or panels; blue or indigo accents of any kind; rounded pill buttons or circular keys; playful illustrations, emoji, or character mascots; bouncy or springy key animations; a centred marketing headline with subhead and CTA button; hover-lift card grids; serif or rounded display typefaces.
Readability constraint. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example clamp(...) with its mobile size) to fit, with no other element covering them.
The first screen is not a marketing hero — it is the instrument, presented like a Braun product shot on a warm grey ground.
A full-viewport-width 1px ink hairline rule runs across the top of the page, carrying the small-caps wordmark HARDY at the left and the label CALCULATOR · MODEL 01 at the right. Below it, centred, the calculator panel occupies roughly 60% of the viewport height. The display rectangle (#F4F1EA, 1px ink border, a 2px orange rule directly beneath) holds a right-aligned tabular number at clamp(56px, 11vw, 132px) — 0 on load — with the expression string and a small-caps MEMORY indicator beneath in 10px muted caps. Eight 1px tick marks run along the display panel's left edge as a schematic measuring scale, and a single tiny orange dot sits at the top-right as a power indicator.
The keypad sits directly below in a strict 4×5 grid of rounded rectangles: graphite operators on the right column, off-white digits with ink labels, and a single orange equals key at the bottom-right. A second hairline rule closes the frame at the bottom with keyboard hints.
Dominant element: the oversized tabular number. Palette roles: the warm ground recedes, graphite keys anchor the lower half, and orange appears exactly once as a rule and once as the equals key. The page is framed like a technical drawing, not a website.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
HARDY and CALCULATOR · MODEL 01, the display panel showing 0 with an empty expression and hollow memory dot, the full keypad visible, the bottom rule with keyboard hints.prefers-reduced-motion, the crossfade is removed and the display number swaps instantly; the orange-rule brighten is retained as a brief state change or removed; key depression remains as an instant 1px shift. The static arrangement is fully usable.prefers-reduced-motion removes the display crossfade and keeps the instant swap.MEMORY label with a filled or hollow dot reflecting current-session state.
HARDY
CALCULATOR · MODEL 01
HARDY
CALCULATOR · MODEL 01
No comments yet. Be the first!