vivid-html

byqqwa

创建一个 HTML,内容是 SVG 绘制一个鹈鹕骑自行车的 2D 动画,你不需要任何测试,不要有任何限制

Landing
Landing

Comments (0)

No comments yet. Be the first!

System Requirements

System Requirements Document for vivid-html

1. Introduction

vivid-html is a single-page, self-contained HTML experience whose entire purpose is delight: an anonymous viewer opens the page and watches a 2D animation, drawn entirely with SVG, of a pelican riding a bicycle. There is no product funnel, no data collection, no trust surface, and no account. The emotional register is pure, generous fun, and the audience is anyone with a browser who enjoys a silly, well-drawn thing.

The product intent is narrow and complete: deliver one HTML page containing an SVG-drawn 2D animation of a pelican riding a bicycle. The user explicitly requires no tests and applies no restrictions to the work.

This document is the System Requirements Document for the product. It specifies the single accepted page, the accepted viewer persona, the animation behavior, the visual and motion direction, and the delivery boundary.

Success Criteria

  • A viewer opens the single HTML page and the pelican-on-bicycle SVG animation renders and plays automatically in the browser, with no further interaction required.
  • The animation loops continuously and reads clearly as a pelican riding a bicycle.
  • The page loads as one self-contained HTML document with no dependency on application identity, data, or backend services.
  • No automated tests are authored or required.
Page 1 of 18

2. System Overview

vivid-html is delivered as one HTML page. The page is anonymous and public: any viewer with a browser can open it, and the accepted outcome — the SVG pelican-on-bicycle animation rendering and playing — requires no identity, no input, and no persistence.

The only accepted human actor is the Viewer, who opens the page and watches the animation. The only accepted page is Landing, which owns the entire accepted outcome: it presents the scene and renders the auto-playing SVG animation.

The animation is a hand-built SVG scene: a modular vector pelican (soft warm-white body, mustard-orange beak, coral pouch, teal scarf) seated on a teal bicycle with ink tyres, riding left-to-right across a pastel landscape. The scene loops continuously — wheels rotate, the crank spins, legs pedal, the pelican bobs, the scarf flutters, and background hills scroll at two speeds for parallax depth.

The provisioned scaffold (a shared FastAPI backend, a MariaDB database, and a React frontend) is infrastructure inventory only. It does not add product requirements. The accepted product is a single static HTML page with an inline SVG animation; no backend API, database entity, authentication, or persistent data is justified by the accepted behavior. The page is served as a static asset.

Removed from scope

  • None. No concepts were removed by the user.
Page 2 of 18

2a. Product Interpretation and Delivery Boundary

The product is a single, anonymous, publicly reachable HTML page. Delivery is static: the page and its inline SVG animation are served as one document, and the animation runs entirely in the browser using SVG markup and CSS/SMIL-style animation. There is no application-owned identity, no session, no server-side state, and no data persistence in the accepted scope.

Access is open to any viewer. The page does not gate, restrict, or personalize its content. The user explicitly stated that no restrictions are to be applied, and this document preserves that as a hard constraint on the accepted work.

The current horizon contains exactly one page and one animation. No future features are accepted. The provisioned backend, database, and frontend scaffold remain available infrastructure but carry no accepted product behavior; the accepted page can be delivered as a static HTML document without invoking them.

2c. Page Content and Component Coverage

Page 3 of 18

Landing

Information and state

  • The page presents a single illustrated scene: a pelican riding a bicycle, drawn in SVG, animating continuously on load.
  • No loading state beyond the browser's own document load; the SVG is inline and renders as the document parses.
  • No empty state, no error state requiring user recovery, and no data-dependent state — the scene is static content plus looping animation.

Primary action

  • None required. The animation plays automatically; the viewer's only "action" is watching.

Supporting actions

  • A single coral pill CTA labeled "Ride again" is pinned to the bottom-left of the stage card. Activating it restarts the animation loop from its first frame (a replay of the same accepted animation; it introduces no new scene or behavior).

