eagle-simple is a simple calculator delivered as a single page. The product intent is narrow and exact: a person opens one page, enters numbers and operators, and reads the arithmetic result. There is no account, no navigation between destinations, and no workflow beyond basic calculation on that one page.
The audience is anyone who needs fast arithmetic — a public calculator user who wants a calm, exact, trustworthy tool rather than a playful one. The design brief follows Massimo Vignelli's systematic clarity: a strict grid, coded colours, flat keys, and a large tabular result numeral.
This document is the System Requirements Document for eagle-simple. It specifies the single-page calculator, its one active human persona, its page content and component coverage, its core user flow, and the visual, interaction, and technical constraints that govern delivery.
eagle-simple is a single-page web calculator. The application consists of exactly one page, Calculator, which is both the public entry surface and the working calculator. A visitor arrives at the page, uses the keypad and operator keys to build an expression, and reads the result in a full-width result band. No other destination exists.
The active human actor is the Calculator user, who enters numbers and operators and reads the result. There are no other human personas. The application backend and database are provisioned infrastructure; the calculator's arithmetic is a client-side interaction on the single page, and no durable application-owned record of calculations is required by the accepted requirements.
Current delivery is a React frontend served as the single Calculator page, backed by a shared FastAPI process and a MariaDB database provisioned as scaffold infrastructure. The calculator page itself requires no authentication and no persisted user state.
Removed from scope
The product is one page and one job: arithmetic. The Calculator page is publicly reachable with no access requirement — a visitor lands directly on the calculator and can use it immediately. There is no anonymous pre-identity lifecycle, because no protected state, commitment, or durable actor-specific record exists that would require identity.
All accepted behavior lives on the single Calculator page. The shared backend and database are provisioned infrastructure that support the application; they do not introduce additional product surfaces, accounts, or stored calculation history. Nothing in the accepted requirements extends beyond this single page, and no future capabilities are specified.
The single page of eagle-simple. It is the public entry and the calculator itself: the user enters numbers and operators and reads the result here.
Information and state
Primary actions
Supporting actions
Domain entities
Component responsibilities
States
FR-1 — Single-page calculator (explicit) As a Calculator user, I should open a single page that is a calculator, so that I can do basic arithmetic in one place.
FR-2 — Enter numbers and operators (explicit) As a Calculator user, I should enter numbers and operators on the keypad, so that I can build the expression I want to calculate.
FR-3 — Read the result (explicit) As a Calculator user, I should read the result of my calculation, so that I know the answer.
FR-4 — Clear the calculation (required_inference) As a Calculator user, I should clear the current expression and result, so that I can start a new calculation or recover from an error.
Product context. The Calculator user arrives at the single Calculator page needing fast, exact arithmetic. They are not signing in, not managing anything, and not navigating — the page is the whole product. The design must feel calm and trustworthy, like a clear sign system, not playful.
Primary goal. Enter a calculation and read its correct result quickly, on one page.
Distinct accepted responsibilities.
Relevant inputs or decisions. Which digits and operators to press, when to press equals to evaluate, and when to press clear to reset.
Interactions with other accepted participants. None. The Calculator user is the only active human actor; there is no counterparty, recipient, or other participant whose state changes as a result of the calculation.
Observable success. The result band shows the correct evaluated result for the entered expression, and the user can clear and repeat the calculation.
The visual direction is authoritative: systematic clarity after Massimo Vignelli. The calculator must feel exact, calm, and trustworthy — a clear sign system, not a playful toy.
Palette (light mode)
#F4F1EA — warm paper ground covering most of the page.#FFFFFF — flat white keys.#111111 — black type and rules carrying the structure.#D22630 — red, marking operator keys and the result rule.#F2B705 — yellow, marking the clear key only.#6E6A63 — secondary labels and supporting text.Typography
clamp(56px, 12vw, 128px).Shape language
Layout
Imagery
Avoid
Readable text and controls stay whole at every viewport (375px, 768px, 1280px): headlines, labels, numbers, and controls stay entirely inside the viewport and their container, wrapping or scaling to fit, with no other element covering them.
The first screen is the calculator itself. A huge black result numeral — up to 128px, set in Archivo with tight tracking — sits flush left on the warm paper ground (#F4F1EA) under a thin red rule (#D22630). The 4-column keypad fills the lower half with flat white keys bordered in 1px black, red-filled operator keys, and a single yellow-filled clear key.
The signature moves are:
clamp(56px, 12vw, 128px) numeral aligned flush left to the grid.This concept recomposes only the accepted calculator content and controls — the result band, the keypad, and the key groups — into a single, exact, sign-like composition.
Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
Landing Hero Motion Brief
#F4F1EA. At the top, a thin red rule spans the column; beneath it, a large black result numeral flush left. Below, small wide-tracked uppercase group labels align to rule lines, and the 4-column keypad of flat white keys with red operator keys and a yellow clear key fills the lower half.prefers-reduced-motion, the page is fully usable as a static arrangement: the 80ms colour flip is retained as an instantaneous state change (or removed), and the result band updates without transition. All keys remain fully visible and operable.NFR-1 — Single page (explicit) The design must be a single page. No additional destinations, routes, or navigation may be introduced.
NFR-2 — Simplicity (explicit) The design must be a simple single-page calculator. No adjacent capabilities (history, memory, scientific functions, accounts) are in scope.
NFR-3 — Readable at every viewport (explicit, from design constraints)
Headlines, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...)) to fit, with no other element covering them.
NFR-4 — Accessible contrast and legibility (required_inference)
Black text (#111111) on the warm paper ground (#F4F1EA) and on white keys (#FFFFFF) provides strong contrast; red operator keys (#D22630) and the yellow clear key (#F2B705) carry legible labels. Tabular numerals keep the result band stable as digits change.
NFR-5 — No authentication (explicit) The Calculator page has no access requirement; it is publicly reachable with no sign-in.

Basic arithmetic
Ready
ExpressionNo entry
0

Basic arithmetic
Ready
ExpressionNo entry
0
No comments yet. Be the first!