Luxury cruise · Featured
Aurelia
Aurelia is a premium luxury cruise website template built with Next.js, TypeScript, Tailwind and All-intra video scrub + GSAP. A voyage from above the clouds to a dinner at sea — scroll is the ship. The Claude Code prompt that builds it is free; the exact tested source code is $79 with a commercial license.
Specifications
- Framework
- Next.js · TypeScript · Tailwind
- Motion
- All-intra video scrub + GSAP
- Category
- Luxury
- Use case
- Luxury cruise
- Responsive
- Desktop → mobile
- License
- Commercial · one end product
- 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 Aurelia variant — free. Want the exact, tested code shown in the demo? That’s the $79 download.
# AURELIA — Free Claude Code Prompt *From SmartDuke Studio (studio.smartduke.com). The real prompt behind our luxury-cruise template. The exact tested build — the encoded scrub films, all the section choreography, every fix — is the paid download: https://studio.smartduke.com* ## Before you start 1. **Get one cinematic voyage film** (~10–20s, 1440p): a continuous aerial-to-onboard journey reads best — above golden clouds → down to a ship gliding the open sea. This is the hero scrub; the descent IS the scroll story. A second short clip of a couple at a golden-hour dinner powers the Dining section. 2. **Re-encode both all-intra** so scrubbing lands on any frame: `ffmpeg -i journey.mp4 -an -c:v libx264 -preset slow -crf 20 -g 1 -pix_fmt yuv420p -movflags +faststart public/vid/journey.mp4` (repeat for the dining clip). `-g 1` — every frame a keyframe — is what lets `currentTime` land anywhere without judder. 3. **Pull the poster + stills from the same films**: `ffmpeg -ss 0.2 -i journey.mp4 -frames:v 1 -q:v 3 public/img/hero-poster.jpg`, plus destination, suite, onboard and gallery frames (or your own photography). An aerial ship-in-clouds frame makes the closing shot. 4. Node.js ≥ 20.9. ## The prompt > Build a cinematic, Apple-keynote-grade website for a **fictional > luxury cruise line** where **scrolling sails the ship** — a single > aerial film scrubs frame-by-frame from above the clouds down to the > open sea. Awwwards standard, restrained, editorial. Deep navy paper > (#061423) with a near-black surround (#030A12) for the film moments, > warm foam white (#F4F1EA) ink, ONE warm-gold accent (#C8A15A). > Display font **Cormorant Garamond** (high-contrast serif), body > **Inter**, line-labels **Jost**, all via next/font. > > **Stack:** Next.js App Router + TypeScript + Tailwind v4 + **GSAP** > (ScrollTrigger for all scroll work + **SplitText** for word/char > reveals) + **Lenis** (smooth scroll). No 3D — the motion is the > all-intra `<video>` scrub. Put the brand, all copy, every section's > arrays and image/video paths in `src/config.ts` so it re-skins from > one file; empty media paths must render labelled placeholders. > > **0 · Preloader — the overture.** A near-black curtain: the tagline > and the AURELIA wordmark fade in, a gold progress rail fills from REAL > progress (read the hero `<video>` buffer + poster load, not a fake > timer), then the whole curtain lifts (yPercent -101). A minimum hold > so it never flashes and a hard cap so it can never hang. Lock scroll > (Lenis `.stop()` + body/html overflow) while it's up; release on > reveal so the hero opens already buffered — never a half-loaded pop. > > **1 · Hero — the descent scrub (≈420vh pinned).** A full-bleed > `<video>` (all-intra `journey.mp4`) whose `currentTime` is driven by > scroll: ScrollTrigger onUpdate sets a target time from progress, a > gsap.ticker lerps `video.currentTime` toward it (factor ~0.12). GATE > the ticker with `if (!duration || video.readyState < 2) return;` — the > film rests on its poster first frame and only seeks on scroll. Over > it: the brand line, a word-by-word headline reveal (each word in an > `overflow-hidden` mask, yPercent 120→0, staggered), an italic sub, a > CTA that scales 0.9→1, and a bobbing scroll cue. The whole overlay > fades + rises away over the first ~38% of scroll; a radial vignette > deepens toward the end so the next act lands. > > **2 · Experience — oversized type + masked image + count-up.** A > big three-line serif statement whose image reveals via a clip-inset > wipe, beside a 4-cell stat grid where each number counts up from 0 on > enter (gsap tween + ScrollTrigger once) with a gold suffix. > > **3 · Destinations — horizontal-scroll gallery (pinned).** Six > destination cards translate horizontally as you scroll down (pin the > section, map vertical progress → x). Each card has a photo, name, > region and a one-line lure; the section background tint shifts toward > the active card's tint. `invalidateOnRefresh: true` so the track width > recomputes on resize. > > **4 · Life Onboard — synced image cross-fade (pinned).** A split > layout: a list of onboard features on one side, a large image on the > other. Scrolling (or clicking a feature) advances the active feature — > its image cross-fades in and a gold line marks the active label. Drive > the active index from scroll progress over a pinned span. > > **5 · Suites — stacked reveals.** Four suites stack; each reveals via > a clip-inset wipe with its name, area and a line of copy, image to one > side. Alternate the side per item. > > **6 · Dining — a golden-hour scrub (≈240vh pinned).** A second > all-intra `<video>` (the couple-at-dinner clip) scrubbed over its full > duration (`target = progress * (duration - 0.05)`), same ticker + gate > as the hero. Over it a letter-reveal headline (SplitText chars) and a > warm amber wash that intensifies through the section. > > **7 · Gallery — masonry.** Six frames in a masonry grid (some tall), > staggered in with a slight rotate on enter and a gentle scale on > hover. > > **8 · Stories — a quiet testimonial.** ONE guest quote on screen at a > time with a portrait, name and trip; auto-advance on a `setInterval` > (~6.5s) with clickable dots, each swap a soft fade-up. Keep it > simple — no pin, no scrub here; the restraint is the point. > > **9 · Book — the cinematic close.** An aerial ship-in-clouds still > sits full-bleed and parallaxes under a navy gradient, with a few > slow-floating gold particles; over it a masked two-line invitation, a > line of copy and a glowing gold CTA (soft box-shadow pulse). Footer: > wordmark, nav, contact — nothing loud. > > Global: a fixed nav that stays legible over both the dark film and the > lighter sections; `history.scrollRestoration = "manual"` in the Lenis > provider; respect prefers-reduced-motion (skip the pins, scrubs and > parallax). ## Gotchas (we hit all of these) - The `readyState < 2` gate on BOTH scrub tickers is mandatory — seeking while the file still downloads aborts the fetch every frame and the video stalls grey. - `-g 1` on the encode is non-negotiable; without an all-keyframe file `currentTime` snaps to the nearest keyframe and the scrub judders. - The preloader must read REAL buffer progress and carry both a minimum hold and a hard cap — a fake timer either flashes on fast links or traps a slow one; no cap and a stalled video hangs the page forever. - 31MB of cinematic video is fine for this genre, but only *because* the preloader hides the buffer — ship it without one and the hero pops in half-loaded and cheap. - Horizontal-scroll and pinned sections need `invalidateOnRefresh: true` or they mis-measure after a resize / font swap. - Turbopack caches `@theme` font tokens — after changing a font var, `rm -rf .next` and restart or the new face silently falls back to serif. --- *Paid version: both encoded films + all stills + every section's exact choreography + preloader + README + license — studio.smartduke.com*
Aurelia — questions
What is the Aurelia template built with?
Aurelia is a Luxury cruise 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 Aurelia cost?
The free Claude Code prompt that builds a Aurelia variant is $0. The exact, tested source code — the same site shown in the demo — is $79, delivered as an instant ZIP with a commercial license for one end product.
Can I use Aurelia for a client project?
Yes. The $79 download includes a commercial license to use Aurelia in one end product, 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 Aurelia 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
Ship Aurelia today.
The free prompt gets you a variant. The $79 download is the exact, tested site — deployed in an afternoon.