shiny-calculator is a simple, single-page calculator. The product intent, taken directly from the authoritative requirement thread, is to deliver a calculator as a single-page design — one surface, no additional pages, no navigation elsewhere. A person opens the page, enters numbers and operations, and reads the computed result.
The audience is anyone who needs quick arithmetic: a single Calculator User who wants to complete a calculation on one page without navigating anywhere else. The design register is functional focus and quiet confidence — numbers are the content, and the interface is built to make computation feel precise, rhythmic and almost musical.
shiny-calculator is a browser-delivered, single-page calculator. It has exactly one product surface — the Calculator page — which is also the anonymous entry point. There is no account, no sign-in, no persistence of calculations, and no second page.
Actors
Accepted behavior at a glance
Narrow exclusions
The product is a first-party, application-owned, anonymous single-page calculator. The Calculator page is publicly reachable with no identity requirement — there is no durable actor-specific state, commitment, entitlement, or value transfer that would require application-owned identity. All calculation state lives in the page for the duration of the visit.
Current horizon: the single Calculator page with number entry, operation selection, and result display, styled per the Swiss geometric direction.
Future horizon: none stated. Anything not listed in Section 3 is out of scope for this generation.
Not applicable — no reference directive declares a content_source.
The sole product surface and anonymous public entry. A full-viewport warm paper ground (#F2F0EB) with a faint 12-column hairline grid. Top-left carries a micro-label CALCULATOR / 001. The display numeral sits centre-left on a yellow (#F2C500) geometric plane that bleeds off the left edge; the keypad occupies the right two-thirds as a hard-edged modular grid; a single red circle is the equals key, overlapping the grid boundary at bottom-right.
Information and state
CALCULATOR / 001 top-left; a vertical stack of operation micro-labels (C, ±, %, ÷) aligned to the grid.Primary actions
Supporting actions
Domain entities
Component responsibilities
States
0 and an idle keypad.0; no operator active; no pending operand.Error) rather than a numeric result; the next digit or C recovers to a fresh entry.0 and clears pending operand and active operator; entering a new digit after an error starts a fresh entry.FR-1 — Single-page calculator surface (explicit) As a Calculator User I should open a single page that presents a calculator so that I can perform arithmetic without navigating anywhere else.
0 and the keypad available.FR-2 — Enter digits (explicit) As a Calculator User I should press digit keys (0–9) and a decimal point so that the number I intend to compute appears in the display.
0.FR-3 — Select an operation (explicit) As a Calculator User I should select an arithmetic operation (add, subtract, multiply, divide) so that the calculator knows how to combine my numbers.
FR-4 — Clear (explicit) As a Calculator User I should press C so that I can reset the current entry or expression and start over.
0; pending operand and active operator are cleared.FR-5 — Sign toggle and percent (explicit) As a Calculator User I should press ± to change the sign of the current value and % to apply a percentage so that I can handle negative values and percentage calculations.
FR-6 — Evaluate with equals (explicit) As a Calculator User I should press the red equals key so that the calculator computes and shows the result of my expression.
FR-7 — Simple single-page design constraint (explicit) As a Calculator User I should experience a simple design that fits on a single page so that the calculator is immediately usable without clutter or navigation.
Product context. The Calculator User is anyone who needs quick arithmetic and opens shiny-calculator in a browser. They arrive with a number in mind and want the answer on one page, without accounts, menus, or navigation.
Primary goal. Complete a calculation — enter numbers, choose an operation, and read the result — on a single page.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which digits to enter, which operator to apply, when to evaluate, and when to clear and start over. The user decides when a calculation is complete.
Interactions with other participants. None — the Calculator User is the sole active human participant. There is no counterparty, recipient, or beneficiary whose state changes as a result of a calculation.
Observable success. The display shows the computed result after pressing equals; the user can read it at a glance and either chain another operation or clear to start fresh.
Constraints. The experience must be simple and fit on a single page; no additional pages are available.
0 and the keypad available.0; pending operand and active operator are cleared.Error) instead of a numeric result.Muse: Josef Müller-Brockmann. Headline idea: Swiss geometric rigour for a calculator that computes like a concert poster.
Mode: Light only.
Colour tokens (exact hex by role)
#F2F0EB#FFFFFF#111111#E63329#F2C500#8C8C8CNo gradients, no shadows beyond a 1px hairline. No blue or indigo anywhere.
Typography
Shape language
Layout
Imagery style
Readability constraint
clamp(...)) to fit. Decoration (the yellow plane, red circle, grid overlay) may bleed off edges but must cover no readable text or control.The first screen is the calculator, not a marketing hero. A full-viewport warm paper ground (#F2F0EB) carries a faint 12-column hairline grid at 8% black opacity. Top-left: a 10px uppercase micro-label CALCULATOR / 001 in black. Centre-left: the display numeral at 144px Archivo 800, flush-left, sitting on a yellow (#F2C500) rectangular plane that bleeds off the left edge by 40px. Right two-thirds: the keypad as a hard-edged modular grid of white keys with black hairlines, the red equals circle overlapping the bottom-right corner. No centred headline, no subtext, no button, no gradient.
The signature moves are: the oversized display numeral on a bleeding yellow plane; the keypad as a visible modular grid of hard-edged keys; the single red circle as the equals key overlapping the grid boundary; faint 12-column grid hairlines as page texture; and micro-labels in uppercase Archivo at 10px with +0.12em tracking, aligned like exhibition captions.
Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
Landing Hero Motion Brief
CALCULATOR / 001 top-left; display numeral 0 at 144px on the yellow plane bleeding off the left edge; keypad grid on the right; red equals circle overlapping bottom-right.NFR-1 — Single-page constraint (explicit) The product must consist of exactly one page. No additional pages, routes, or destinations may exist. Rationale: explicit user requirement ("simple single page design of calculator") and the exact page-count constraint of 1.
NFR-2 — Simplicity (explicit) The design must be simple and fit on a single page. Rationale: explicit user constraint.
NFR-3 — Responsive readability (explicit, from creative direction) Readable text and controls stay whole at 375px, 768px, and 1280px; no element covers any part of them. Decoration may bleed off edges. Rationale: creative direction readability rule.
NFR-4 — Immediate render (required_inference)
The page renders immediately with display 0 and an idle keypad; no loading state is required. Rationale: a single-page utility with no data dependencies.
NFR-5 — Anonymous access (required_inference) The Calculator page is publicly reachable with no identity requirement. Rationale: no durable actor-specific state, commitment, entitlement, or value transfer exists that would require application-owned identity.
NFR-6 — Palette discipline (explicit, from creative direction) Only two accent colours (red #E63329 and yellow #F2C500) are used; no blue or indigo anywhere; no gradients, glassmorphism, or soft drop shadows. Rationale: creative direction.
(No source-specified technology choices were provided; the above are the minimal stack needed to deliver the accepted single-page calculator.)
Assumptions
Constraints

shiny-calculatorSession record calc-initialNo pending operand

shiny-calculatorSession record calc-initialNo pending operand
No comments yet. Be the first!