orbit-hello is a public website built around a single piece of content: an AI-made film of approximately 45 minutes that plays over the internet. The requester, Raiisno Iscu, asked for "ek aisi website … jismein AI ki takriban 45 minut ki video jo net ho sake" — a site where an approximately 45-minute AI video can be watched online. The product intent is therefore narrow and deliberate: give one long AI film a calm, quiet room on the web, and let a visitor watch it end to end without distraction.
The audience is the Video Viewer — a member of the public who arrives at the site with no account, no sign-in, and no prior relationship to the product, and whose only goal is to watch the film. The site is not a catalogue, a subscription service, a video-generation tool, or a content library. It presents one film, explains in a few quiet words what it is, and plays it.
orbit-hello is a single-destination public website. It consists of one page, Landing, which presents the film's title and a short caption, and hosts a square video player that streams the approximately 45-minute AI film over the internet. There is no navigation beyond that page, no user account, no personalisation, and no stored viewer state beyond what the browser's own media element retains during a session.
The active human actor is the Video Viewer. The system also involves non-persona actors: the browser's native media pipeline, which performs the actual network streaming and decoding, and the origin that serves the video asset over HTTP. Neither is a human persona and neither appears as a destination.
Delivery uses the provisioned scaffold: a React frontend serving the Landing page, a shared FastAPI backend process that exposes the film's metadata (title, caption, duration, and the stream source reference) to the frontend, and a MariaDB database available to that backend. The video asset itself is served over the internet as a streamable media resource; the backend supplies the reference the player uses. No additional service is required for the accepted scope.
Removed from scope
The product is a viewing room, not a platform. Everything the site does serves one outcome: a visitor watches an approximately 45-minute AI film that streams over the internet. The Landing page is public and requires no identity; the viewer's session is ephemeral and owned by the browser's media element, so no application-owned identity, account, or persistent viewer record is established or needed.
The film is delivered as a network stream. The frontend requests the film's presentation details from the shared backend, receives the stream reference, and hands playback to the browser's native media element, which fetches the media over the internet and renders it in the square frame. Buffering, seeking, and playback state live in that element; the application's responsibility is to present the frame, the caption, and the play control truthfully, and to surface a clear recovery path when the stream cannot proceed.
Current scope is the single Landing page and the single film. Nothing in this document commits the product to a future library, accounts, or generation features; any such direction would be a separate future decision and is not part of current acceptance.
Purpose and information/state. The public entry surface. It explains in a few quiet words what the site is and presents the AI film of approximately 45 minutes for streaming over the internet. It is reachable by anyone, with no access requirement.
45 min · AI film · streaming, with 0.08em tracking on the label text.Primary actions. Start playback of the film; pause and resume; seek to a position in the timeline; adjust volume; enter fullscreen.
Supporting actions. Retry the stream after a failure; reload the page to re-request the film's presentation details if the initial metadata request fails.
Domain entities. Film — a single AI-made video with a title, a short description, an approximate duration of 45 minutes, a poster still, and a stream source reference. No viewer entity, no account entity, and no watch-history entity exist.
Component responsibilities.
States.
FR-1 — Present the AI film of approximately 45 minutes.
As a Video Viewer, I should see the AI-made film of approximately 45 minutes presented on the Landing page, so that I know what the site offers and can watch it.
Provenance: explicit.
Lifecycle: Trigger — the viewer opens the Landing page. Input — the backend's film presentation details (title, description, approximate duration, poster still, stream reference). Observable result — the film's title, description, square poster frame, and the caption 45 min · AI film · streaming are visible. Access — public, no identity. Failure/recovery — if the details cannot be fetched, a plain unavailable message with a retry action is shown. Continuation — the viewer proceeds to start playback.
Acceptance: the Landing page displays the film's title, a one-sentence description identifying it as an AI-made film of about 45 minutes, a square poster frame, and the caption row; the stated duration is approximately 45 minutes.
FR-2 — Stream the film over the internet. As a Video Viewer, I should play the film directly over the internet in the page, so that I can watch it without downloading a file first. Provenance: explicit. Lifecycle: Trigger — the viewer activates the play control. Input — the stream source reference supplied by the backend. Observable result — the browser's media element fetches the media over the network and renders it in the square frame; the native media controls appear. Access — public, no identity. Failure/recovery — if the stream fails to start or is interrupted, the frame shows a plain interruption message with a retry action. Continuation — playback proceeds and the viewer may pause, seek, or adjust volume. Acceptance: activating play begins network playback of the film inside the page's square frame; no file download step is required of the viewer; the film's timeline reflects a duration of approximately 45 minutes.
FR-3 — Control playback of the long film. As a Video Viewer, I should pause, resume, seek within the timeline, and adjust volume while watching, so that I can manage a viewing session that lasts about 45 minutes. Provenance: required_inference (indispensable mechanics for a usable approximately 45-minute viewing session; the source accepts a long watch over the internet). Lifecycle: Trigger — the viewer interacts with the native media controls after playback begins. Input — play/pause, timeline seek, volume. Observable result — the film pauses, resumes, jumps to the sought position, or changes volume, with the media element reflecting the new state. Access — public, no identity. Failure/recovery — if a seek lands outside the buffered range and the network stalls, the buffering indication shows and playback resumes when data arrives, or the interruption message with retry appears. Continuation — the viewer resumes watching from the chosen position. Acceptance: after playback starts, the viewer can pause and resume, move to any position in the approximately 45-minute timeline, and change volume, using the browser's native media controls.
FR-4 — Recover from a failed or interrupted stream. As a Video Viewer, I should be told plainly when the film cannot load or the stream is interrupted, and be able to try again, so that a network problem does not end my viewing session silently. Provenance: required_inference (indispensable failure and recovery mechanics for an internet-streamed film). Lifecycle: Trigger — the presentation-details request fails, or the media element reports a network or decode error. Input — the viewer's retry action. Observable result — a plain, readable message in the frame area stating what failed, and a retry control. Access — public, no identity. Failure/recovery — retry re-requests the details or re-attempts the stream; if it fails again the message remains and retry stays available. Continuation — on success the poster and play control (or playback) return. Acceptance: both failure modes produce a readable message and a working retry action; no failure leaves the page blank or the frame silently empty.
FR-5 — Read the page and operate its controls at every viewport. As a Video Viewer, I should read the title, description, caption, and reach the play control on a phone, tablet, or desktop, so that the film is watchable on whatever screen I arrive with. Provenance: explicit (the creative direction's readable-text-and-controls rule is authoritative for this project). Lifecycle: Trigger — the viewer opens the Landing page at 375px, 768px, or 1280px width. Input — viewport size. Observable result — the headline, caption, and play control remain entirely inside the viewport and their container, wrapping or scaling to fit, with no other element covering them. Access — public, no identity. Failure/recovery — not applicable beyond responsive layout. Continuation — the viewer starts playback. Acceptance: at 375px, 768px, and 1280px, the title, description, caption row, and play control are fully visible and unobstructed; the square frame scales without cropping any readable text or control.
Product context. The Video Viewer is a member of the public who has arrived at orbit-hello, most likely from a shared link or a search, with no account and no prior relationship to the site. They have not come to evaluate a product; they have come to watch one film. They may arrive on a phone during a commute, on a tablet on a sofa, or on a desktop in the evening, and they expect to be watching within seconds of the page appearing.
Primary goal. Watch the AI-made film of approximately 45 minutes, in full, over the internet, without friction, sign-up, or distraction.
Distinct accepted responsibilities.
Relevant inputs and decisions. The film's title and description; the poster still; the caption 45 min · AI film · streaming; the decision of when to start, pause, resume, or abandon the watch.
Interactions with other accepted participants. None. The Video Viewer is the only active human persona; the browser's media pipeline and the origin serving the video are non-persona actors that carry out the stream without needing the viewer's interaction beyond starting playback.
Observable success. The viewer has watched the film — in one sitting or across pauses — with playback having started from a single activation, the timeline having reflected approximately 45 minutes, and any interruption having been recoverable without losing the page.
What makes this role distinct. The role's work is almost entirely passive endurance: the product's job is to stay out of the way for 45 minutes. There is no data entry, no decision with consequences beyond the viewer's own time, no counterparty, and no state that must survive the session. The design pressure is calm and legibility, not task efficiency.
45 min · AI film · streaming, and the wood-brown play triangle.The visual direction follows Kenya Hara: emptiness around a 45-minute film. The page is a quiet room; the film is the only subject.
Mode. Light mode only.
Colour tokens (exact hex, by role).
| Role | Hex | Use |
|---|---|---|
| Background | #F4F1EA | Paper field behind everything |
| Surface | #FBFAF6 | Player frame ground and poster surround |
| Text | #26241F | Headline, description, caption, 1px rules |
| Primary | #26241F | Charcoal for the headline and rules |
| Accent | #8A6A4B | Wood brown — the play triangle and the time marks only |
| Muted | #7C776C | Secondary caption text and placeholder tone |
The wood brown is the only colour on the screen. No gradients, no glass panels, no bright accents.
Typography.
Shape language. Square and near-square frames; thin 1px rules; no corner radius above 2px. Soft edges come from light, not from corners.
Layout. One centred column on a wide paper field. The player sits in a square frame with a thin 1px charcoal rule above it and a small caption below it. The frame sits off-centre, low and left of centre, with wide margins holding the type small and quiet.
Spacing rhythm. Generous, even margins around the column; the type is deliberately small relative to the field so the emptiness reads as intentional. Vertical rhythm is set by the 1.25 scale and the rule-to-frame and frame-to-caption gaps.
Imagery style. One still frame of the film on a plain ground as the poster. No stock people, no icons, no decoration. The play triangle is the only graphic mark.
Motion. Almost still: a single slow 900ms fade brings the frame in on load. Nothing else moves. Under prefers-reduced-motion, the fade is suppressed and the frame appears immediately.
Forbidden. Gradient blobs and glass panels; large marketing headlines; card grids with hover lift; bright accent colours; icons or illustrations that carry no meaning; the generic indigo/blue-on-white SaaS template.
The quiet room. The Landing page opens as a near-empty paper field (#F4F1EA) with a single small charcoal headline set high and left with wide margins. Below and to the left of centre, a 1px charcoal rule spans the width of the square player frame; beneath the rule, the square frame holds the film's still first frame on the #FBFAF6 surface. A wood-brown play triangle sits at the centre of the frame — the only colour on the screen. Under the frame, a small Shippori Mincho caption reads 45 min · AI film · streaming with 0.08em tracking.
The gesture is subtraction: the page removes everything that is not the film, and the wide margins do the work that a hero image or a marketing headline would do elsewhere. The 900ms fade on load is the only movement — the frame arrives as if a light were being raised in a dark room. The composition recomposes only accepted content: the title, the description, the poster still, the caption, and the play control. It adds no new behaviour, no new page, and no new destination.
Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
prefers-reduced-motion: reduce, the fade is removed and the frame, rule, and caption appear immediately in their final positions. The play control remains fully operable and the layout is identical.access_requirement: none for the Landing surface).prefers-reduced-motion, the 900ms fade must be suppressed and a usable static arrangement provided. Provenance: explicit (creative direction).docker-compose.yml inventory — frontend, backend, database — is authoritative. No additional service is required for the accepted scope.none).45 min · AI film · streaming.#F4F1EA background that carries the page's wide margins and quiet composition.
45 min · AI film
An AI-made film of about 45 minutes, streamed over the internet.
45 minAI filmstreaming

45 min · AI film
An AI-made film of about 45 minutes, streamed over the internet.
45 minAI filmstreaming
No comments yet. Be the first!