Escape double quotes in user-provided name and concept fields to prevent
YAML parsing errors when designs contain quotes (e.g., "tax wealth not work").
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use get_cart() with selectinload instead of refresh() to avoid
greenlet_spawn errors when accessing cart.items relationship.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add /api/design/generate endpoint for AI image generation
- Add /api/design/{slug}/activate to publish designs
- Add /design page with form and preview
- Add 'Design Swag' button to navigation
- Update footer tagline to 'Build infrastructure, not empires'
- Convert SKU to string when loading from metadata.yaml
- Add docker-compose.dev.yml for local development
- Add frontend type definitions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>