Load a plate (fit to width, drag/pinch/scroll to place), comp the live camera over it through a polygon mask drawn around the foreground. Plate, placement and mask are remembered between visits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
twotalesvfx.com
The marketing site for Two Tales VFX: Next.js 16 (App Router), Tailwind CSS v4, exported as static HTML.
npm install
npm run dev # http://localhost:3000
npm run build # static site in ./out
Editing content
All copy (studio info, services, projects, contact email) lives in
content/site.ts. Items marked TODO are placeholders.
- Projects: add an entry to
projects. Put stills inpublic/work/and setimage: "/work/name.jpg"(2.39:1 looks best).videoaccepts an MP4 path or a Vimeo/YouTube embed URL. Each project gets a page at/work/<slug>/. - Showreel: drop
public/reel.mp4(muted, looping, ideally under 10 MB) andpublic/reel-poster.jpg, then setsite.reelandsite.reelPoster. - Logo: the fox mark is a vector in
components/Fox.tsx/public/fox.svg, traced fromG:\_ADMIN\TWOTALESLOGO.png. Favicons areapp/icon.pngandapp/apple-icon.png.
On-set screen markers (/set)
twotalesvfx.com/set is a tool page for production crews (not linked from the site,
not indexed). It lists screen-tracking marker images, highlights the one matching the
device it's opened on, and shows it full-screen in one tap. It works offline after the
first visit.
To add a device, drop PNGs into public/set/markers/ named like:
markers_phone_iPhone-Pro_1179x2556.png # full dot grid
edge-markers_phone_iPhone-Pro_2556x1179_landscape.png # edges only
markers_laptop_1920x1080.png # name is optional
Kinds: phone, tablet, laptop, monitor. Any other PNG shows under "Other".
Bump CACHE in public/set/sw.js when replacing an existing image so phones fetch the new one.
On-set spill checker (/set/spill)
Point a phone camera (or load a photo) at a green or blue screen setup. A WebGL shader
classifies every pixel against the sampled screen colour and shows spill as stripe
patterns plus a plain-English verdict. It is designed for colour-blind use, so it never
relies on red vs green. Views: Spill, Screen (keyed area as one flat colour), Key (rough
live key with despill) and Evenness (screen brightness bands). "Pick white" sets a
neutral reference, like a white balance pick. The code is in components/set/SpillChecker.tsx;
thresholds are tuned on a real Alexa car-interior plate. The camera needs https.
On-set plate comp (/set/plate)
For shooting a foreground against a background plate that's already been shot. Load the
plate (fit to width, then drag / pinch / scroll to place it), start the camera, and draw a
polygon mask around where the foreground goes: the camera shows inside the mask, the plate
everywhere else. "Move plate" and "Draw mask" show the camera faintly over the whole plate
for lining up. The plate, its placement and the mask are remembered between visits. The
code is in components/set/PlateComp.tsx.
Structure
app/
page.tsx home: hero, selected work, services, studio, contact
work/page.tsx project index
work/[slug]/ project detail pages (statically generated)
sitemap.ts, robots.ts
components/ Header, Footer, Hero, Frame, ProjectCard, Reveal, Timecode…
content/site.ts all site content
Deployment is covered in DEPLOY.md.