pearl-design is a simple calculator delivered as a single page. The product intent is narrow and complete: one page where a person can do quick arithmetic — enter numbers and operators, and read the result. There is no account, no navigation, no second screen, and no surrounding application. The page is the product.
The audience is anyone who needs a fast, friendly calculation in a browser. The design brief asks for a light, warm, immediate public utility rather than a corporate tool: a bubblegum-pink field, glossy white capsule keys, hot-pink operator keys, a single lime equals key, and oversized result digits. The calculator must feel optimistic and tactile while remaining a plain, working calculator.
This document is the System Requirements Document for pearl-design. It specifies the single page, its components and states, the one active human persona, the arithmetic lifecycle, the visual system, and the technical delivery boundary.
pearl-design is a first-party, single-page web calculator. The entire product is one anonymously reachable page, Calculator, which holds the wordmark, the result display, and the keypad. A visitor opens the page and immediately has a working calculator; nothing must be established, unlocked, or signed into before arithmetic is possible.
Delivery is a React frontend served to the browser, backed by the shared FastAPI backend and MariaDB service that are provisioned for the project. The calculator's arithmetic and display state are page-local and ephemeral: the page does not require the visitor to have an identity, does not persist a calculation history, and does not create durable records. The backend and database exist as the project's shared application infrastructure and are available for application APIs, but the accepted calculator behavior does not depend on them and does not justify domain entities, accounts, or stored user data.
The current horizon is exactly this one page. There is no second destination, no settings surface, no history view, and no account area. Anything beyond a single working calculator page is outside the current delivery boundary.
Not applicable. No reference directive supplies a content_source; the product content is the calculator itself.
The single page of the product. It is the anonymous public entry and the only destination. It contains the wordmark, the result display, and the keypad, arranged as one centred column on small viewports and as a two-part composition on wide viewports.
Information and state
Primary actions
0–9 append digits to the current entry.+, −, ×, ÷ select the pending operation.= evaluates the pending operation and shows the result.C resets the entry, the pending operator, and the displayed result to the cleared/initial state.Supporting actions and controls
Domain entities
These are page-local display concepts only; none is persisted.
Component responsibilities
pearl-design wordmark in Varela Round with wide tracking, sized 64px on mobile up to 128px on desktop, positioned top left. It is decorative branding text and never overlaps or covers the display or keys.clamp(48px, 12vw, 112px) and a pink glow ring. It is the largest element on the page and must keep its digits fully inside its capsule at 375px, 768px, and 1280px.States
=, the display shows the computed result at the large result size with the pink glow ring.C to return to the cleared/initial state, or by entering a new digit to begin a fresh entry.C always returns the page to the cleared/initial state from any state, including error.FR-1 — Open the calculator page As a Calculator User I should open the single Calculator page and immediately see a working calculator, so that I can start arithmetic without any setup. (explicit)
FR-2 — Enter digits
As a Calculator User I should press digit keys 0–9 to build a number, so that I can supply the operands of my calculation. (explicit)
C.FR-3 — Enter a decimal point As a Calculator User I should press the decimal point key to enter fractional numbers, so that I can calculate with non-integers. (explicit)
=.FR-4 — Select an operator
As a Calculator User I should press +, −, ×, or ÷ to choose the operation, so that I can combine two numbers. (explicit)
FR-5 — Evaluate with equals
As a Calculator User I should press = to compute the result, so that I can read the answer to my calculation. (explicit)
C to recover to the cleared/initial state or enters a new digit to start a fresh entry.C to reset.FR-6 — Clear the calculator
As a Calculator User I should press C to reset the calculator, so that I can start over cleanly. (explicit)
C is always available and always succeeds.FR-7 — Operate the calculator by keyboard As a Calculator User I should reach and activate every key with the keyboard, so that I can calculate without a pointer. (required_inference)
C to reset.Product context. The Calculator User arrives at pearl-design with a small piece of arithmetic to do — a sum, a difference, a product, a quotient — and wants the answer in seconds. They may be on a phone at 375px or on a desktop at 1280px. They have no account, no history to consult, and no expectation that the page remembers anything after they leave. The page is a public utility: it is open to anyone, and the same page serves every visitor identically.
Primary goal. Enter two numbers and an operator, press equals, and read a correct result — then either continue calculating or clear and start again.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which numbers to enter, which operator to apply, when to press equals, and whether to continue from the result or clear. The visitor also decides how to recover when a result is not what they expected or when the display shows an error.
Interactions with other accepted participants. None. The Calculator User is the only active human persona; the calculator itself is the system that responds. There is no counterparty, recipient, or approver whose state changes.
Observable success. The display shows the correct result at the large result size with the pink glow ring, the visitor can read it at a glance, and they can immediately begin another calculation or clear the page.
What makes this role distinct. The role is defined by a single, self-contained, anonymous arithmetic loop on one page. There is no durable relationship, no shared state with another person, and no identity to establish — the entire value of the product is the speed and clarity of that one loop.
+, −, ×, or ÷). The hot-pink operator key becomes the visibly selected pending operation, and the display is ready for the second number.C to return to the cleared/initial state.Failure and recovery. If the visitor presses a different operator before entering the second number, the pending operator is replaced and the flow continues from step 5. If the operation cannot be evaluated (for example division by zero), the display shows an error in place of a result; the visitor presses C to return to the cleared/initial state and begins again, or enters a new digit to start a fresh entry.
C.C to reset, without ever needing a pointer.The visual system follows the supplied creative direction: sensual pop minimalism after Karim Rashid — glossy organic shapes, candy colour, and a warm, optimistic public-utility feel. The muse is named as Karim Rashid, and the headline idea is a bubblegum-pink field holding a glossy white calculator with oversized ink result digits.
Colour tokens (light mode)
#FDE8F1 (bubblegum pink), filling most of the page.#FFFFFF (glossy white) for the calculator body, the result display capsule, and the digit keys.#2A1B2E (ink) for all text, including the wordmark, digits, and result.#FF4FA3 (hot pink) for the operator keys, the result glow ring, and the soft pink shadow under the calculator body.#B6F03C (lime) for the equals key only, and for the decorative 3D blob.#8A6F87 for the clear key surface and secondary detail.Typography
clamp(48px, 12vw, 112px), large and round.Shape language. Capsules and blobs. Keys are full capsules with a soft top highlight and a thin white gloss line. The calculator body has a 48px radius and a glossy sheen band.
Layout. One centred column at 375px. At 1280px the calculator sits to the right of a large pink type block. Keys use a 4-by-5 grid with a wide zero key.
Imagery. No photographs. One glossy 3D lime blob sits behind the calculator as decoration only, bleeding off the top-right edge.
Readability rule. Headlines, the wordmark, labels, numbers, and every control stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit. Decoration — the lime blob, the sheen band, the glow ring — may bleed, overlap, or be cropped, but must never cover readable text or a control.
Avoid. Blue or indigo accents on white; flat square buttons with no radius; gradient-blob hero behind centred marketing copy; Inter, Roboto, or system fonts; photographic stock imagery; the generic indigo/blue-on-white SaaS template.
The public entry is a full-bleed bubblegum-pink field. At top left sits the oversized lowercase pearl-design wordmark in Varela Round with wide tracking, scaling from 64px on mobile to 128px on desktop. At centre right floats the white glossy calculator body with its 48px radius, sheen band, and soft pink shadow. A glossy lime 3D blob bleeds off the top-right edge behind the body, cropped by the viewport as decoration only.
Inside the body, the result display is the largest element on the page: a white capsule holding oversized ink digits at clamp(48px, 12vw, 112px) with a pink glow ring. Below it, the 4-by-5 keypad reads as candy: glossy white digit capsules with thin white gloss lines, hot-pink operator capsules, a single lime equals capsule, and a muted clear capsule. The wide zero key anchors the bottom row.
The concept recomposes only accepted content and controls — the wordmark, the display, and the keys — and introduces no new behavior or destination. On narrow viewports the composition collapses to a single centred column with the wordmark above the calculator; on wide viewports the pink type block and the calculator sit side by side.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: layered_2d
Landing Hero Motion Brief
prefers-reduced-motion, key presses and the result update occur without scale or pop animation; the page presents the same static arrangement — wordmark, display, and full keypad — with every element fully readable and operable.+, −, ×, and ÷ produces correct numeric results, and division by zero surfaces an error state rather than a silent failure. (required_inference, from the calculator's core purpose)frontend, backend, and database services.+, −, ×, ÷), a decimal point, equals, and clear, which is the minimal complete set for a "simple calculator." (required_inference)C, showing a starting zero with no pending operation.
Quick arithmetic
Tap a key or type — digits, + − × ÷, Enter for equals, C to clear.

Quick arithmetic
Tap a key or type — digits, + − × ÷, Enter for equals, C to clear.
No comments yet. Be the first!