glacial-calculator is a simple calculator delivered as a single-page design. The product intent is narrow and exact: one page that presents a working four-function calculator — number entry, operator selection, expression and result display, and clearing — with no surrounding product surface, no marketing copy, and no additional destinations.
The audience is the everyday user who opens the page to perform basic arithmetic and read an accurate result. The page is anonymous and public: no account, sign-in, or stored history is part of the accepted scope. The design register is calm, exact, and gallery-like — the calculator itself is the only content.
glacial-calculator is a single-page web application. The page, named Calculator, is the entire product surface. It hosts:
The single active human actor is the Calculator User, who enters numbers and operators, reads the displayed result, and clears or corrects the current calculation. There are no other human participants: no counterparty, recipient, or beneficiary is affected by the arithmetic, and no durable state is created for any other party.
Delivery uses the provisioned scaffold: a React frontend serving the single page, a shared FastAPI backend process for application APIs, and MariaDB as application-owned storage. The calculator's arithmetic is performed in the browser on the page; the backend and database are provisioned infrastructure and are not required to hold calculator state, because the accepted scope defines no persistence, history, or account continuity. No authentication is required or introduced.
Removed from scope
The requester asked for a simple single-page design of a calculator. That is the whole current product: one anonymously reachable page where a user performs arithmetic. The page is public and ephemeral — nothing the user types is owned by an identity, resumed later, or shared with another participant, so no identity establishment, session continuity, or permission model is introduced.
Everything the user needs — entry, display, evaluation, clearing, and correction — lives on the one page. There is no separate entry screen, no settings surface, and no results archive. Future ideas are not part of this delivery and are not represented in the page.
The single page of the product. Anonymous, public, no sign-in. It is the only destination.
Information and state
0.Primary actions
0–9 append digits to the current entry.. starts or extends a fractional entry.+, −, ×, ÷ select the pending operation.= evaluates the expression and shows the result.AC clears the display and all pending state back to 0.± toggles the sign of the current entry.Supporting elements
GLACIAL / CALCULATOR, FOUR FUNCTION, SINGLE PAGE, set at 11px uppercase with 0.18em letterspacing.Domain entities
Component responsibilities
0 spanning two columns.States
0.=.AC and re-entering.AC always returns the page to the initial 0 state.As a Calculator User I should see a single calculator page when I open the product so that I can begin arithmetic immediately. (explicit) — Trigger: page load. Result: the Calculator page renders with the display at 0 and the full keypad visible. Access: anonymous, public. Failure/recovery: if the page fails to load, reloading restores the initial state. Continuation: user begins entering digits.
As a Calculator User I should enter digits and a decimal point into the display so that I can build the number I want to calculate with. (explicit) — Input: presses on 0–9 and .. Result: the display appends the entered characters to the current entry. Failure/recovery: AC clears a mistaken entry.
As a Calculator User I should select an operator (+, −, ×, ÷) so that I can specify the operation to perform. (explicit) — Input: operator key press. Result: the operator is recorded as pending and reflected in the expression. Continuation: user enters the second operand.
As a Calculator User I should press = to evaluate the expression so that I obtain an accurate result. (explicit) — Input: = key press on a complete expression. Result: the display replaces the expression with the computed result (120ms cross-fade). Failure/recovery: a non-evaluable expression (for example division by zero) shows an error in the display; AC resets. Continuation: the result can be used as the start of a new calculation.
As a Calculator User I should press AC to clear the calculation so that I can start over or recover from a mistake. (explicit) — Input: AC key press. Result: display returns to 0 and all pending state is discarded.
As a Calculator User I should toggle the sign of the current entry with ± so that I can enter negative numbers. (explicit) — Input: ± key press. Result: the current entry's sign flips and the display updates.
As a Calculator User I should see the calculator presented as a single, quiet, gallery-like page so that the instrument is the only content. (explicit) — Result: one centred plate on a warm-paper field with the metadata block, red square mark, and crop marks; no headline, subhead, or marketing copy.
Product context. An anonymous everyday user who opens the single page to do a quick piece of arithmetic. There is no account, no history, and no other participant in the work.
Primary goal. Get an accurate result from a simple single-page calculator with as little friction as possible.
Distinct responsibilities. Enter numbers and operators, read the displayed expression and result, clear or correct the current calculation, and toggle sign when a negative value is needed. This is the only role in the product; its work is defined by the arithmetic itself, not by any surrounding workflow.
Inputs and decisions. Digit and decimal input, operator choice, the decision to evaluate with =, and the decision to clear with AC or flip sign with ±.
Interactions with other participants. None. No counterparty, recipient, or beneficiary is affected by the calculation, and no state is shared with another person.
Observable success. The display shows the correct result for the entered expression, and the user can clear and start again at any time.
0.+, −, ×, or ÷); the operator is recorded as pending.=; the display cross-fades over 120ms to the computed result.AC.AC; the display returns to 0 and all pending state is discarded.±; the sign of the current entry flips and the display updates.= to evaluate.Muse: Peter Saville. Headline idea: a calculator as a single coded artefact — one centred instrument on a quiet paper field.
Colour tokens (light mode)
#EDEAE3#F6F4EF#141413#141413#D6331F — reserved for the equals key, the operator column, the hairline rule under the display, and the 14px top-right square mark. Never a background fill; never larger than a keycap.#8A867CNo blue, indigo, violet, gradient, glass, or tinted background fill anywhere.
Typography
clamp(40px, 6vw, 64px).Shape language
Layout
AC, ±, ÷ on the first row, operator column in red, 0 spanning two columns.Imagery
÷ × − + = ±).The first screen is a full-viewport warm-paper field (#EDEAE3), empty except for three small-caps metadata lines in the top-left corner (GLACIAL / CALCULATOR, FOUR FUNCTION, SINGLE PAGE), a 14px Saville-red square in the top-right, and a single rectangular calculator plate (#F6F4EF, 1px ink border) centred in the field at roughly 380px wide. The plate is the hero: its top third is the display — a right-aligned ink numeral at clamp(40px, 6vw, 64px) with tabular figures and a 1px red rule beneath it; the lower two-thirds is the 4×5 keypad with square keys and a red operator column, the equals key the only filled red keycap. There is no headline, no subhead, and no button. The first screen is the instrument and its silence, framed by printer's crop marks at 8% ink opacity.
Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
Landing Hero Motion Brief
= is pressed the display numeral cross-fades over 120ms to the result. The instrument responds like a physical object, not a web control.0.prefers-reduced-motion, the 600ms plate fade-in and the 120ms display cross-fade are removed; the display updates instantly and the plate appears immediately. Key depression feedback remains as a static pressed state.backend, database, frontend).+, −, ×, ÷) with decimal input, sign toggle, clear, and equals; no scientific, memory, or history functions are in scope.#F6F4EF) centred on the paper field.#D6331F, reserved for the equals key, operator column, display rule, and top-right square mark.0.± — the sign-toggle key for the current entry.
0

0
No comments yet. Be the first!