Client work · 2025

PLAY Films

A film studio's reel, without the buffering.

Role
Build and delivery, with the project's designer
Timeline
Two months
Status
Live
Year
2025
View live site
The PLAY Films reel grid, showing stills from the studio's Puma and Anlene campaign work.
The PLAY Films reel grid, showing stills from the studio's Puma and Anlene campaign work.2025

01 / The problem

The problem

A film studio's website has one job: play the reel. PLAY Films' work is shot and graded to a standard that a compressed, stuttering embed undersells. And the people who matter most, producers and brand clients, are often watching on a phone between meetings.

So the brief was a site that could carry full-bleed video without the two failures that usually follow it: a first load that takes eight seconds, and a hosting bill that creeps up every month until someone asks what it is for.

02 / What I built

What I built

A statically generated Next.js site with a custom video player instead of a third-party embed, so playback controls, poster frames and preload behaviour are all tuned by hand.

play-films-chi.vercel.app
Opening a film from the grid: full-screen playback, skip, pause, resumeRecorded 2026

Video is served from a dedicated streaming CDN with adaptive bitrate, which is what keeps a reel watchable on mobile data. The pages themselves are static HTML served from the edge, so the rest of the site stays quick around all that video.

The interaction detail people notice is a spotlight that follows the cursor across the hero. It is built from CSS custom properties, one mousemove listener and mix-blend-mode, with no animation library, and it is desktop-only by design. On a touchscreen there is no cursor to follow, so phones never download that code.

play-films-chi.vercel.app
The live site in a scripted browser session: the grid, then two films watchedRecorded 2026

03 / Who else is on it

Who else is on it

A film studio has opinions about how its own work should look, and it should. The visual direction sits with the designer on the project. I build to their calls and flag the places where a layout will fight the browser or cost a second of load time, and we settle it between us. The loop is short enough to happen in a message rather than a meeting, which is most of why it works.

The other half of the job has nothing to do with code. The studio's own domain needed sorting out, which meant emails back and forth with more than one hosting provider until it was answering again. No commits, no deploys, just someone following it up. Hardly glamorous, but a client should never have to chase that themselves.

04 / Delivery and handover

Delivery and handover

Running cost was a design constraint from the first conversation. The target was roughly SGD $28 a month, and the combination of static hosting with metered video streaming is what makes a number that small achievable for a site built around video.

Account ownership is written into the arrangement from the start: the deployment, the domain and the credentials are set up to transfer into the client's name, so nobody needs me in order to keep their own website online. On this project the site is live and the transfer has not been completed yet.

SGD $28
Target monthly running cost
2 months
Brief to build complete

Stack

  • 01Next.js (App Router), statically generated
  • 02Bunny Stream for adaptive-bitrate video
  • 03Tailwind CSS
  • 04Vercel hosting

Need something in this shape?

Tell me what you are trying to build and roughly when you need it. I reply to every enquiry within one business day, including the ones I am not the right fit for.

Start a project

Replies within one business day