Airline · Featured

Cirrus

Cirrus is a premium airline website template built with Next.js, TypeScript, Tailwind and All-intra video scrub + GSAP. A premium airline told as one golden-hour flight — the wordmark burns through an ivory plate, films scrub by scroll, and the colour arrives with the light. The Claude Code prompt that builds it is free; the exact tested source code is unlocked by Studio Access — $149 for every template on the shelf, with a commercial license for unlimited projects.

Next.jsTypeScriptTailwind CSSGSAPLenisScroll-scrubbed video
Source code locked
Live demo ↗

Unlocked by Studio Access — all 19 templates, every future drop, unlimited projects. $149 once.

Source code

Specifications

Framework
Next.js · TypeScript · Tailwind
Motion
All-intra video scrub + GSAP
Category
Travel
Use case
Airline
Responsive
Desktop → mobile
License
Commercial · unlimited projects
Delivery
Instant ZIP download

What the paid download adds

  • The exact deployed code — tested, not AI-guessed
  • Config-driven copy, palette & assets
  • Compressed media included
  • Deploy README — Vercel or your own VPS
  • Commercial license — one end product
  • Free updates to this template

The free Claude Code prompt

Run this with Claude Code to build your own Cirrus variant — free. Want the exact, tested code shown in the demo? It’s in Studio Access, with every other template.

# CIRRUS — Free Claude Code Prompt

*From SmartDuke Studio (studio.smartduke.com). Run it with Claude Code
and build your own variant. Want the exact tested code — the encoded
films, the masked-wordmark hero, the scrub engine with the iOS fixes —
that's the paid download at https://studio.smartduke.com*

## Before you start

- Node.js ≥ 20.9 and ffmpeg on PATH.
- You need 4 short aviation films (8–15s each) plus 4 destination
  photos. Generate the films with an AI video tool (Kling works well) —
  ONE continuous take per clip, slow constant motion, no cuts, every
  clip legible scrubbed backwards:
  1. **hero** — exterior tracking along the fuselage at golden hour,
     ending close on a window (~8s)
  2. **emerge** — the aircraft appearing out of sun flare above a cloud
     sea (~5s)
  3. **cabin** — gliding through a porthole into a luxury cabin, ending
     looking out a window at the wing (~10s)
  4. **window** — down a cabin aisle, portholes glowing (~10s)
- Encode each all-intra:
  `ffmpeg -i in.mp4 -an -vf "scale=1600:-2" -c:v libx264 -preset slow
  -crf 27 -g 1 -pix_fmt yuv420p -movflags +faststart out.mp4`
  (-g 1 makes every frame a keyframe — that's what makes scrubbing
  instant). The full-bleed hero deserves 1920 / crf 19 with a gentle
  `unsharp=5:5:0.35` so it survives browser scaling. Total under ~30MB.

## The prompt

