solar-simple is a simple calculator delivered as a single-page design. The product exists so that a person can complete everyday arithmetic quickly, in one place, without learning an interface: they enter numbers and operators, see the computed result, and clear the calculation to start over.
The audience is the everyday calculator user — someone who wants a quick, quiet, tactile arithmetic tool rather than a dashboard, an account-based service, or a multi-screen application. The product is intentionally narrow: one page, one calculator, no navigation, no sign-up, no marketing surface.
There is no separate planning document requested for this project; this SRD is the complete specification of the product.
solar-simple is a single-page web calculator. The page presents one softly rounded calculator object against a warm stone background: an oversized tabular-number display in the upper panel, a small non-scrollable last-result line beneath it, and a disciplined four-column keypad anchoring the lower portion. A thin utility strip above the calculator carries only the wordmark "solar-simple", a tiny live calculation label, and a clear control.
Current delivery is a React frontend served as one page, backed by a shared FastAPI backend process and a MariaDB database provisioned as part of the project scaffold. The calculator's arithmetic is a client-side interaction on the single page; the backend and database are provisioned infrastructure and do not, by themselves, create accounts, stored calculations, or any additional product capability.
Actors: one active human persona, the Calculator User, who anonymously opens the page and performs arithmetic. There are no other human personas, no system-initiated user-facing work, and no provider or external destinations in the current product.
Accepted behavior: entering numbers and operators, viewing the computed result, clearing the calculation, and correcting the current calculation — all on the single Calculator page, with no identity, no persistence requirement, and no additional destinations.
Removed from scope
solar-simple is delivered as exactly one first-party page, the Calculator, reachable anonymously with no access requirement. There is no application-owned identity, no session continuity requirement, and no protected destination: the accepted calculator lifecycle is ephemeral and self-contained on the page, so no first-use identity establishment, invitation, or provisioning flow exists or is needed.
The page is the whole product. The wordmark, live calculation label, and clear control live in the page's utility strip; the display, last-result line, and keypad are the page's central subject. Nothing in the current product sits behind a login, in a second route, or in a background process the user must wait on.
Future ideas are not part of this delivery. Anything beyond the single-page calculator — persistence of calculations, accounts, history across visits, additional tools — is out of the current boundary and is not represented in the page, requirements, or flows below.
The single page of the product, anonymously reachable, hosting the complete calculator lifecycle.
Information and state
Primary actions
Supporting actions and components
States
FR-1 — Enter numbers and operators (explicit) As a Calculator User I should enter numbers and operators on the single Calculator page so that I can build the arithmetic expression I intend to compute.
FR-2 — View the computed result (explicit) As a Calculator User I should press the sage equals key and see the computed result so that I know the answer to my arithmetic.
FR-3 — Clear the calculation (explicit) As a Calculator User I should clear the calculation so that I can start over from a clean state.
FR-4 — Correct the current entry (required_inference) As a Calculator User I should delete the last entered character so that I can fix a mistyped digit without clearing the whole calculation.
FR-5 — Preserve the prior completed expression (required_inference) As a Calculator User I should see the prior completed expression quietly retained beneath the display so that I can confirm what I just computed before starting the next input.
FR-6 — Read the live calculation label (required_inference) As a Calculator User I should see a tiny live calculation label in the utility strip so that the current calculation state is legible at a glance.
FR-7 — Read long expressions without clipping (explicit) As a Calculator User I should be able to read a long expression in full so that I never lose sight of what I am computing.
Product context. The Calculator User wants to perform everyday arithmetic quickly in a single-page calculator. They arrive at the page anonymously, with no account and no prior state, and expect the calculator to be immediately usable — a quiet desk tool rather than an application to learn.
Primary goal. Complete a quick calculation and see a result that matches their intended arithmetic, then clear or correct and move on.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which digits and operators to enter; when the expression is complete enough to compute; whether to correct a single character or clear entirely; when to begin a new calculation.
Interactions with other accepted participants. None. The Calculator User is the only active human persona; there is no counterparty, recipient, or decision-maker whose state the calculation changes.
Observable success. The displayed result matches the intended arithmetic; long expressions remain fully readable; clear returns the calculator to a clean starting state; correction fixes a mistyped entry without losing the rest of the expression.
The creative direction is authoritative: "Super-normal arithmetic, made quietly obvious", after the muse Naoto Fukasawa. The emotional register is calm, familiar, tactile, and free of performance — a single-page everyday utility whose every control feels inevitable.
Colour tokens (light mode)
#ECEAE4 — soft stone.#F8F7F2 — warm paper-white.#242521 — charcoal, high contrast on the surface.#6F7D59 — sage.#D9895B — terracotta.#A6A59D — warm grey.Typography
clamp(48px, 11vw, 88px) with a 48px mobile minimum; page title 16/20px; keypad numerals 28/32px; control labels 13/16px; helper text 14/20px.Shape language
Layout
Imagery
Motion
The first screen is a quiet still life. An oversized calculator display reading "128" occupies the upper third of a warm paper-white calculator body, while the full four-column keypad anchors the lower portion. The object is centred on a soft stone background and sized to feel like a physical desk tool — about 92% of the mobile viewport width and 460px wide on desktop — without any marketing headline, generic CTA, or hero artwork.
A thin top strip carries only the small wordmark "solar-simple", a restrained "clear" control, and a tiny live calculation label, separated from the calculator body by a single rule. Sage marks the equals key; terracotta marks correction. The signature moves are:
Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
Landing Hero Motion Brief
#242521 on warm paper #F8F7F2.prefers-reduced-motion, state changes are instant and the layout remains fully usable.
Using the keypad
Enter dig to begin the number.
Choose an operator to combine it with the next number.
Press equals to see the result.
The correction key ⌫ removes the last character, so a mistyped digit can be fixed without starting over.
Clear C starts over from zero and removes any pending operator.

Using the keypad
Enter dig to begin the number.
Choose an operator to combine it with the next number.
Press equals to see the result.
The correction key ⌫ removes the last character, so a mistyped digit can be fixed without starting over.
Clear C starts over from zero and removes any pending operator.
No comments yet. Be the first!