LUCA

Websites202603 / 12

Trainstation

A photo-to-model ordering flow, made simple enough to finish.

A workshop that reads a photograph and builds the figure back as a printable model. Everything on the site exists to get one photograph from a customer to a bench, so the whole product is a single spine: upload, scale, review, pay.

It is a full front-end and back-end build, not a brochure — file storage, live pricing and a real checkout all run behind it.

What was made
Product design
Web design
Front-end build
Back-end build
Built with
Next.js
three.js
Cloudflare R2
Shopify Storefront API

Visit the site (opens in a new tab)

What it does

  1. A model you can turn, not a photograph of one

    The first thing on the page is a real 3D viewer holding the actual mesh — drag to turn it, scroll to zoom, open the layers control to look inside. The plate around it carries the scale and the hours on the bench, so the thing being sold reads as an object with a cost, not a picture.

    The Trainstation hero: a rotatable 3D figure beside a three-step explanation of the service
  2. One order flow, priced as you go

    Photographs are dropped straight onto the page, a scale is chosen from seven — N through to G — resin prints are added by the piece, and notes go to the workshop in plain words. The total updates line by line and nothing is charged until the payment page.

    The order flow: a photograph drop zone, a scale selector, a print stepper and a running total
  3. Previous work as evidence, not decoration

    Every commission is a plate that pairs the photograph that came in with the model that went out. It answers the only question a first-time customer has — will you get my picture right — without a single testimonial.

    A row of commission plates, each showing a finished model beside its source photograph
  4. The parts nobody is supposed to notice

    Photographs upload directly to object storage through server-signed URLs, so a large file never passes through the site. The cart is assembled through the Storefront API with one line per thing charged, which is why the checkout total always matches the number on screen. Terms, refunds, delivery and privacy are written and linked, because a shop that takes money needs them.

    The end of the order flow and the site footer, showing the full set of policy links