Poster flow for AI-powered renovation visualization. Upload a photo, describe your dream renovation, and get photorealistic before/after designs powered by Gemini 3 Pro Image.
DesignStudioScreen — tab-based with Create/My/Saved
useQuery(api.poster.designs.listMyDesigns)
Empty component with icon, title, message
designs?.length === 0 conditional
MediaUpload component with camera/gallery
ROOM_TYPES and STYLE_OPTIONS from designStudioService
TextInput multiline with example chips
canGenerate(quota) checks daily limit before submit
Loading with progress steps and shimmer
useAction(api.integrations.gemini.generateDesign)
DesignDetailScreen with before/after toggle
handleToggleSave, handleShare, handleCreateJob
FlatList with numColumns=2 masonry grid
useQuery(api.poster.designs.listMyDesigns) with filters
handleCreateJob routes to /(poster)/jobs/create
params: designImageUrl, beforeImageUrl, roomType, description
gemini-3-pro-image-preview) for image generation