FAQ
Questions before launch.
The service is built to run in mock mode first, then switch to live fulfilment when keys, product UIDs, and Cloudflare resources are in place.
Can buyers upload any train photo?
They should upload photos they own, have permission to print, or are licensed to reproduce on merchandise.
Does the app work without API keys?
Yes. Uploads, proofs, checkout, and Gelato submission all have local mock paths so the service can be tested first.
Which image model is configured?
The default OpenRouter image model is openai/gpt-5.4-image-2, controlled by OPENROUTER_IMAGE_MODEL.
Are generated previews protected?
The browser receives a watermarked preview. Checkout uses a proof ID so the clean generated artwork is resolved server-side.
Where are uploads stored?
Cloudflare R2 stores uploaded photos and generated proofs. Cloudflare KV stores upload and order metadata.
What does Gelato need before live fulfilment?
A Gelato API key, product UID environment variables for each catalog item, a public print file URL, and a complete shipping address from Stripe.
How does SEO scale from here?
Run the DataForSEO script, identify long-tail railway gift terms, then add focused guide pages and product copy for those clusters.