04/06—Generative AI · product
- Role
- Solo build, end to end
- Context
- Independent project
- When
- 2025
- Links
- Live demo
01Problem
Single-model image generators put the burden of prompt-craft on the user. The goal was a product where a rough idea becomes a finished wallpaper without the user needing to know the prompt dialect.
02What I built
A wallpaper generation platform that orchestrates Google Gemini and Leonardo Phoenix in one flow, with a Convex real-time backend, Clerk auth and Cloudflare R2 storage, delivered through a Next.js 16 front end.
03Architecture
- 01Ideauser input
- 02Geminiprompt shaping
- 03Leonardo Phoeniximage generation
- 04Cloudflare R2asset storage
- 05Convexreal-time state
04Technical decisions
- 01
Compose models by strength
Two models are chained so each does what it is best at — language on the way in, image synthesis on the way out — rather than asking one model to do both.
- 02
Real-time state over polling
Generation is slow and asynchronous. Convex pushes progress and results to the client, so the UI reflects the job's actual state without bespoke polling code.
- 03
Keep binaries out of the database
Generated images live in R2 object storage; the application database holds metadata and references only.
05Impact
Live, publicly accessible product.
Stack
Next.js / Tailwind CSS / Convex / Clerk / Gemini / Leonardo AI / Cloudflare R2