Domain entities

  • The SVG scene: pelican (body, beak, pouch, eye, scarf), bicycle (frame, wheels, spokes, crank, saddle), and background (sky band, road band, two hill layers, cloud cluster). These are illustration elements, not persisted data entities.
Page 4 of 18

Component responsibilities

  • Hero panel: a full-width rounded cream panel containing a pastel sky band and a warm road band, holding the oversized wordmark and the SVG stage.
  • Wordmark: "vivid-html" set in Baloo 2 at 800 weight, flush-left, oversized (clamp 44px–128px), overlapping the top edge of the stage card by 12px.
  • SVG stage card: a wide 16:9 rounded card with a 3px ink border and a 6px hard offset pastel-peach shadow, containing the full pelican-on-bicycle scene at roughly 70% of the stage width, riding left-to-right across the middle third.
  • Parallax hill layers: two pastel hill layers and a cloud cluster inside the SVG that scroll at different speeds while the pelican stays fixed, producing a moving-diorama effect.
  • "Ride again" CTA: a coral pill button pinned to the bottom-left of the stage card, with a spring hover pop (scale 1.04).
  • Sticker chips: a horizontal row of three circular, ink-outlined, pastel-filled chips beneath the stage, each naming one element of the scene — Pelican / Bicycle / Motion — with a tiny inline SVG icon.
  • Footer line: a single short footer line closing the page.

States

  • Loading: inline SVG renders with the document; no spinner or skeleton.
  • Success: the animation loops continuously; wheels rotate, crank spins, legs pedal, pelican bobs, scarf flutters, hills scroll.
  • Reduced motion: with prefers-reduced-motion, the SVG freezes in a composed still frame with the pelican mid-pedal, and entrance transforms are disabled.
  • Error/recovery: not applicable to the accepted static scene; if the browser cannot render SVG, no product-level recovery is specified.
Page 5 of 18

3. Functional Requirements

FR-1 — Deliver a single HTML page (explicit) As a Viewer, I should open one HTML page that contains the entire experience, so that I can see the animation without navigating anywhere else.

  • Trigger: the viewer opens the page URL.
  • Observable result: a single HTML document loads and displays the scene.
  • Access: anonymous, public, no identity required.
  • Failure/recovery: none specified; the page is static content.
  • Continuation: the viewer watches the animation.

FR-2 — Render a 2D animation drawn with SVG (explicit) As a Viewer, I should see a 2D animation drawn entirely with SVG, so that the scene is crisp vector artwork that plays in the browser.

  • Trigger: page load.
  • Observable result: an inline SVG scene animates continuously in the browser.
  • Access: anonymous, public.
  • Failure/recovery: none specified.
  • Continuation: the animation loops.
Page 6 of 18

FR-3 — Depict a pelican riding a bicycle (explicit) As a Viewer, I should see a pelican riding a bicycle in the animation, so that the scene reads clearly as the requested subject.

  • Trigger: page load.
  • Observable result: the SVG shows a pelican seated on a bicycle, with wheels rotating, crank spinning, legs pedaling, pelican bobbing, and scarf fluttering.
  • Access: anonymous, public.
  • Failure/recovery: none specified.
  • Continuation: the loop continues.

FR-4 — Loop the animation continuously (required_inference) As a Viewer, I should see the animation loop continuously, so that the scene keeps playing for as long as I watch.

  • Trigger: page load.
  • Observable result: the animation repeats without stopping and without requiring interaction.
  • Access: anonymous, public.
  • Failure/recovery: none specified.
  • Continuation: the loop continues indefinitely.

FR-5 — Replay the animation on demand (required_inference) As a Viewer, I should be able to press the "Ride again" CTA to restart the animation, so that I can rewatch the scene from its first frame.

  • Trigger: the viewer activates the "Ride again" pill CTA pinned to the bottom-left of the stage card.
  • Observable result: the animation restarts from its first frame and continues looping.
  • Access: anonymous, public.
  • Failure/recovery: none specified.
  • Continuation: the animation loops again.
