AI Video Generator
Two of us took an AI video generator from nothing to 3,000+ registered users in about five months, shipping on iOS and on the web at once, with real money moving through it. Live at getstarrd.app.
Go and use it
Visit getstarrd.app- Started
- February 2026
- Ships on
- iOS and web, one shared backend
- What users pay
- 1 credit per video, packs from $5.99
What the demo skips
A prompt box isn’t a product.
Most AI video tools are one API call behind a text field. That holds up right until a clip takes real minutes to render, until a second person needs to pay, until the same product has to run on a phone and in a browser at once. None of those are AI problems, and every one of them has to be solved before a stranger will hand you a card.
The brand
The identity and the production code came out of the same hands, which is the only reason two people could ship all of it. A four-pointed star that stands in for the A in STARRD, one electric accent on near-black, and a design system the apps are actually built from: five token files, fourteen components with typed APIs, and fifteen guideline cards.

Sparkle = spotlight
The mark is specified as a moving thing, so it moves here. It turns through a full rotation every four and a half seconds, swelling and shrinking as it goes, and it carries a green halo the system defines as a token.
These are the design system’s own keyframes, transcribed. The same star is the app icon, the loading state, and the unit of currency: one star is one video. Green on dark, never recoloured, clearspace of at least one dot.



The palette
- #E6FF6FGreen 300Primary. The one electric accent.
- #C4E232Green 500Deep accent, for light surfaces.
- #0A0A0AInk 950Page base. Dark-first, on purpose.
- #141414Ink 850Card.
- #1A1A1AInk 800Elevated card.
- #2E2E2EInk 600Strong border.
The type
- DisplaySyne
- SansManrope
- MonoSyne Mono
Colour, type and spacing ship as tokens, so the two clients cannot drift apart.
The queue
Generation runs on Seedance 2.0 through a job queue, because a clip takes real time to render. The request cannot be the render.

01 Input
- Scene templatePicked, not prompted(Source)
- Photo uploadOne or two photos(Source)
02 Queue
- Job queuedGeneration is long-running(Process)
03 Generate
- Seedance 2.0The cinematic clip(Model)
04 Bill
- Credit ledger debitOne credit per video(Store)
05 Deliver
- iOS appSwiftUI(Output)
- Web appNext.js(Output)
Two inputs, one queue, two clients. The credit comes out of the balance inside the job, between the render and the delivery. The queue and the ledger are one system seen from two ends.
Two clients, one backend
SwiftUI on iOS and a Next.js web app run on one Supabase backend. A person starts a clip on the phone and finds it in the browser, because there is one account and one job list underneath both.

You pick a scene, upload a photo or two, and get a cinematic clip back. No prompt writing is asked of the person using it — the product does that part.
- iOS
- SwiftUI, native
- Web
- Next.js
- Shared backend
- Supabase
- Generation
- Seedance 2.0
The ledger
This is the part that has to be exactly right, because it is the part where money moves. The rest of a product can be a little wrong and survive it. A balance cannot.


Where the money comes in
- WebStripe
- iOSRevenueCat
- BothThe same credit ledger
The part nobody sees
Two apps, one backend, and one balance that has to be right in both: a credit spent on the phone is gone on the web a second later. Get that wrong once and somebody pays twice for the same video, and they do not come back. What it earns is not published.
- Registered users
- 3,000+Registered users
Role
The product, the brand, and the front end are mine: the identity, the design system, and everything a user actually touches. The backend, the payments and the queue behind them we built together. Starrd is co-founded with Ian Brillantes.
Built with
Senior Software Engineer & AI Engineer
Stack
- 01Next.js
- 02SwiftUI (iOS)
- 03Supabase
- 04Seedance 2.0
- 05Stripe
- 06RevenueCat
- 07Remotion
- 08ffmpeg