> Build me a premium airline website told as one golden-hour flight —
> Awwwards-level, for a fictional carrier that flies only at sunrise.
>
> **Stack:** Next.js App Router + TypeScript + Tailwind v4 + GSAP
> ScrollTrigger + Lenis smooth scroll (Lenis drives ScrollTrigger's
> clock via one shared gsap.ticker).
>
> **Theme — bright, not dark:** warm ivory canvas #f6f1e7, espresso ink
> text #231a10, ochre accent #c07f1d sampled from the footage's sun.
> Space Grotesk for display type, Space Mono for the instrument layer
> (labels, times, route codes). Faint film grain over everything.
> `overflow-x: clip` on html AND body — never hidden.
>
> **Global layer:**
> - Custom cursor: a rotating instrument reticle — thin ring, four tick
>   marks, gold centre dot, `mix-blend-mode: difference`. Idles at a
>   slow spin, spins faster and scales ×2.2 over links/buttons/films.
>   Only when `(pointer: fine)`.
> - Gold dust: ~140 ochre specks on a fixed 2D canvas, multiply blend,
>   rising slowly, streaming with scroll velocity, twinkling.
> - Reveal kit, all fire-once on entry: per-word masked lifts (put the
>   joining space OUTSIDE each word's overflow mask — a trailing space
>   inside an inline-block is dropped by CSS and glues words together),
>   rising blocks, hairlines that draw themselves scaleX 0→1, clip-path
>   wipes `inset(100% 0 0 0)` → 0 for media.
> - Nav: fixed, ivory gradient scrim fading out by 130px (no solid
>   bar), mono wordmark, items The idea / The aircraft / Cabin /
>   Departures, ink Reserve pill. Full-screen ivory mobile menu.
>
> **The scrub engine (shared by every film section):** a tall section
> with a sticky viewport child; ScrollTrigger (top top → bottom bottom)
> maps progress to a target time; a gsap.ticker lerps
> video.currentTime toward it (factor 0.14, skip deltas < 0.004s, bail
> while readyState < 2). First-frame poster jpg under every video.
> IntersectionObserver gates each ticker and upgrades preload one
> viewport early. iOS: play() then pause() on mount, retry on first
> touch, RE-ARM after any load() call.
>
> ---
>
> **Section 1 — Hero, the masked wordmark (340vh):**
> The page opens as an ivory plate with "CIRRUS" punched out of it at
> viewport-filling size, the hero film playing through the letters.
> Build the mask at runtime: a canvas the size of the viewport, white
> fill, the wordmark drawn with globalCompositeOperation
> 'destination-out' in bold Space Grotesk (regenerate on resize and
> when document.fonts.ready lands), applied to the plate div as
> CSS mask-image (with -webkit- prefix).
> Scroll timeline: over the first 30% the mask-size swells ~10× (you
> fly through a letterform) while the plate's opacity fades out over
> the last quarter of that zoom; the film scrubs the whole time; from
> 34% a huge left-aligned headline rises ("The sky, / first class." —
> second line italic ochre) with sub-copy and a CTA pill, exiting
> upward at 82%. Offset the film scrub to start ~0.9s in (skip the
> clip's dull opening) and regenerate the poster from that offset.
> While the plate is up, give the film a warm bright grade
> (sepia .42, saturate 1.5, brightness 1.16, contrast 1.06) easing to
> natural exactly as the plate dissolves — the letters read golden at
> any sampling position. Put the grade on a wrapper holding BOTH the
> poster img and the video. Corner mono labels top-left/right, a
> scroll-hint hairline bottom-centre that fades on first scroll.
>
> **Section 2 — The idea (text, ivory):**
> A display sentence at clamp(2.1–4.4rem) where small rounded film
> stills sit INLINE between the words (height 0.92em, width 2.1em,
> rounded-full, soft shadow, clip-path wipe on entry): "We fly one hour
> a day — [chip] the golden one. Doors close at first light, [chip]
> wheels down before the glow fades. [chip] Every seat faces the show."
> Words lift from masks; below, three fact columns (One aircraft / One
> hour / Every seat) each behind a self-drawing hairline.
>
> **Section 3 — The aircraft (split, ivory):**
> Left: label, big headline ("Built for / the light." italic ochre),
> body, then a spec sheet — hairline rows where the numbers COUNT UP
> once on entry: Range 8,400 km · Cruise 921 km/h · Wingspan 64 m ·
> Suites 48. Right: the emerge film scrubbing inside an ARCH-shaped
> frame (border-radius 999px 999px 26px 26px, 4/5 aspect, hairline
> border, deep soft shadow) — the sun flare crests at the arch's apex.
>
> **Section 4 — The cabin (full-bleed scrub, 300vh):**
> The porthole-entry film full-bleed. Ivory gradient veils top and
> bottom (the page colour bleeding into the film, no dark scrims); ink
> headline top-left ("Through the / window." italic ochre), mono hint
> top-right ("Scroll — the glass gives way"); at the bottom, body copy
> plus frosted ivory fact pills (Suites 48 · Crew 12 · Middle seats 0).
>
> **Section 5 — Departures (the board, ivory):**
> An airport departures board: header row in mono smallcaps, then four
> hairlined rows — gold mono time, "CIR → HND" route code, the city
> name huge in display type, and a "Golden hour" status with a glowing
> gold dot. Hovering a row tints it ochre, slides the city name right,
> and floats a real destination PHOTO in from the right edge — fixed,
> 260px, 3/4, slightly rotated, settling upright on hover. Tokyo,
> Paris, Dubai, New York.
>
> **Section 6 — Reserve (film CTA, 220vh):**
> The aisle film full-bleed under a frosted ivory veil (gradient ivory
> → 35% opacity → ivory), centred ink headline ("Board the / golden
> hour." italic ochre) with word-mask reveals, ink CTA pill
> ("Reserve — from $1,400"), refund note. Footer: ivory, hairline-top
> columns, mono smallcaps headers.
>
> ---
>
> **A11y + housekeeping:** every video muted playsInline with real
> copy in the DOM for screen readers; prefers-reduced-motion gets
> posters, final states, no cursor/dust; verify scrubbing by reading
> video.currentTime at two scroll depths — never by screenshot.

## Gotchas we hit (the paid version has these fixed)

- A grade applied to the video element only still flashes the ungraded
  poster underneath — put the filter on a wrapper that holds both.
- Centred wordmark sampling a grey band of the frame: keep the film
  centred and warm-tint during the letters phase instead of offsetting
  the footage.
- Kling 3.0 will happily insert cuts — prompt "one continuous shot" and
  verify with a scene-change filter before building on a clip.
- The iOS unlock must be re-armed after load() or the hero works and
  every later chapter silently freezes.
- Tie text exits to the sticky RELEASE, not chapter progress.
- `overflow-x: hidden` on html/body silently kills every
  position:sticky — use clip.

Cirrus — questions

What is the Cirrus template built with?

Cirrus is a Airline website built with Next.js, TypeScript, Tailwind CSS, GSAP, Lenis, Scroll-scrubbed video. The motion is driven by All-intra video scrub + GSAP, with Lenis smooth scrolling and GSAP ScrollTrigger for the scroll choreography.

How much does Cirrus cost?

The free Claude Code prompt that builds a Cirrus variant is $0. The exact, tested source code — the same site shown in the demo — comes with Studio Access: $149 once for every template plus every future drop, delivered as instant ZIP downloads with a commercial license for unlimited projects.

Can I use Cirrus for a client project?

Yes. Studio Access includes a commercial license to use Cirrus — and every other template — in unlimited end products, including paid client work. Everything is config-driven, so copy, palette and assets re-skin from a single file.

What's the difference between the free prompt and the paid download?

The free prompt gets Claude Code to build you a Cirrus variant — genuinely good, but it costs tokens and debugging time and results vary. The paid download is the exact site in the demo: tested, compressed, documented, licensed, with free updates.

Related templates

Part of

Unlock Cirrus — and everything else.

The free prompt gets you a variant. One Studio Access licence unlocks this exact tested site, the other 18 on the shelf, and every future drop — $149 once, unlimited projects.