Juice brand · Featured
Zest
Zest is a premium juice brand website template built with Next.js, TypeScript, Tailwind and All-intra video scrub + GSAP. A loud juice brand in vivid duotones — colour-flood pages, a slide-then-scrub flavour line, films scrubbed by scroll. 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.
Unlocked by Studio Access — all 19 templates, every future drop, unlimited projects. $149 once.
Specifications
- Framework
- Next.js · TypeScript · Tailwind
- Motion
- All-intra video scrub + GSAP
- Category
- Commerce
- Use case
- Juice brand
- 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 Zest variant — free. Want the exact, tested code shown in the demo? It’s in Studio Access, with every other template.
# ZEST — 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 finished layout, 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 6–7 short splash films (about 8s each): a hero product shot, one splash film per flavour, a pour, an ice-cold can. Generate them with an AI video tool (Kling/Veo work well) — ONE continuous take per clip, slow constant motion, no cuts, every clip must read scrubbed backwards as well as forwards. Encode each all-intra: `ffmpeg -i in.mp4 -an -vf "scale=1600:-2" -c:v libx264 -preset slow -crf 29 -g 1 -pix_fmt yuv420p -movflags +faststart out.mp4` (-g 1 makes every frame a keyframe — that's what makes scrubbing instant instead of janky). Encode the full-bleed hero at 1920/crf 21. Keep the total under ~30MB. ## The prompt > Build me a loud, colourful juice-brand site — Awwwards-level, for a > fictional citrus brand with three flavours. The page is a sequence of > vivid duotone chapters: every section floods the ENTIRE page > background to its own saturated colour (tween document.body's > backgroundColor on enter/enterBack — never scrubbed), each paired > with its own accent colour (gold on tangerine, lime on teal, ice on > electric blue…). Films are scrubbed by scroll. > > **Stack:** Next.js App Router + TypeScript + Tailwind v4 + GSAP > ScrollTrigger + Lenis. Fraunces (opsz/SOFT/WONK axes) for display > type, light weights with italic accents. > > **The scrub engine (one reusable component):** a tall section > (~220vh) with a sticky viewport frame holding a <video muted > playsInline>. ScrollTrigger (top top → bottom bottom) maps progress > to a target time; a gsap.ticker lerps video.currentTime toward it > (factor ~0.14, only seek when the delta exceeds 0.004s, bail while > readyState < 2). First-frame poster jpg on every film. > > **The signature act — slide-then-scrub flavour line:** one pinned > 500vh section with a 300vw horizontal track, one panel per flavour. > Each flavour owns a third of the pin; the first quarter of its > segment SLIDES the track sideways (eased), the rest SCRUBS that > flavour's splash film while it holds centre. The page floods to each > flavour's colour as it arrives. One shared ticker; only the centred > panel's video seeks. > > **The Awwwards dressing:** an intro loader (wordmark + 000→100 > counter on a gradient hairline, curtain lifts); per-character masked > headline reveal timed to the curtain; a cinematic hero exit where the > full-bleed film shrinks into a rounded card as you scroll out; a > custom cursor (dot + trailing ring that swells over interactive > targets, mix-blend-difference); a giant two-row serif marquee > drifting in opposite directions that skews with scroll velocity; > numbers that count up when their section enters; a right-edge scroll > progress rail with chapter counter; giant outlined index numerals > bleeding out from behind the film frames; clip-path card reveals and > slow image parallax in the shop; a magnetic CTA button. > > **The mobile trap (do not skip):** iOS never paints a seeked frame > on a video that has not played. On mount, call play() then > immediately pause(); if the browser refuses, retry on the first > touchstart/pointerdown. Re-arm this after any load() call. > > **Many videos, one page:** gate each chapter's ticker with an > IntersectionObserver; ship later chapters preload="metadata" and > upgrade to "auto" one viewport early. > > **Mobile menu:** full-screen overlay where every link is a giant > flavour-coloured bar — tapping one floods the screen with its colour > as it navigates. Body scroll locked, Esc closes, aria-expanded wired. > > **A11y + housekeeping:** prefers-reduced-motion gets still posters > and no cursor/marquee tricks; pointer:fine gates the custom cursor; > overflow-x uses clip (never hidden — hidden turns body into a scroll > container and silently kills position:sticky). ## Gotchas we hit (the paid version has these fixed) - Scrubbed background-colour tweens capture wrong start values during pinned refresh — flood with plain onEnter/onEnterBack tweens to an explicit hex, never scrub them. - A hard dark nav bar collides with headings on colourful pages — use a soft top-down gradient scrim that fades out by ~150px instead. - 1600px/crf29 is fine for framed films but visibly soft full-bleed — encode the hero at 1920/crf21 (still all-intra). - The iOS play()/pause() unlock must be re-armed after load() — the preload upgrade resets the decoder and the hero works while every later chapter silently freezes. - Tie text exits to the sticky RELEASE, not chapter progress — or your copy fades while the film is still pinned.
Zest — questions
What is the Zest template built with?
Zest is a Juice brand 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 Zest cost?
The free Claude Code prompt that builds a Zest 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 Zest for a client project?
Yes. Studio Access includes a commercial license to use Zest — 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 Zest 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 Zest — 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.