v2 returns {data: [...]} (array) not {data: {...}} (object).
Also fixes mockup task polling to use ?id= query param and
extracts mockup_url from nested catalog_variant_mockups structure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The v2 API uses products array with catalog source, nested layers in
placements, and GET /mockup-tasks/{id} for polling. Also removes
hardcoded domain in favor of PUBLIC_URL setting.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend:
- Replace tiny placeholder templates with photorealistic 1024x1024 product
photos (blank t-shirt, sticker with peeling corner, framed print)
- Rewrite Pillow compositing: screen blend for dark garments (design looks
printed on fabric), direct paste for stickers/prints
- Add PRINTFUL_STORE_ID config + X-PF-Store-Id header to Printful client
(unblocks existing account-level tokens)
Frontend:
- Product listing: rounded cards with shadows, category badges, hover
animations, lazy loading, empty state
- Product detail: skeleton loading, mockup type switcher with loading
indicator, raw design preview, inline price in Add to Cart button,
shipping/quality info section
- Homepage: featured products now show mockups instead of raw designs,
professional card layout matching products page
- Client-side mockups: updated coordinates for new templates, screen
blend support via Canvas globalCompositeOperation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- PrintfulClient: catalog variants (cached 24h), mockup generation
(async create+poll), order submission, variant ID resolution
- Mockup endpoint tries Printful API first for Printful-provider designs,
falls back to Pillow compositing for others (e.g. Prodigi stickers)
- Order service routes items by provider from design metadata:
provider=printful → Printful API, provider=prodigi → Prodigi API
- Sandbox mode creates draft orders on Printful (not fulfilled)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Prodigi v4 API client for order fulfillment (create/get orders, quotes)
- Server-side mockup generation: Pillow composites designs onto product
templates (shirt, sticker, print) at GET /api/designs/{slug}/mockup
- Product listing and detail pages now show designs ON products
- Mockup type switcher on product detail page (T-Shirt/Sticker/Art Print)
- Order service submits to Prodigi after successful payment
- POD webhook endpoint for fulfillment status updates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>