Case study
Art2Life
34 AI photo and video modes behind one credit balance.
- Role
- Co-founder and Development Head
- When
- Ongoing
- Where
- Client delivery


The problem
What made this hard
AI image tools tend to ship as one-trick apps: an upscaler here, a colorizer there. Art2Life packs the whole toolbox into one Flutter app, with credits that meter every mode the same way, so a user pays once and tries everything.
What shipped
Built, wired, released
34 creative modes in one app. Colorize old photos, upscalers including GFPGAN face restore, background removal and relighting, product photography, face swap, clothing and hairstyle changes, interior design, comic and chibi styles, cinematic Flux generations and one-step edits.
The client never talks to a model provider directly. Replicate runs as the backend behind Firebase Functions, with OpenAI for the image-edit modes.
A two-bucket credit system. Permanent credits bought outright plus expiring monthly credits from subscriptions, settled by a credits API on the backend, which keeps refunds and rollovers sane.
Sold and translated properly. RevenueCat subscriptions and 40+ interface locales.
A web rebuild in progress. Next.js, React 19, Tailwind 4 and Firebase, bringing the same modes to the browser.
Architecture
How it holds together
L0Flutter app with a ModelType enum as the single registry of modes; adding a mode is one enum entry plus a backend route.
L1Firebase Functions proxy every generation and settle credits, so provider keys and pricing rules stay server-side.
L2Credit buckets separate paid-forever from monthly-expiring balances, which keeps refunds and rollovers sane.
Screens
From the actual build
Every frame is a real capture unless labeled otherwise. Tap any screen to open it.
Outcome
Where it landed
- One app, 34 modes, one credit meter; the before and after pairs above are the app's own demo content, not device captures.
- Web version in active development on Next.js.