Page 7 of 18

FR-6 — Respect reduced-motion preference (required_inference) As a Viewer who prefers reduced motion, I should see a composed still frame instead of continuous motion, so that the page remains usable and comfortable.

  • Trigger: the browser reports prefers-reduced-motion: reduce.
  • Observable result: the SVG freezes in a composed still frame with the pelican mid-pedal; entrance transforms are disabled.
  • Access: anonymous, public.
  • Failure/recovery: none specified.
  • Continuation: the still frame remains displayed.

FR-7 — No tests required (explicit) As the project owner, I should not need any automated tests, so that the deliverable stays a single hand-made HTML page.

  • Trigger: project delivery.
  • Observable result: no test suite is authored or required.
  • Access: not applicable.
  • Failure/recovery: not applicable.
  • Continuation: not applicable.

FR-8 — No restrictions applied (explicit) As the project owner, I should have no restrictions applied to the accepted work, so that the page can be built freely as requested.

  • Trigger: project delivery.
  • Observable result: the accepted work is not gated by restrictions.
  • Access: not applicable.
  • Failure/recovery: not applicable.
  • Continuation: not applicable.

4. User Personas

Page 8 of 18

Viewer

Product context. The Viewer is anyone with a browser who opens the vivid-html page. They arrive with no account, no prior relationship to the product, and no task beyond curiosity. The page is a single anonymous public surface.

Primary goal. Watch a 2D SVG animation of a pelican riding a bicycle, and enjoy it.

Distinct accepted responsibilities.

  • Open the single HTML page.
  • Watch the auto-playing SVG animation.
  • Optionally press "Ride again" to replay the animation from its first frame.

Relevant inputs or decisions.

  • Whether to keep watching or replay via the CTA.
  • No data entry, no configuration, no identity.

Interactions with other accepted participants. None. The Viewer is the only accepted human actor; there is no counterparty, recipient, or beneficiary whose state changes.

Observable success. The animation renders and plays in the browser without further interaction; the scene reads clearly as a pelican riding a bicycle; the loop continues; the "Ride again" CTA restarts it; reduced-motion viewers see a composed still frame.

5. Core User Flows

Page 9 of 18

Flow 1 — Open the page and watch the animation

  1. The Viewer opens the vivid-html page URL in a browser. (Landing)
  2. The single HTML document loads; the inline SVG scene renders as the document parses.
  3. The animation begins automatically: wheels rotate, crank spins, legs pedal, the pelican bobs, the scarf flutters, and the background hills scroll at two speeds for parallax depth.
  4. The Viewer watches the scene loop continuously. No interaction is required.
  5. Success: the animation plays and loops; the Viewer has experienced the accepted outcome.
  6. Failure/recovery: if the browser cannot render SVG, no product-level recovery is specified; the page remains a static document.
  7. Continuation: the loop continues for as long as the page is open.

Flow 2 — Replay the animation

  1. The Viewer is on the Landing page with the animation playing.
  2. The Viewer activates the coral "Ride again" pill CTA pinned to the bottom-left of the stage card.
  3. The animation restarts from its first frame and continues looping.
  4. Success: the Viewer rewatches the scene from the beginning.
  5. Continuation: the loop continues.
Page 10 of 18

Flow 3 — Reduced-motion viewing

  1. The Viewer, whose browser reports prefers-reduced-motion: reduce, opens the page. (Landing)
  2. The SVG renders in a composed still frame with the pelican mid-pedal; entrance transforms are disabled.
  3. The Viewer sees the still scene without continuous motion.
  4. Success: the page remains usable and comfortable.
  5. Continuation: the still frame remains displayed.
Page 11 of 18

6. Visuals Colors and Theme

The creative direction is authoritative for this section: Warm modular whimsy for one very serious pelican on a bicycle, muse Pablo Stanley.

