urban-start is a simple calculator delivered as a single-page design. The product intent is narrow and complete: one page where a person can perform everyday arithmetic — enter numbers and operators, see the computed result, and clear the entry to start again. There is no account, no context, and no trust barrier; the interface itself is the product.
The audience is anyone who needs a quick sum. Success is a correct result obtained from one page. The design register is light, tactile, and immediately legible — a small tool with personality, closer to a well-loved desk gadget than a productivity suite.
This document is the System Requirements Document for the project named urban-start.
urban-start is a single-page web calculator. The delivered surface is exactly one page, Calculator, which is anonymously reachable and hosts all calculator interaction: number and operator entry, computed result display, and clearing the entry. There is no second page, no modal, and no sign-up flow.
Actors
Current delivery
Accepted behavior
Narrow exclusions
Removed from scope
urban-start is a first-party, browser-delivered single-page calculator. The page is anonymously reachable: a visitor opens it and immediately has a working calculator. There is no pre-identity lifecycle, because no accepted behavior requires the user to supply information, make a decision, or establish identity before calculating.
All calculator interaction — entry, result display, and clearing — lives on the one Calculator page. The shared FastAPI backend supports arithmetic evaluation where server-side computation is used; the React frontend owns the visible page, keypad, and display. The provisioned MariaDB database remains available infrastructure but carries no calculator domain data in the current scope.
Everything described in this document is current. No future-horizon requirements were stated by the user.
The single page of the product. It is anonymously reachable and contains the entire calculator experience plus a short editorial introduction.
Information and state
Primary actions
Supporting actions
Domain entities
Neither entity is persisted; both exist only in the page session.
Component responsibilities
States
FR-1 — Open the calculator As a Calculator User I should open the single Calculator page and immediately see a working calculator, so that I can begin a sum without any setup.
FR-2 — Enter numbers As a Calculator User I should press digit keys to build a number in the running expression, so that I can enter the operands of my sum.
FR-3 — Enter operators As a Calculator User I should press operator keys to place an operator in the running expression, so that I can specify the arithmetic operation.
FR-4 — Compute and display the result As a Calculator User I should press equals to compute my expression and see the result, so that I get the answer to my sum.
FR-5 — Clear the entry As a Calculator User I should press clear to reset the entry, so that I can start a new calculation cleanly.
FR-6 — Keyboard entry As a Calculator User I should be able to type digits and operators on a physical keyboard, so that I can calculate without tapping.
Product context. The Calculator User is anyone who needs a quick sum — a student checking homework, a shopper adding prices, a colleague splitting a bill. They arrive with no account, no context, and no expectation beyond a working calculator. The page is the entire product.
Primary goal. Get a correct arithmetic result from one page, quickly, without setup.
Distinct accepted responsibilities.
Relevant inputs and decisions. The digits and operators they enter, and the decision of when to press equals versus clear. They decide when a sum is complete and when to start over.
Interactions with other accepted participants. The Calculator User interacts only with the application (the page and its backend). There is no other human participant in the accepted behavior.
Observable success. A correct result appears in the display in accent #E8552F, and the user can clear and start again at any time.
What makes this role distinct. The role is defined by a single, self-contained task with no handoff, no persistence, and no identity. Its work is entirely local to one page session.
Failure/recovery. If the user presses equals on an incomplete or invalid expression, the display surfaces an error state instead of a silent wrong answer. The user presses clear and re-enters the expression.
Continuation. After reading a result, the user may clear to start a new sum or continue entering from the result.
Failure/recovery. Unrecognized keys are ignored; the user continues typing valid input.
The creative direction is authoritative for this section: Charming clarity — a calculator that feels like a friendly little machine, after the muse Susan Kare.
Headline. A small calculator for everyday sums.
Color tokens (light mode)
| Role | Hex | Usage |
|---|---|---|
| Background | #F2EFE6 | Warm paper page ground |
| Surface | #FFFDF7 | Calculator panel and key surfaces |
| Text | #1B1B1B | Near-black type and outlines |
| Primary | #1B1B1B | Wordmark, equals bar, key outlines |
| Accent | #E8552F | Operator column, equals glyphs, result readout |
| Muted | #8A857A | Micro-labels and secondary helper text |
The accent is kept to roughly 10% of the surface so it reads as a signal, not a theme. Digit keys use a pale warm fill #E9E4D6. No gradients, no glass, no blur.
Typography
clamp(40px, 9vw, 76px) in VT323; wordmark clamp(28px, 5vw, 44px); key labels 20–24px Space Grotesk; micro-labels 11px uppercase tracked; helper text 15px.Shape language. Chunky 8px-radius keys with a hard 3px near-black border and a 3px offset bottom shadow that compresses on press. The calculator body is a single rounded 16px panel with a hairline inner rule under the display. Every surface is flat fill with a crisp outline.
Spacing rhythm. Generous paper margins around the panel; the panel is capped at 420px wide on desktop; 16px gutters at 375px.
Imagery style. No photography. Pixel pictograms — a tiny pixel sun, a pixel arrow, a 4×4 pixel grid stamp — rendered as inline SVG on the paper ground, plus the calculator itself as the hero object. Small chunky-outline badges mark the three helper notes.
The public entry is the Calculator page itself, composed as a small product poster.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
prefers-reduced-motion all motion collapses to instant state changes with no frame stepping; the page remains fully usable as a static arrangement.prefers-reduced-motion all motion collapses to instant state changes.
A small calculator for everyday sums.

A small calculator for everyday sums.
No comments yet. Be the first!