Thumbnails in showcase and collection used resizeMode="cover" which
cropped the sides of portrait-oriented card images after bg trimming.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add optional face photo upload (expo-image-picker + expo-image-manipulator)
- Wire face image through backend to Gemini as inline base64 data
- Add loading screen with blurred placeholder card + pulsing animation
- Add reveal/unboxing screen with aligned banner layout
- Handle generation failures (check figure.status, show error on form)
- Add Gemini safety settings (BLOCK_NONE) to reduce false rejections
- Increase body limit to 5mb for base64 image payloads
- Add errorMessage to FigureResponse shared type
- Extract FlippableCard to reusable component
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend:
- Add Gemini-powered profile generation (text + image)
- Add image processing with background removal (sharp)
- Add S3 storage service for figure images
- Extend figures schema with generatedProfile, language, status columns
- Wire up synchronous generation pipeline on POST /api/v1/figures
Frontend (Mobile + Web):
- Replace all mock data with real API calls
- Show generatedProfile data (subtitle, backstory, stats, items, specialAttack)
- Display generated images from S3 or name placeholders
- Create web API service ($lib/api.ts)
- Delete mock cards data files
Infrastructure:
- Add CORS origin for web dev port (5196)
- Add GEMINI_API_KEY + FIGGOS_STORAGE_PUBLIC_URL to env generation
- Add figgos-storage bucket to shared-storage factory
- Add .gitignore for workbench/
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add card images to static/images/ and shared card data module
- Collection grid with 2-column layout linking to card detail
- Showcase carousel with scroll-snap, drag-to-scroll, scale/rotation effects
- Card detail with CSS 3D flip (drag to rotate, double-click to flip)
- Back side shows backstory, stats bars, rarity badge (sized to match front)
- Layout with 3 tabs (Create, Collection, Showcase), hidden on card detail
- Scale up Create + Collection screens for better visual presence
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SvelteKit 2 + Svelte 5 + Tailwind CSS 4 on port 5196.
Create and Collection pages matching the mobile neo-brutalist design system.
Follows monorepo patterns (adapter-node, shared-vite-config, type-check).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace old corporate design with neo-brutalist game style:
- Electric yellow primary, hot pink secondary, teal accent
- Hard offset shadow layers on all interactive elements
- Thick 3px borders as core design language
- Restructure to flat tab layout (Create + Collection)
- Remove old auth/tabs/shelf screens
- Keep retro-pixel variant as reference (hidden tab)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend: figures CRUD API with rarity system and random stats
Mobile: re-scaffolded with create-expo-app (SDK 54), NativeWind 4 design system,
create form + shelf grid. Auth disabled for faster iteration.
Shared: types inlined for Node v24 ESM compat.
See CLAUDE.md for current status, known issues, and next steps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CSS-variable-based design system (ManaDeck pattern) with light/dark mode,
semantic tokens (primary, secondary, accent, destructive, surface, muted),
and game-specific rarity colors (common, rare, epic, legendary).
Also adds FEATURES.md with game concept and data model.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>