feral-caluclayot is a simple calculator delivered as a single-page design. The product intent is narrow and complete: a person opens one page, enters numbers and arithmetic operations, reads the computed result, and clears the entry to begin a new calculation. There is no navigation, no secondary page, and no marketing surface — the calculator itself is the entire product.
The audience is broad and casual: anyone who needs quick arithmetic on a single page. The experience is designed to feel warm, approachable, and a little playful — pressing buttons should feel like a small, satisfying toy rather than a spreadsheet — while remaining instantly legible.
This document is the System Requirements Document for the project requested by Diya Trivedi.
feral-caluclayot is a single-page web calculator. The current delivery consists of:
Actors. The only active human actor is the Calculator User, who performs arithmetic on the single page. There are no other human personas, no system-to-system product actors, and no provider-owned product surfaces.
Accepted behavior. The product is a simple calculator (explicit) delivered as a single-page design (explicit). The design must be a single page (explicit hard constraint) and must be a simple single-page design (explicit hard constraint). The page is anonymously reachable with no access requirement: no account, sign-in, or identity is needed to calculate.
Ownership. All accepted human-facing behavior is owned by the single first-party page, Calculator. No other destination exists.
Narrow exclusions. There is no secondary page, no navigation beyond the single calculator, no account or identity system, no saved calculation history, and no marketing hero separate from the calculator itself.
Removed from scope
The requester asked for a simple single-page calculator design. That request is the whole current product: one anonymously reachable page where a Calculator User enters numbers and operations, sees the computed result, and clears the entry to start a new calculation. The calculator card is the first screen — there is no separate landing or marketing surface in front of it.
Delivery is first-party: the React frontend renders the page, and the shared FastAPI backend is the application API process available for the calculator's feature API. MariaDB is provisioned infrastructure; because the accepted behavior creates no durable records, it holds no calculator domain data and implies no accounts or history.
Access is anonymous and requires no identity. Nothing in the accepted requirements calls for sign-in, saved state across visits, or differentiated permissions, so none is introduced. No future-horizon requirements were stated; anything beyond the single-page calculator is out of current scope.
The sole page and public entry surface. Anonymous access; no identity required.
Information and state
clamp(44px, 9vw, 72px)).0) before any input.Primary actions
Supporting elements
Domain entities
Component responsibilities
clamp(44px, 9vw, 72px).0 6px 0 in a darker tone) so presses visibly compress.States
FR-1 — Single-page calculator delivery (explicit) As a Calculator User I should get a simple calculator on a single page so that I can do quick arithmetic without navigating anywhere.
FR-2 — Enter numbers (explicit) As a Calculator User I should press digit keys to enter a number so that I can build the value I want to calculate with.
FR-3 — Choose an operation (explicit) As a Calculator User I should press an operator key so that I can apply arithmetic to my entered number.
FR-4 — Read the computed result (explicit) As a Calculator User I should press equals so that I can see the computed result of my expression.
FR-5 — Clear and start a new calculation (explicit) As a Calculator User I should press the clear key so that I can reset the entry and begin a new calculation.
Product context. A casual, everyday person who needs quick arithmetic and opens feral-caluclayot on a single page. They are not an enterprise analyst and expect no setup, sign-in, or saved workspace — just a calculator that is instantly legible and pleasant to press.
Primary goal. Enter numbers and operations and read the correct computed result without navigating anywhere.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which digits to enter, which operator to apply, when to press equals, and when to clear. The user decides when a calculation is finished and when to begin another.
Interactions with other participants. None — the Calculator User is the sole active human actor and works alone on the page. No counterparty, recipient, or approver is affected by the calculation.
Observable success. The readout shows the correct result of the entered expression, and the user can clear and repeat without leaving the page.
Muse and headline. Friendly modular arithmetic after Pablo Stanley — warm, approachable, a little playful; pressing buttons feels like a small, satisfying toy.
Mode. Light mode only.
Colour tokens (exact hex by role)
#FFF7E9#FFFFFF#1F1A2E#FF5C39#2E8B7A#8A7F8EColour is used in confident blocks, never as a neon wash. Operators are coral-orange pills, clear is teal, equals is a wide coral bar, digits are white with ink labels.
Typography
clamp(44px, 9vw, 72px).Shape language. Big radii everywhere: fully rounded pill buttons, soft-oval calculator body with a large 32px radius, sticker-like shape accents, and soft offset shadows (0 6px 0 in a darker tone beneath keys) for a pressable, toy-like feel. No sharp corners; no hard 1px borders where a chunky outline can do the job.
Spacing rhythm. Centered single column on the cream ground; the card is capped around 420px wide on desktop and floats with generous surrounding space; on mobile it fills the width with comfortable padding. Nothing else on the page competes with the keypad.
Imagery style. No photography. Personality comes from flat vector sticker accents: a small smiling sun or star near the wordmark, a hand-drawn squiggle underline, and rounded pictograms on the clear/equals keys. Illustration is decorative and never overlaps the readout or keypad labels.
Readability constraint. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (e.g. clamp(...) with its mobile size) to fit; no other element covers any part of them.
The first screen is the calculator itself, not a marketing hero. A cream full-viewport ground (#FFF7E9) holds a single, oversized white calculator card centred with a soft offset shadow. At the top of the card, a wide pill readout shows the current number in huge rounded Nunito (clamp(44px, 9vw, 72px)). Beneath it, a 4-column grid of fully-rounded pill keys: digits in white with ink labels, operators in coral (#FF5C39), clear in teal (#2E8B7A), and equals as a broad coral bar. A short warm wordmark and a friendly one-liner sit above the card, with a hand-drawn squiggle sticker accent to the side and a small flat vector sticker (smiling sun or star) as the only decoration. The composition is dominated by the keypad's colour blocks, not by a headline-plus-button pattern. Every key carries a soft offset shadow (0 6px 0 in a darker tone) so each press visibly compresses, giving the whole card a tactile, toy-like feel.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: layered_2d
Landing Hero Motion Brief
prefers-reduced-motion, keys change colour instead of animating and the layout stays static; the readout updates without the pop and the clear key does not wobble.prefers-reduced-motion, provide a usable static arrangement where keys change colour instead of animating.
Hey there — let’s do a little math together.
Tap away — stuck? Press AC to start fresh.

Hey there — let’s do a little math together.
Tap away — stuck? Press AC to start fresh.
No comments yet. Be the first!