Festeo
An AR video greeting app for life's milestones.
Client
Self-published
Role
Founder · Product Designer · iOS Developer
Tools
SwiftUI, Supabase, Speech.framework, AVFoundation, ARKit, Vercel
Timeline
Feb 2026 — May 2026
tl;dr
Started as Reelwish, a Figma Make-a-thon concept for gesture-driven emotional reactions. The idea was worth building, but 'expressive communication' is too abstract to ship — so I narrowed it into Festeo: an AR video greeting app for life's milestones, shipped as a native SwiftUI iOS app on the App Store. Pick an occasion, wear an AR prop, choose a vibe, read a short teleprompter script, record a 15-second wish, and send it as a link anyone can open — no app download for the recipient.
Shipped
Apple App Store, May 2026
4
Occasions, each with its own props + scripts
41
Teleprompter scripts across 4 milestones
Why does congratulating someone online still feel so flat?
We can send 4K video across the world instantly. But when a friend has a baby, we still type three words and a balloon emoji. The moment is huge. The expression is tiny.
Reelwish framed this as an emotional expression problem. That was true, but it wasn't sellable. Nobody opens the App Store searching for 'expressive communication.' They search for a birthday video.
That reframe — from a feeling to an occasion — is what turned a concept into a product.
“We built powerful networks for sharing content, and left almost nothing for sharing a moment.”
From a hackathon gesture to a shipped app.
Same DNA — limited, expressive, camera-first — sharpened from a speculative concept into a product with a real job to do.
Reelwish — the concept
- Gesture-driven emotional reactions, built for the Figma Make-a-thon
- Got right: digital reactions are flat; four emotions, not forty; immediacy over accuracy
- Got wrong: too abstract — 'expressive communication' isn't an App Store category
Festeo — the product
- An AR video greeting app for life's biggest moments
- Four occasions, AR props you wear, scripts so you never freeze, a 15-second cap
- Festeo — 'I celebrate' in Spanish, coined like Vimeo; short, ownable, international
Four occasions, each with its own look.
The discipline that capped Reelwish at four emotions now caps Festeo at four occasion types — each with matching AR props and a library of scripts.
Birthday A party-crown prop and hype/heartfelt/funny scripts — record a wish in under a minute.
Two people, one moment.
Success was simple: the sender records in under a minute, and the recipient watches in one tap.
The sender
Wants to send something more personal than a text, but freezes on camera and has no time to produce anything elaborate. Needs a fast path from 'I should make something' to 'sent.'
The recipient
Wants to feel celebrated on whatever device they're holding, without being asked to install an app to receive a gift. One tap to watch.
Design pillars.
Four occasions, not infinite.
Birthday, wedding, baby, graduation. The same discipline that capped Reelwish at four emotions now caps Festeo at four occasion types — each with its own look, props, and scripts.
The camera is the canvas.
AR props go on your face — a party crown, a graduation cap, a baby bonnet, a bow tie — not as stickers on a screen. You're the content.
Never freeze.
Every script comes in three vibes (hype, heartfelt, funny) and runs on a teleprompter, so the blank-camera panic never happens.
Brevity by design.
A 15-second cap removes the pressure of a long take and forces the wish to land fast.
No friction for the recipient.
Share by link. They watch on any device — no download, no account. A gift can't have a paywall at the door.
Narrowing a concept all the way to the store.
The work wasn't adding features — it was subtraction, then building the system that made one focused idea shippable.
Narrowing the concept
- Subtraction, not addition — cut everything not tied to an occasion
- Let the milestone become the organizing idea for the whole app
Occasion, prop & vibe system
- Each of four occasions got matching AR props and a script library
- Three vibes per script — hype, heartfelt, funny — 41 scripts total
- Filterable by tone and by relationship so the words fit who you're sending to
The teleprompter (the hard part)
- Speech.framework runs on the same camera session as the recording
- Highlights and scrolls the script to match as you talk
- Forward-only fuzzy matching keeps imperfect, real speech in sync
The native iOS build
- Native SwiftUI for iOS 17+ with a clean model / view / service architecture
- Six-screen flow: occasion → prop → script → edit → record → preview → share
- Supabase backend for scripts, video upload, and watch links
Naming, infrastructure & the store
- Renamed Reelwish → Festeo; migrated Supabase to a fresh account
- Website + privacy policy live on Vercel
- App Store Connect: Entertainment primary, Social Networking secondary — submitted and shipped
Five choices that made it shippable.
An occasion, not a feeling.
The single reframe that made the product shippable. 'Expressive communication' was the concept; 'video wish for a milestone' is the thing people search for, download, and send.
Props you wear, not stickers you place.
AR on the face keeps the person at the center — the difference between a greeting that's personal and one that's generic. The technology disappears behind the moment.
A script and a cap.
A teleprompter plus a 15-second limit removes the two reasons people don't record themselves: freezing up, and overthinking it. The constraints are what make recording possible.
Link-first delivery.
The recipient needs nothing — no app, no account. Forcing a download to receive a gift kills the gift. The watch link is the product's front door.
Gesture detection deferred to V2.
The original Reelwish magic was tempting to cram into V1. The discipline was to ship a clean, focused first version. One idea fully realized beats five half-built.
What shipped.
Format
Native iOS app (SwiftUI) — shipped on the App Store
From
Reelwish, a Figma Make-a-thon concept (Feb 2026)
Occasions
Birthday, Wedding, New Baby, Graduation
Core flow
occasion → prop → vibe → script → record → preview → share
Scripts
41 across 4 milestones, filtered by tone and relationship
Stack
SwiftUI · Supabase · Speech.framework · AVFoundation · Vercel
Hardest feature
Voice-synced teleprompter with forward-only fuzzy matching
Store listing
Entertainment (primary) / Social Networking (secondary), subtitle "Send a video wish"
What shipping a speculative concept taught me.
A concept needs an occasion to become a product.
Reelwish was a good idea with no front door. Tying it to milestones made every decision easier — the occasions defined the props, scripts, categories, and the reason to download.
Constraints are what make recording possible.
A teleprompter and a 15-second cap sound like restrictions. They're what let a non-performer hit record and finish. The constraint is the feature.
The recipient's experience is the product.
They never see the editor, props, or teleprompter — they tap a link and watch. Designing for the side of the screen that does the least work was the highest-leverage decision.
Discipline carries across a pivot.
Four emotions in Reelwish became four occasions in Festeo. The instinct to limit scope is a design value, and it survived the jump from concept to shipped product.
Shipping is its own design skill.
Festeo proves the whole arc: research, design, naming, infrastructure migration, native iOS development, and App Store submission. Not a concept in a Figma file — a product on a phone.
The gesture detection was always the point.
It just lives in the next version.
ARKit face tracking
AR props that follow your face in real time, not anchored to a fixed frame.
Gesture detection
The original Reelwish concept, finally native on iOS — the hands that started the whole idea, back in the product they led to.
Expand occasions carefully — more milestones, but only ones that earn their own props and scripts; the four-occasion discipline stays until there's a reason to break it. Recipient reactions — let the person watching respond in the moment, closing the emotional loop Reelwish first imagined. What I'd do differently: validate the occasion framing with senders earlier, before building the script and prop system, and start native sooner — the concept-to-product jump is where the real cost lived.
Expand occasions carefully — more milestones, but only ones that earn their own props and scripts; the four-occasion discipline stays until there's a reason to break it. Recipient reactions — let the person watching respond in the moment, closing the emotional loop Reelwish first imagined. What I'd do differently: validate the occasion framing with senders earlier, before building the script and prop system, and start native sooner — the concept-to-product jump is where the real cost lived.
Explore other case studies

Bookee
Researches each lead and calls back in under 60 seconds to book qualified meetings.

Oakling
Family-friendly Bay Area activities to do with your trusted circle, and memories that stick.

FurPass
Build a pet care guide once and share a secure link any sitter opens in a browser.

Odosan
Diagnose home problems from a photo with fair pricing and matched local pros.

Kamper
Modular outdoor kitchen launching with AI-generated campaign visuals and a waitlist.

NFCtree
Your digital business card on a chip. Tap to share your socials in any browser.

Bookee
Researches each lead and calls back in under 60 seconds to book qualified meetings.

Oakling
Family-friendly Bay Area activities to do with your trusted circle, and memories that stick.

FurPass
Build a pet care guide once and share a secure link any sitter opens in a browser.

Odosan
Diagnose home problems from a photo with fair pricing and matched local pros.

Kamper
Modular outdoor kitchen launching with AI-generated campaign visuals and a waitlist.

NFCtree
Your digital business card on a chip. Tap to share your socials in any browser.