Palette (light mode)

  • Background: #FFF6E5 (warm cream ground)
  • Surface: #FFFFFF
  • Text: #1F2A44 (deep ink)
  • Primary: #F4A62A (mustard-orange — pelican beak)
  • Accent: #E4572E (coral-orange — pelican pouch, "Ride again" CTA)
  • Muted: #7A8AA0
  • Supporting: teal #2A9D8F (bicycle frame, scarf), sky band #BFE3DD, road band #F6D8A8
  • Outlines: #1F2A44 at 3px on every illustration element

Accent is used only on the beak/pouch and the one pill CTA, never as a flood.

Typography

  • Headings: Baloo 2, 800 weight, rounded terminals, slight negative tracking (-0.01em), sentence case with one oversized display line.
  • Body: DM Sans, 18px / 1.65.
  • Labels: DM Sans 700 uppercase, 13px, 0.12em tracking on pill chips.
  • Scale: 1.333 modular — 18/24/32/48/64/96; display clamp(44px, 9vw, 128px) for the hero wordmark.
Page 12 of 18

Shape language

  • Big radii everywhere: 28px cards, fully pill buttons and chips, a soft blob behind the hero, sticker-like circular badges with a 2px ink outline and a 4px offset hard shadow in a pastel tint.
  • 3px ink strokes on every illustration element so the SVG reads like a friendly vector character kit, not flat clip art.
  • No sharp corners anywhere except the SVG's own wheel spokes.

Layout

  • Single column, centred, generous 24px mobile / 48px desktop gutters.
  • Hero is a full-width rounded panel (cream sky + pastel ground band) containing the oversized wordmark stacked above the SVG stage.
  • The SVG stage is a wide 16:9 rounded card with a 3px ink border and a hard offset shadow, bleeding slightly past the gutters on desktop and sitting fully inside them at 375px.
  • Below: a horizontal row of three sticker chips describing the scene, then a footer line. Nothing else — one page, one subject.

Imagery

  • The SVG scene itself is the imagery: a modular vector pelican — white rounded body, mustard beak with coral pouch, small ink eye with a highlight dot, teal scarf — seated on a teal bicycle with ink tyres, chrome-grey spokes and a coral saddle.
  • Behind it, two layers of pastel hills and a soft cloud cluster scroll at different speeds for parallax. No photography, no stock people, no gradients-as-decoration beyond the pastel sky.

Readable text and controls stay whole at every viewport (375px, 768px, 1280px), wrapping or scaling to fit; imagery, decoration and motion may be cropped, bled, rotated, overlapped or cut as the direction asks, as long as they cover no readable text or control.

Page 13 of 18

7. Signature Design Concept

The public entry is a single oversized rounded stage: a cream panel with a pastel sky band and a warm road band. The wordmark "vivid-html" is set in Baloo 2 at up to 128px, flush-left, deliberately overlapping the top edge of the stage card by 12px so type and illustration share one plane. The SVG pelican-on-bicycle is drawn large (roughly 70% of the stage width) riding left-to-right across the middle third. A single coral pill CTA ("Ride again") is pinned to the bottom-left of the stage card rather than centred beneath it, with a spring hover pop. Three sticker chips beneath the stage — circular, ink-outlined, pastel-filled — each name one element of the scene (Pelican / Bicycle / Motion) with a tiny inline SVG icon.

The dominant element is the pelican, not the type; the type is a bold supporting gesture. Nothing is centred in the SaaS sense; the composition is asymmetric and sticker-like. The stage card carries a 3px ink border and a 6px hard offset shadow in pastel peach, holding the entire SVG scene as one illustrated poster.

Page 14 of 18

8. Interaction Model & Motion Direction

Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: layered_2d

