Photo & Video template
Glimmer AI Photo Effects and Portrait Studio App
An Expo app for AI photo effects and headshots: pick a look, add one photo, get a set to compare and share. Gemini edits run through a Supabase Edge Function and are paid for in credits.
- 19 screens
- iOS & Android
- Sample data
- Updated Oct 19, 2026
- Verified release
Free to copy · Full source · No credit card
Screens
6 screens from the working app.
What’s inside
- 14 effects and 4 headshot styles with real before/after sample results of six AI-generated people
- Drag-to-compare before/after on the feed hero, effect pages and every result
- Gemini image edits through a Supabase Edge Function, one image per call, so progress is real
- Headshot sets of 8 made in the background from 6 to 10 selfies, which are deleted when the set is done
- Credits ledger in Postgres: welcome and Pro monthly grants, packs, and a spend and refund per image
- Likeness rules: consent once, and a check that refuses minors, public figures and explicit photos
- Pro (weekly, yearly) and credit packs through RevenueCat; sample prices until you connect RevenueCat
- Sample mode with a blank .env: a sample studio, a sample balance and designed sample results
About this template
Overview
Glimmer is a dark, photo-led AI photo studio in the style of Remini or Lensa. People pick an effect (oil portrait, film noir, cel shade, comic pop, Super 8 and more), add one photo of themselves, choose how many variations and what shape, and get a set they can compare with the original, label as AI-edited and share. Headshots turns 6 to 10 selfies into a set of 8 studio portraits.
It is an Expo SDK 57 / React Native app on the FluxNative kernel, with a Supabase backend: the AI runs in one Edge Function that calls Gemini with your key, and credits are kept in your own Postgres tables.
Key features
Effects feed with a self-sweeping before/after hero, trending cards, kinds as chips and every effect with its uses and price.
Two-step create: effect and photo (library, camera or the sample photo), an AI photo check in plain words, then variations, shape and a one-time likeness agreement.
An honest wait screen: place in line, images landing one by one, named steps, Stop with a confirmation; refusals and failures each have a designed end with the credits given back.
Results with drag-to-compare, favourites, a full-screen viewer, Run it again at its price, and Share with an "AI-edited" label switch (on by default).
My studio: sets being made now with real progress, every set by date, filters by effect or favourites, unfinished runs with credits back.
You: balance with a 7-day chart, Pro, photo rules and data, Delete my photos and data, reminders for headshot sets, purchases and legal pages.
Screens
18 screens: Welcome, a three-step intro (ending on the likeness rules), Effects, effect detail, Create, Options, Headshots, the wait screen, Results, a full-screen viewer, My studio, You, Credits, Pro (paywall), Photo rules and data, Terms, Privacy and About.
AI and backend
Tasks in supabase/functions/ai/tasks.ts: photo-check (free), apply-effect (2 to 4 credits an image), headshot-selfies and headshots (10 credits a set, made in the background), headshots-resume, credits and claim-credits.
Gemini image models edit the person's own photo; prompts for each effect live in supabase/functions/ai/effects.ts with the same ids and prices as the app's catalog.
The migration adds creations and credit_ledger with row-level security, and security-definer functions to grant, spend (with a per-user lock), refund and add packs; only the function can move credits.
No accounts: the app signs each install in anonymously. Uploaded selfies are deleted from storage when a set is done; Delete my photos and data removes every set and file.
Sample mode: with a blank .env every screen works on bundled sample content. The six sample people and all their results are AI-generated (fictional adults); CREDITS.md lists the model and prompt of every image.
Monetisation
Credits pay for each image (new people get 6). Credit packs (30, 80, 200) are consumables in a RevenueCat offering named credits; the server checks each purchase with RevenueCat before adding its credits. Glimmer Pro (weekly or yearly, entitlement pro) adds 120 credits a month and allows 4 variations per run instead of 2. Until you connect RevenueCat to sell, the paywall and Credits show sample prices and say subscriptions open in the App Store version.
Setup
Connect Supabase and apply the two migrations, add your Gemini key and deploy the functions, then connect RevenueCat with the Pro products and the credit packs. Each step below has a prompt your coding agent can run.
What you get
- Full source — Expo and React Native in TypeScript, as an app in your workspace.
- Live preview — try every change in your browser or on your phone.
- Verified release — it compiles and every screen opens without errors.
- AI assistant — change anything by chat; each change uses credits.
- Builds and store upload — iOS and Android builds, sent to the App Store and Google Play from Publish.
- No credits to copy — the copy itself costs none.
Made with an earlier version of FluxNative. Your copy works as it is; ask the agent to update it for app languages, currencies and About links.
What you need
- A FluxNative account — the Free plan holds up to 2 apps.
- No backend to start — it runs on sample data until you connect yours.
- Creator or higher — for native builds and store upload.
- Store accounts — Apple Developer Program (US$99 a year) and Google Play (US$25 once), to publish.
What’s in the source
- screens
- 19
- files in your copy
- 399
- lines written for this app
- 6,187
- ready-made UI components
- 129
App text in English and Vietnamese
Tech stack
- Expo SDK
- 57.0.22
- React Native
- 0.86.3
- React
- 19.2.8
- TypeScript
- 6.0.3
- Expo Router
- 57.0.21
- Supabase JS
- 2.112.3
- RevenueCat
- 10.9.1
From this release’s package.json.
Design system
- Headings
- Plus Jakarta Sans
- Body
- System font
- Dark mode only
- Liquid glass
- Capsule buttons
- Media cards
Set up after you fork
Your copy opens with the AI assistant that built it. Do the steps in order: connect what a step asks for under Server, then send each prompt.
Connect Supabase
Server › Backend › Supabase. Apply both migrations, turn on anonymous sign-ins in the Supabase dashboard (Authentication › Sign In / Providers), and write the public URL and anon key to .env.
Prompt for the AIConnect this app to my Supabase project from Server › Backend › Supabase and write EXPO_PUBLIC_SUPABASE_URL and EXPO_PUBLIC_SUPABASE_ANON_KEY to .env. Apply supabase/migrations/20261019000000_ai_kit.sql, then supabase/migrations/20261019120000_glimmer.sql (creations, the credit ledger and its functions, effect_uses, Delete my data). Remind me to turn on Authentication › Sign In / Providers › Allow anonymous sign-ins in the Supabase dashboard, since the app signs each install in anonymously, and to keep the anonymous sign-in rate limit per IP low. Then confirm the Effects tab no longer shows the sample line and My studio starts empty.
Turn on the AI
Server › API keys & secrets: add GEMINI_API_KEY (a billed Google AI Studio project; image models have no free tier), then deploy the ai function and push its secrets.
Prompt for the AIAdd my Gemini key as GEMINI_API_KEY under Server › API keys & secrets. Deploy the ai Supabase Edge Function and push its secrets. Glimmer charges its own credits, so leave AI_FREE_UNITS_PER_DAY and AI_PRO_UNITS_PER_DAY unset. Then invoke the function as a test user with { "task": "credits" } and tell me the balance it returns (6 welcome credits for a new user), and with { "task": "photo-check" } on one of the sample photos in assets/samples/people to check the vision model answers.
Sell Pro and credit packs
Server › Monetization: RevenueCat products for Pro (weekly, yearly) and the three credit packs, the public SDK keys, the webhook secret and REVENUECAT_SECRET_KEY.
Prompt for the AIConnect RevenueCat under Server › Monetization. Create the entitlement pro and a current offering with glimmer_pro_weekly and glimmer_pro_annual, and an offering named credits with the consumables glimmer_credits_30, glimmer_credits_80 and glimmer_credits_200 (the number is the credits each adds). Write EXPO_PUBLIC_REVENUECAT_IOS_KEY and EXPO_PUBLIC_REVENUECAT_ANDROID_KEY to .env and update PLAN_PREVIEW and PACK_PREVIEW in src/services/iap/index.ts to the same prices. Save a long random REVENUECAT_WEBHOOK_SECRET and a RevenueCat v1 secret API key as REVENUECAT_SECRET_KEY under Server › API keys & secrets, deploy the revenuecat-webhook function with JWT verification off and redeploy ai, and give me the webhook URL and the Authorization header value to paste into RevenueCat › Integrations › Webhooks.
Set your prices and effects
Optional. Effect prices, welcome and Pro monthly credits live in the server's ai function (functions/ai/effects.ts) and src/services/effects/catalog.ts; change both together.
Prompt for the AIShow me the effects, their credit prices, the welcome credits (6) and Pro's monthly credits (120) from the server's ai function (functions/ai/effects.ts) and src/services/effects/catalog.ts. Apply the prices I give you in both files with the same ids, keep the server's effect prompts in step with any effect I rename or add, redeploy the ai function, and update the credit figures shown on the Pro and Credits screens.
Set your icon, store IDs and legal pages
Name, icon, colours and legal page URLs: app.json name and bundle id, assets/icon.svg, the seed in src/theme/brand.ts, and the privacy, terms and support URLs in .env.
Prompt for the AIRename the app to the name I give you in app.json (name, slug, scheme, bundle id and package) and in the copy that says Glimmer. Redraw assets/icon.svg and assets/adaptive-icon.svg for my brand and render icon.png, adaptive-icon.png, favicon.png and splash-icon.png from them. Change brandSeed in src/theme/brand.ts to my colour. Write my EXPO_PUBLIC_PRIVACY_POLICY_URL, EXPO_PUBLIC_TERMS_URL and EXPO_PUBLIC_SUPPORT_URL to .env, and replace the sample text in src/features/legal with my own terms and privacy policy.
How to use this template
- Use the template to get an editable copy, with its source, in your workspace (Templates).
- Ask the AI assistant for the changes you want, in plain words (Work with the assistant).
- Try each change in the live preview, or on your phone (Preview).
- On Creator or higher, build it for iOS and Android and send it to the stores (Publishing overview).
Licence and support
Licence
You own the app made for you; the template’s code stays InspireUI’s and is licensed for use in your apps (Terms › Our intellectual property).
Help
- Guides to templates, the assistant and publishing.
- Contact support from Help; replies usually within 1–2 business days.
- In your copy, ask the AI assistant about any screen or file.
Made by FluxNative
Support policyQuestions
Is it free?
Copying a free template costs nothing, not even credits; a Premium one is a one-time purchase per website. Chat changes and builds use credits.
What do I own?
You own the app made for you. The template’s code stays InspireUI’s and is licensed for use in your apps (Terms › Our intellectual property).
Do I need to know code?
No. Ask the assistant for changes in plain words; the full source is there when you want it.
Does it come with a backend?
No. A full app names the backend it needs and you connect your own under Server; a design runs on sample data.
Can I change the design?
Yes. The Design tab sets the brand colour, colours, fonts and corners at no credit cost; the assistant changes the rest.
Which plan do I need to publish?
Creator or higher builds and uploads to the stores, with your own Apple and Google accounts. A Premium template’s app builds on any plan once its website is connected.
Can I download the source?
Yes, with Download source or Push to GitHub, once your workspace has bought a plan, credits or a paid template. A Premium template’s app also needs its website connected.
What if it was made with an earlier FluxNative?
Your copy works as it is. Ask the assistant to update it for newer features such as app languages and currencies; it is the last setup step.
Ready to make it yours?
Start from Glimmer AI Photo Effects and Portrait Studio App and change anything by chat. Your copy comes with the full source.
Free to copy. No credit card required.