regal-inner is a free, browser-based, Arabic-first studio that turns written text into a short video accompanied by music. The product intent is a single transformation: the visitor types text, chooses a music track, and receives a short, scored moving image they can use immediately — at no cost.
The audience is Arabic-speaking creators, teachers, small-business owners, and social storytellers who need output fast, often on a phone, at night, with no budget. The product is deliberately framed as a generative studio rather than a request-processing form: the generated film is the artwork, and the interface is a dark plinth beneath it.
The product is free of charge. The generated video is short. The generated video includes music. These three facts are hard constraints carried from the authoritative requirement thread.
regal-inner currently delivers two pages:
Both pages are application-owned custom pages and both are reachable without an account (access_requirement: none). There is no sign-up, sign-in, or account-management capability in the current scope.
The single accepted active human actor is منشئ الفيديو النصي (the text-to-video creator). The system also performs non-human work: text-to-video generation and music attachment, executed by the backend and any generation worker it requires. These are system processes, not personas.
Current behavior in scope:
Narrow exclusions (current scope):
Delivery ownership. regal-inner is delivered as a first-party web application with custom UI. Both accepted pages are application-owned and publicly reachable. The generation pipeline (text → scenes → music → encode) is backend-owned system work; the human-facing interaction that starts, monitors, and receives that work lives on إنشاء فيديو.
Access ownership. The accepted access contract sets access_requirement: none for both الرئيسية and إنشاء فيديو. No accepted journey requires durable, privately owned, resumable actor-specific state, and no accepted commitment, entitlement, or value transfer must remain bound to a specific participant. Application-owned identity is therefore not established, and no anonymous pre-identity lifecycle is required. The product is free and account-free.
Current vs. future boundary. Current: free short text-to-video with music, on two pages. Future (not current, not in acceptance): long-form video output, and any capability not listed in Section 3.
00:14/00:30.00:00/00:00; the generate CTA is present but the composer prompts for text.Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance.
FR-1 — Free text-to-video conversion As منشئ الفيديو النصي, I should convert my written text into a video at no cost, so that I can produce a moving image without paying.
explicit (موقع مجاني يحوّل النص إلى فيديو; constraint: الموقع مجاني).FR-2 — Output is a short video As منشئ الفيديو النصي, I should receive a short video, so that the output is quick to produce and easy to share.
explicit (الفيديو الناتج فيديو قصير; constraint: الفيديو الناتج قصير).00:14/00:30).FR-3 — Output includes music As منشئ الفيديو النصي, I should receive a video that includes music, so that the result is a finished, scored piece.
explicit (الفيديو الناتج يتضمن موسيقى; constraint: الفيديو الناتج يتضمن موسيقى).FR-4 — Enter and edit the source text As منشئ الفيديو النصي, I should type or paste my text into a composer, so that the video is built from my own words.
explicit (يحوّل النص إلى فيديو).FR-5 — Choose the video duration As منشئ الفيديو النصي, I should choose a duration for the short video, so that the output fits my intended use.
required_inference (indispensable mechanic for the accepted short-video outcome; the direction specifies a duration selector and a timecode rail).00:30).FR-6 — Select a free music track with waveform preview As منشئ الفيديو النصي, I should choose one of the free music tracks by its waveform, so that the video's music matches what I want.
explicit (الفيديو الناتج يتضمن موسيقى) with required_inference for the selection mechanic (three free tracks shown as waveform strips).FR-7 — Generate the short video with music As منشئ الفيديو النصي, I should trigger generation and watch its progress, so that I know the work is happening.
explicit (يحوّل النص إلى فيديو) with required_inference for the observable progress mechanic.FR-8 — Preview the rendered short video with its music As منشئ الفيديو النصي, I should preview the rendered short video with its music, so that I can confirm the result before using it.
explicit (الفيديو الناتج يتضمن موسيقى) with required_inference for the preview stage.FR-9 — Learn that the site is free and what it does, before any commitment As منشئ الفيديو النصي, I should understand on the home page that the site is free and turns text into a short video with music, so that I can decide to start.
required_inference (public entry surface required by the accepted free, account-free product).FR-10 — See the hero canvas react to typed words As منشئ الفيديو النصي, I should see the generative canvas respond to my own typed words, so that the demo itself shows me what the product does.
required_inference (the direction's signature move; recomposes accepted content only).prefers-reduced-motion, the canvas freezes to a single composed still frame and all content stays readable in place.Product context. An Arabic-speaking creator, teacher, small-business owner, or social storyteller who needs a short, scored video and has no budget for one. They often work on a phone, at night, on a modest device. They arrive with text already written — a lesson summary, a product announcement, a social post — and want it turned into something that moves.
Primary goal. Turn their own written text into a short video with music, for free, and get it back ready to use.
Distinct accepted responsibilities.
Relevant inputs or decisions. The source text itself; the duration; which of the three free tracks to attach; whether the rendered result is acceptable or needs another pass.
Interactions with other accepted participants. There is no other accepted human participant. The creator's counterpart in the lifecycle is the system's generation pipeline, which performs text → scenes → music → encode and returns the rendered short video. The creator initiates, monitors, and receives that work; the pipeline never acts on its own behalf.
Observable success. A short video plays in the dark gallery-stage preview frame, with a timecode rail beneath it and a data-teal music waveform running directly under the frame — produced at no cost, with no account.
What makes this role's work different. The role is defined by authorship of the source text and by the aesthetic judgment of the result. It is not an administrative or configuration role: the creator's only decisions are what to say, how long, and which music — and the payoff is watching inert words become a moving, scored thing.
00:14/00:30.Failure/recovery: if a sample clip fails to load, its dark frame and prompt label remain in the rail and the CTA stays fully usable. With prefers-reduced-motion, the canvas freezes to a single composed still frame and all content remains readable in place.
Failure/recovery: with prefers-reduced-motion, the canvas holds a single composed still frame; the typed text and the CTA remain fully usable.
00:14/00:30), and a data-teal music waveform running directly under the frame.Failure/recovery: if generation fails, the light-sweep stops, a readable failure message appears in the composer block, and the entered text, chosen duration, and selected track are retained so the creator can retry without retyping. If music attachment fails, the same retention applies and the creator can retry with the same or a different track. With prefers-reduced-motion, the progress sweep becomes a static percentage bar and the preview remains readable in place.
Failure/recovery: if playback fails, the frame remains with its timecode rail and a readable message; the creator can regenerate from the retained inputs.
The creative direction is authoritative for this section. Muse: Refik Anadol. Headline idea: data made physical — the generated film is the artwork.
Mode: dark mode across the whole app.
Colour tokens (exact hex, by role):
| Role | Token | Value |
|---|---|---|
| Background (near-black ground, whole app) | --bg | #07070B |
| Surface (panels) | --surface | #12121A |
| Text (body and headings) | --text | #F2F1EC |
| Primary (ember orange — the "render" colour) | --primary | #FF7A3D |
| Accent (data-teal — waveform, playhead, finished state) | --accent | #5FE1C8 |
| Muted (labels and metadata only, never body copy) | --muted | #8C8A9A |
| Hairline | --hairline | rgba(255,255,255,0.08) |
Colour rules. #FF7A3D is used only for the single generate CTA and the live render progress sweep. #5FE1C8 marks the music waveform, the timeline playhead, and finished-state confirmation. #8C8A9A is for labels and metadata only, never for body copy. Generated video frames supply the only other colour in the page, so the UI stays a dark frame around a bright moving image. Panels use 1px rgba(255,255,255,0.08) hairlines instead of shadows.
Typography.
-0.02em tracking, sentence case (never all-caps for headlines), with a real weight jump — display headlines at 600, subheads at 400, with a 3× size gap.00:14 / 00:30): always Space Grotesk tabular, letterspaced +0.04em, set as small data ornaments beside labels.clamp(40px, 7vw, 104px); h2 clamp(28px, 3.4vw, 44px); h3 24px; body 16px/1.7 (Arabic 17px/1.9); labels 13px; timecodes 13px tabular. Mobile display floor is 40px so the headline never collides with the viewport edge.Shape language. Almost no chrome: square corners (0–4px radius) on panels and fields, hard 1px rules, and one continuous flowing form per screen — the generative canvas. Buttons are full-width rectangular blocks with a 2px inset bottom rule; no pills, no soft shadows. The only curves in the product are the moving ones in the rendered video and the music waveform, so the interface reads as a dark plinth under a living object.
Layout. Two pages. الرئيسية: full-bleed generative canvas as the first screen, a single-column reading measure (max 68ch) beneath it for the three-step explanation, then a horizontal rail of sample outputs. إنشاء فيديو: a fixed two-column workspace at 1280px — left 40% is the text composer (textarea, duration selector, music track list with waveform previews, generate block), right 60% is the sticky preview stage holding the rendered video at 9:16 or 16:9 with a timecode rail under it. At 768px the preview moves above the composer as a sticky top stage; at 375px everything stacks with the generate button pinned as a full-width bar with 16px safe margins, and all labels, timecodes, and controls wrap inside their containers.
Imagery. No stock photography and no illustration. The imagery is generative: a particle/fluid field derived from the user's own typed text (glyph positions seeding the flow), the rendered video frames themselves, and music waveforms drawn as thin luminous lines. Sample outputs on الرئيسية are shown as real looping clips in dark frames, each labelled with its source prompt in small muted type — the work is the picture.
Forbidden. Blue or indigo primary on a white ground; any #0057FF/#2563EB/#7C3AED-family accent. Inter, Roboto, Arial, Helvetica, Poppins, or system-ui for headings or body. Centred headline + subtext + blue button + gradient blob hero composition. A grid of identical hover-lift feature cards. Glassmorphic frosted panels and pastel gradient washes. Stock photography of people, clip art, or emoji as imagery. Bouncy or springy easing, confetti, particle bursts on click. Any motion that keeps running when prefers-reduced-motion is set, or a canvas that covers headline, labels, timecodes, or controls at 375/768/1280.
The hero is the demo.
The first screen of الرئيسية is a near-black full-bleed generative canvas (#07070B) carrying a slow luminous flow field in ember-orange and data-teal drifting across the right two-thirds. The left third carries the oversized Arabic-first headline «حوّل نصّك إلى فيديو قصير مع موسيقى» in Space Grotesk / Noto Kufi Arabic at clamp(40px, 7vw, 104px), flush-left, wrapping to three lines. The canvas is masked away from the text column, so the headline is never overlapped.
Beneath the headline sits one line of 16px muted copy and a single full-width ember CTA block «ابدأ مجانًا» with a thin inset rule. Along the bottom edge, a 9:16 phone-shaped preview frame floats half-bled off the right edge, playing a real rendered sample with a live waveform under it and a tabular timecode 00:14/00:30.
The signature move: the flow field is seeded from the visitor's own typed words in the composer below, before they commit to anything. The demo is the hero, and it reacts to the textarea. There is no centred stack, no gradient blob, and no floating cards.
Interaction Model: Animated Motion Tempo: cinematic Hero Dimensionality: webgl
Landing Hero Motion Brief
#FF7A3D) and data-teal (#5FE1C8) drifting across the right two-thirds of a near-black (#07070B) full-bleed canvas, masked away from the left text column.00:14/00:30.Landing Hero 3D Scene Brief — DIRECTION-DERIVED
One crafted real-time object: a single continuous particle/fluid field whose glyph positions are seeded from the visitor's typed text. It shows the product's defining state — inert words becoming luminous, flowing form — in ember-orange and data-teal on a near-black ground. It is masked away from the headline column, never covers readable text or controls at 375/768/1280, and freezes to a composed still frame under prefers-reduced-motion.
explicit (constraint: الموقع مجاني). Rationale: the free promise is the product's core positioning.explicit (constraint: الفيديو الناتج قصير). Rationale: short output is what makes fast, modest-device generation possible.explicit (constraint: الفيديو الناتج يتضمن موسيقى). Rationale: the scored result is the accepted deliverable.explicit (Arabic-first direction).explicit (audience and layout direction).explicit (readability rule).prefers-reduced-motion, the canvas freezes to a single composed still frame, the progress sweep becomes a static percentage bar, and all content remains readable in place. Provenance: explicit (direction).explicit (access contract: access_requirement: none for both pages).required_inference (indispensable observable state for the accepted generation lifecycle).00:14/00:30. (Required inference.)current/total (e.g. 00:14/00:30).No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!