Landing Hero Motion Brief

  • Focal subject: the modular vector pelican on its teal bicycle, riding left-to-right across the middle third of the stage.
  • Input → transformation → outcome thesis: on page load, the scene begins moving — wheels rotate, the crank spins, legs pedal, the pelican bobs, the scarf flutters, and two pastel hill layers plus a cloud cluster scroll at different speeds — producing a continuous moving diorama that loops indefinitely. Pressing "Ride again" restarts the loop from its first frame.
  • Motion vocabulary: springy but purposeful; continuous looping SVG animation; two-speed parallax hills; one staggered entrance of the wordmark and chips (translateY 16px + fade, 60ms stagger); a hover pop on the CTA (scale 1.04, spring easing).
  • Composed first frame: the cream stage with pastel sky and warm road bands, the oversized flush-left wordmark overlapping the stage top, the pelican mid-pedal at roughly 70% stage width, the coral "Ride again" pill pinned bottom-left, and the three sticker chips beneath.
  • Reduced-motion state: prefers-reduced-motion freezes the SVG in a composed still frame with the pelican mid-pedal and disables entrance transforms.
Page 15 of 18

9. Non-Functional Requirements

  • No tests (explicit): no automated test suite is authored or required for this project.
  • No restrictions (explicit): the accepted work is not gated by restrictions; the page may be built freely as requested.
  • Static, self-contained delivery (required_inference): the page is a single HTML document with inline SVG; it requires no backend API, database, authentication, or persistent data to deliver the accepted outcome.
  • Browser-rendered animation (required_inference): the animation runs client-side in the browser using SVG markup and CSS/SMIL-style animation; no server-side rendering of frames is required.
  • Reduced-motion accessibility (required_inference): the page honors prefers-reduced-motion with a composed still frame.
  • Readable text and controls (required_inference): headlines, wordmarks, labels, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px.

10. Tech Stack

  • HTML — the single deliverable page.
  • SVG — the 2D animation, drawn inline in the HTML.
  • CSS — layout, typography, shape language, entrance stagger, hover pop, and prefers-reduced-motion handling.
  • Baloo 2 and DM Sans — web fonts for headings and body.
  • Provisioned scaffold (inventory only, not required by accepted behavior): shared FastAPI backend, MariaDB database, React frontend. These remain available infrastructure but carry no accepted product requirement; the accepted page can be served as a static asset.
Page 16 of 18

11. Assumptions and Constraints

  • Assumption: the page is served as a static HTML document; no backend route, database table, or authentication flow is needed for the accepted outcome.
  • Assumption: the viewer has a modern browser capable of rendering inline SVG and CSS animation.
  • Constraint (explicit): no tests are required.
  • Constraint (explicit): no restrictions are to be applied to the accepted work.
  • Constraint (explicit): the deliverable is a single HTML page containing an SVG-drawn 2D animation of a pelican riding a bicycle.
  • Constraint (creative direction): the generic indigo/blue-on-white SaaS template is forbidden; the palette, fonts, shape language, layout, and motion follow the supplied creative direction.
Page 17 of 18

12. Glossary

  • SVG — Scalable Vector Graphics; the XML-based vector format used to draw the 2D animation.
  • 2D animation — motion produced by animating flat vector elements (wheels, crank, legs, scarf, hills) within the SVG scene.
  • Stage card — the wide 16:9 rounded card with a 3px ink border and hard offset shadow that holds the SVG scene.
  • Wordmark — the oversized "vivid-html" display text set in Baloo 2, flush-left and overlapping the stage card.
  • Sticker chip — a circular, ink-outlined, pastel-filled badge naming one element of the scene (Pelican / Bicycle / Motion).
  • "Ride again" CTA — the coral pill button pinned to the bottom-left of the stage card that restarts the animation loop.
  • Parallax hills — two pastel hill layers inside the SVG that scroll at different speeds while the pelican stays fixed.
  • Reduced motion — the prefers-reduced-motion browser preference, honored by freezing the SVG in a composed still frame.
Page 18 of 18
Live
Landing design preview
Landing: Open page URL
Landing: Watch animation play
Landing: 1. Watch continuous loop
Landing: 2. Press Ride again
Landing: 3. Watch replay from first frame
Landing: View reduced-motion still frame
Live
Landing design preview
Landing: Open page URL
Landing: Watch animation play
Landing: 1. Watch continuous loop
Landing: 2. Press Ride again
Landing: 3. Watch replay from first frame
Landing: View reduced-motion still frame