How it works

From platform photo to posted product.

The build is intentionally simple: Cloudflare handles uploads and metadata, OpenRouter handles proofing, Stripe handles payment, and Gelato handles print fulfilment.

Try the flow
Railway products ready for print fulfilment

Workflow

Four services, one customer path.

  1. 01

    Upload the sighting

    Add a JPG, PNG, or WebP image you own. R2 stores the original so proofing and fulfilment can use the same source.

  2. 02

    Choose the product

    Pick the product, size, and quantity from Gelato-ready variants mapped to product UID environment variables.

  3. 03

    Create a proof

    Print the original photo, or use OpenRouter to create a capped watermarked art preview before checkout.

  4. 04

    Checkout and fulfil

    Stripe collects payment and shipping. The paid webhook submits the print order to Gelato.

Proofing

Proof styles stay product-aware.

Archival

Best for real-world sightings, preserved railway days, depot visits, and photos with strong memory value.

Poster

A bolder treatment for club rooms, exhibitions, railway bedrooms, and model railway backdrops.

Ink wash

A softer illustrated treatment for heritage line gifts, cards, and framed keepsakes.

Collector

A cleaner grade that keeps the train photograph close to the original, with less illustrative treatment.

Safeguards

Checks before fulfilment.

  • Train remains recognisable after proofing.
  • No invented operator marks or protected route branding.
  • Print file URL is reachable from a public HTTPS origin.
  • Gelato live order waits for a complete Stripe shipping address.
  • Customer uploads and order metadata stay in Cloudflare R2 and KV.