0

Loading…

Ppangeo

Ppangeo

A one-page site for a bungeoppang popup, built around the one fact a competitor with a shopfront cannot copy: it isn't always there.

Roles
Website Design
Website Development
Year of completion
2026
Visit
Industry

Food and drink

The mascot arrives through its own silhouette, so the brand mark and the reveal are the same shape.

The problem

Ppangeo is a stall, not a shop. It moves between pitches, keeps different hours at each and sells out, so the fact that matters most — is it open, and where — was the one the first build answered last, three screens down under a heading called Visit our popups. That order is right for a shop and wrong for a stall. The restructure made it the organising principle: two people opening the site four hours apart should see materially different pages.

Our role

Art direction, design, front-end development, WebGL and the content model.

Design decisions

  • Shapes come from the press and the pastry, not rounded cards — and hot iron clamps and latches rather than wobbling.
  • Section boundaries are the seam where two mould plates meet, tiled so the scallops never stretch oval on a wide screen.
  • The hero is a mould opening: two plates with a window that travels on a hinge arc onto the flavours panel behind.
  • Three motifs used once each so none wears out — the die-cut fish, a pastry bitten open, and steam.
Flavours run on a horizontal rail — red bean, custard, spicy pizza — one pastry held large at a time.

How we built it

  • Three.js stays out of the 78 kB entry bundle, behind import rules the linter enforces rather than the team remembering them.
  • GSAP tweens one custom property and CSS derives every visual consequence from it, so the same material works under a tween or :active.
  • All eight sections arrive in one GROQ query, because the page renders on demand and per-component fetches would be serial hops.

Mobile, accessibility and performance

  • No time-sensitive text is server-rendered, because the edge cache can serve day-old HTML — the server sends the timeless schedule, the client makes it live.
  • With scripting off, that same rule leaves a correct schedule on a designed page rather than a hole.
  • Zero axe-core violations and zero layout shift across a 13,778px page, with no horizontal overflow at 320, 360, 390 or 1440.

Selected screens

The mascot arrives through its own silhouette, so the brand mark and the reveal are the same shape.
Flavours run on a horizontal rail — red bean, custard, spicy pizza — one pastry held large at a time.

The result

A 78 kB entry bundle with Three.js kept out of it, zero axe-core violations and zero layout shift across a 13,778px page, with no horizontal overflow at 320, 360, 390 or 1440. With scripting off, the page still shows a correct schedule rather than a hole — which for a stall that moves is the one thing the site has to get right.