Design box expanded from 370x370 to 500x450 and repositioned
higher on the chest for typical t-shirt print proportions.
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>
Users can upload their own logo/design, see instant mockup previews on
shirts, stickers, and art prints via client-side Canvas compositing,
then save and activate the design to the store for ordering.
- Backend: POST /api/design/upload with file validation (type, size,
dimensions), Pillow processing, saves to designs/uploads/
- Frontend: /upload page with drag-and-drop, real-time mockup gallery,
activate/discard flow matching existing Design Swag pattern
- Fix: activate/delete endpoints now scan all category dirs instead of
hardcoding stickers/
- Nav: "Upload Swag" button added to header and homepage CTAs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add subdomain-based spaces system for branded storefronts. Each space
has its own theme, product catalog, and isolated cart via scoped
localStorage keys.
- Backend: SpaceService loads YAML configs, new /api/spaces endpoints,
design filtering by space, CORS regex for *.rswag.online
- Frontend: Next.js middleware detects subdomain and sets space_id cookie,
dynamic CSS variable injection for theming, space-aware API calls
- Spaces: _default (rSwag hub, cyan/orange) and fungiflows (gold/green/purple)
- Docker: Traefik wildcard HostRegexp for subdomain routing
- Designs: Placeholder Fungi Flows sticker and logo tee
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Forked from mycopunk-swag-store and rebranded for rSpace:
- Next.js 15 + FastAPI + PostgreSQL + Stripe
- Printful + Prodigi POD integration
- AI design generation via Gemini API
- rSpace color scheme (cyan/orange) and branding
- In-repo designs directory (stickers, shirts, misc)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>