coral-start is a simple calculator delivered as a single-page design. Its product intent is narrow and complete: a person opens one page, enters numbers and operators, sees the computed result, and can clear the current calculation to start over. There is no second page, no navigation chrome, and no account requirement — the calculator is the whole product.
The audience is anyone who needs quick, accurate basic arithmetic — a daily-use utility that should feel like a sharp, opinionated designed object rather than a form. The interface is anonymous and public: the single Calculator page is the entry point, the working surface, and the result surface at once.
coral-start is a single-page web calculator. The delivered product consists of exactly one page, Calculator, which is anonymously reachable and hosts all accepted behavior: number and operator entry, the live result display, and clearing the current calculation.
Actors
Delivery shape
Accepted behavior summary
Narrow exclusions
Removed from scope
coral-start is delivered as one first-party React page served to any visitor. Because the accepted behavior is a public, ephemeral calculation with no durable actor-specific state, commitment, or value transfer, no application-owned identity is introduced: the Calculator page is anonymously reachable and fully usable without sign-in. The shared FastAPI backend and MariaDB database are provisioned infrastructure available to the application; the accepted calculator workflows do not require them to store or compute anything, and this document does not invent domain entities or authentication to justify them.
Everything described in this document is current. No future-horizon requirements are accepted.
The single page of the product, anonymously reachable, hosting the full calculator lifecycle.
Information and state
0.Primary actions
0–9 to build the current number.+, −, ×, ÷ to compose a basic arithmetic expression.= to compute and display the result.C/AC) to reset the current calculation to the initial state.Supporting actions and controls
Domain entities
Component responsibilities
CALCULATE wordmark in a diagonal mustard band, with the looping operator-word marquee beneath it (static wrapped row under reduced motion).States
0 state immediately; no data fetch is required.0 with no pending expression.=.FR-1 — Single-page calculator delivery (explicit) As a Calculator User, I should get the calculator as a simple single-page design, so that the entire tool is available on one screen without navigation.
FR-2 — Enter numbers and operators (explicit) As a Calculator User, I should enter numbers and operators, so that I can compose a basic arithmetic calculation.
0–9, the decimal point, and operator keys +, −, ×, ÷.= or continues composing.FR-3 — View the computed result (explicit) As a Calculator User, I should view the computed result of my entered calculation, so that I get the answer I need.
= after a valid expression.FR-4 — Clear the current calculation (explicit) As a Calculator User, I should clear the current calculation, so that I can start over.
0 state and the pending expression is discarded.FR-5 — Correct the current entry (required_inference) As a Calculator User, I should correct the last entered digit, so that a mistyped number does not force a full restart.
Product context. A person who needs quick, accurate basic arithmetic and opens coral-start's single Calculator page to get it. They arrive anonymously, with no account and no saved state, and expect the tool to be immediately usable.
Primary goal. Compose a basic arithmetic calculation by entering numbers and operators, read the accurate computed result, and clear to start over when done or when correcting a mistake.
Distinct accepted responsibilities.
= to compute and reads the result from the display panel.Relevant inputs and decisions. Which numbers and operators to enter, when the expression is complete enough to evaluate, and whether to clear or correct after a mistake or an error.
Interactions with other participants. The Calculator User is the only human participant. The frontend application renders the page and computes results in response to their input; no other human participant is affected by the calculation.
Observable success. An accurate result appears in the display panel after =; clearing returns the page to 0; the whole interaction happens on one screen with no navigation.
0 and the keypad visible.+, −, ×, or ÷); the expression context shows the operator and the display is ready for the next operand.=. The frontend computes the result and the display panel shows it in large tabular numerals.Failure/recovery. If the user enters a malformed expression or divides by zero, the display panel shows a readable error instead of a wrong value; the user presses clear or corrects the entry and continues.
Failure/recovery. Backspace on an empty entry leaves the initial 0 state unchanged; the user may clear instead.
0 and the pending expression is discarded.The creative direction is authoritative: Arithmetic as architecture — the numbers are the poster, after Paula Scher. Typography is structure; colour blocks carry the composition.
Palette (light mode)
| Role | Hex |
|---|---|
| Background (warm paper) | #F4EFE6 |
| Surface | #FFFFFF |
| Text | #111111 |
| Primary (signal red — equals key, result line) | #E63B2E |
| Accent (mustard — operator keys, diagonal band) | #F2B705 |
| Muted | #6B6459 |
The display panel is a solid black block (#111111) with white numerals. Digit keys are white with black text and a 2px black rule; operator keys are mustard with black text.
Typography
CALCULATE becomes a colour-block banner.clamp(56px, 12vw, 152px); section labels 14px; key captions 20px; result numerals 48px mobile to 88px desktop, tabular.Shape language. Hard edges only: 0px radius on every key, panel, and colour block. Diagonal bands and offset rectangles. Thick 2px black rules separate display from keypad and keypad from footer. Keys are rectangles with a solid 2px black border and a 4px offset black shadow that collapses on press.
Layout. A single asymmetric editorial column at 1280px: left 60% is the black display panel with the oversized result, right 40% is the keypad in a 4×5 grid. At 768px the display stacks above the keypad; at 375px the display becomes a full-width black band with the result wrapping inside it and the keypad stays a 4-column grid with 56px keys. A full-bleed diagonal mustard band cuts across the top behind the CALCULATE wordmark.
Imagery. Typography is the imagery. A large rotated = glyph in signal red sits behind the keypad as a watermark at 12% opacity. No photography, no illustration — only type, rules, and flat colour fields.
Readability rule. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit; decoration may bleed and overlap but never covers readable text or controls.
The first screen is a full-viewport composition. A mustard diagonal band across the top third holds the black wordmark CALCULATE in Anton at clamp(56px, 12vw, 152px), flush-left, with the band's edge carried by decoration rather than cropping the readable wordmark. Beneath it, the black display panel spans 9 of 12 columns with the live result in white Anton numerals at 88px, right-aligned like a poster caption. The signal-red equals key is oversized — twice the height of a digit key — anchoring the keypad's bottom-right corner. The page ground is warm paper #F4EFE6. No centred headline, no button, no gradient: the result panel and the type band are the hero. A slow operator-word marquee runs along the band beneath the wordmark, and the rotated red = watermark sits behind the keypad at 12% opacity.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: flat
Landing Hero Motion Brief
CALCULATE wordmark in the diagonal mustard band and the black display panel with its live white result.CALCULATE • ADD • SUBTRACT • MULTIPLY • DIVIDE) that pauses on hover; 90ms key snap; 120ms vertical wipe on result change; colour-block wipe on clear.0 in white Anton; keypad with the oversized red equals key at bottom-right; red = watermark behind the keypad.prefers-reduced-motion, a usable static arrangement is provided — the marquee wraps into a static row and result changes crossfade instantly.0 state without a data fetch, so the calculator is usable on first paint.frontend, backend, and database services.0 state.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!