shiny-single is a simple, single-page calculator. The product intent is a single-purpose utility: a person opens one page, enters numbers and arithmetic operations, and reads the computed result. There is no account, no dashboard, no stored data, and no navigation beyond the one page.
The audience is anyone who needs quick arithmetic — the "Calculator User" — who wants a working calculator interface immediately, with no sign-in, setup, or surrounding marketing content. The design intent is a crafted precision instrument: the calculator itself is the only content on the page.
shiny-single delivers one anonymous, publicly reachable page — Calculator — that hosts the entire calculator interface. The page presents a display for the current entry and result, a keypad for digits and arithmetic operations, and controls to evaluate and clear. All interaction happens on this single page; the result updates as the user interacts with it.
Actors
Accepted behavior
Narrow exclusions
shiny-single is a first-party, browser-delivered single page. The page is anonymously reachable: no identity is established, required, or inferred, because the calculator holds no durable actor-specific state, commitment, or entitlement. All calculator state (current entry, pending operation, displayed result) is ephemeral and lives only in the page session.
The current delivery horizon is exactly one page: the Calculator. Nothing in the accepted requirements calls for additional destinations, backend services, or future phases. The single-page constraint is binding — the calculator interface, its display, and its controls all live on that one page.
The single page and public entry. It is the calculator itself — a centered graphite chassis containing a display and a keypad, with a hairline micro-metadata column beside it on desktop.
Information and state
Primary actions
Supporting actions
Domain entities
Component responsibilities
States
0.0, no operator indicator, no pending operation.0 and discards any pending operation; entering a new digit after an error starts a fresh entry.FR-1 — Single-page calculator design (explicit) As a Calculator User, I should see a simple calculator design contained entirely in a single page, so that I can use the calculator without navigating anywhere else.
FR-2 — Calculator interface for arithmetic (explicit) As a Calculator User, I should have a calculator interface on the page for performing arithmetic calculations, so that I can enter numbers and operations and read the computed result.
FR-3 — Clear and reset (required_inference) As a Calculator User, I should be able to clear the current entry and any pending operation, so that I can start a fresh calculation.
0 and no operator indicator is shown.FR-4 — Live operator indication (required_inference) As a Calculator User, I should see which operation is pending while I enter the next number, so that I can confirm what the calculator will do when I press equals.
Product context. The Calculator User arrives at shiny-single with a single, immediate need: to do arithmetic. They are not signing in, not managing anything, and not browsing — they open the one page and expect a working calculator in front of them.
Primary goal. Enter numbers and operations and read a correct, clearly displayed result as quickly as possible.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which digits to enter, which operator to apply, when to evaluate, and when to clear. The user decides when a calculation is complete and whether to continue from the result or reset.
Interactions with other participants. None. The Calculator User is the only participant; the calculator responds directly to their input with no handoff to another person or service.
Observable success. The display shows the entered number as it is typed, the operator indicator reflects the pending operation, and pressing equals shows the correct computed result — or a clear error message when the operation is undefined — with the calculator remaining ready for the next calculation.
0.0 and start again.0 and any pending operation is discarded — or presses a digit key to begin a fresh entry.0 and the operator indicator disappears.Muse and headline. Quiet precision after Jony Ive — a calculator lit like a product, not a webpage. The interface is the image: a graphite chassis floating on a near-black ground under a single soft overhead light.
Mode. Dark.
Color tokens (exact hex by role)
#121316 (covers ~70% of the frame)#1C1E22#F2F1ED#C9CDD3 at 8–14% opacity over surface#FF6A3D#6E737B#2A2D33 (1px), with a faint top-edge light lineThe accent #FF6A3D is reserved exclusively for the equals key and the live operator indicator — never for decoration. Body text #F2F1ED on #121316 exceeds AAA contrast.
Typography
clamp(64px, 18vw, 152px), wordmark 20px, key numerals 26–32px, micro-labels 11px, helper copy 15px/1.6.Shape language. Continuous-curve radii everywhere: keys at 20px (squircle-like), outer chassis at 32px; no sharp corners except hairline rules. Keys are soft extruded plates with a 1px top highlight and a 2px bottom inner shadow — machined, not flat. The chassis is a single rounded slab with a 1px #2A2D33 border and a faint top-edge light line.
Layout. Single-column, product-first. The chassis is centered with wide margins (max-width 420px on mobile, 460px on desktop); the display occupies the top third of the device at oversized scale. At 1280px the device sits slightly left of center with a vertical hairline column of micro-metadata (MODE / MEMORY / PRECISION) to its right; at 768px and 375px the metadata collapses beneath the display as a single ruled row. Nothing else on the page — no nav, no footer cards, no marketing sections.
Imagery. No photography, no illustration. Hairline dividers, engraved micro-labels, and a faint radial studio-light falloff behind the chassis (a single soft ellipse of #1C1E22 at 60% on the #121316 ground) imply a lit product on a plain surface.
Readability. All readable text and controls — wordmark, micro-labels, display numerals, key labels — stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit, with nothing covering them.
The lit instrument. The first screen is one product shot: a graphite calculator chassis floating on a near-black ground with a single soft overhead light falloff, occupying the center-left of a 1280px viewport. The dominant element is the oversized display result — clamp(64px, 18vw, 152px) light-weight tabular numerals in #F2F1ED, flush right inside the chassis, with a tiny uppercase operator indicator above it. Beneath the display, a 4×5 grid of aluminum keys with the equals key as the only #FF6A3D surface. A vertical hairline to the right of the chassis carries three muted micro-labels (MODE / MEMORY / PRECISION) stacked with generous leading. No headline above the fold, no CTA button, no gradient blob — the device is the hero.
Signature moves
#FF6A3D equals key as the only saturated surface on the page, with the live operator indicator echoing the same accent as a 6px dot beside the display.#121316 ground, implying a product photographed on a plain surface.Avoid. Blue–indigo accent or white/near-white ground; centered marketing headline with subtext and a CTA above the calculator; gradient blobs, glassmorphism panels, floating cards; bouncy or springy key animations, ripples, particle effects; stock photography of people or hands on keyboards; grids of identical hover-lift feature cards; neon glows or techno HUD framing; rounded pill buttons or emoji iconography.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: layered_2d
Landing Hero Motion Brief
cubic-bezier(0.22, 0.61, 0.36, 1) at 220–320ms; 1px key depression with inner-shadow shift; 220ms cross-fade of the result digit group; one purposeful load reveal — the chassis fades from 8px below with a soft shadow bloom. No bounce, no particles, no gradient drift.0, equals key glowing accent, micro-metadata column ruled to the right — the product shot before any interaction.prefers-reduced-motion, the load reveal and cross-fades resolve instantly; key presses still show their depressed state without transition; the layout and all readable text and controls remain whole and fully visible.#F2F1ED on #121316 exceeds AAA; muted #6E737B is used only for secondary labels at 13px+ and non-critical metadata.prefers-reduced-motion, a usable static arrangement is provided; motion resolves instantly while all content remains readable and operable.cubic-bezier(0.22, 0.61, 0.36, 1).#1C1E22 behind the chassis on the #121316 ground.

No comments yet. Be the first!