Product Studio
Small apps and games I make in my spare time.
Gateaux
Live BetaA language-learning café where you bake cakes by completing lessons and serve customers in Spanish and French.
DateLight
LiveChoose a date location in under 60 seconds with AI-curated picks based on place, vibe, and radius.
Ultraviolette
Live BetaA Three.js endless runner where a purple creature restores color to a grey city.
Hello Whirled
LiveA small interactive 3D toy built around procedural planets and three playful actions.
01 · Learning loop
Gateaux
Teach practical café talk through a game loop: lesson equals bake, serve equals practice.
- Decision
- Skip the flashcard list. Five staff voices teach five speaking styles, and the café loop makes you use what you just learned.
- Shipped result
- A playable web beta with Spanish and French, display-case stock, short lessons, cafe counter, recipe book, and coins / diamonds / XP.
- Deferred
- Full illustrated asset pass, extra languages, and heavier audio. The loop ships first.
- Next release
- Art and content pass on the loop that already plays.
- Evidence
- Play the beta — complete a first-run lesson and put a cake in the case.
02 · Product prioritization
DateLight
Turn location, timing, mood, budget, and distance into a short list of date ideas in under a minute.
- Decision
- Ship each slice as something you can actually use. Hold the polish pass until search, radius, and AI picks work end to end.
- Shipped result
- A live, phone-ready flow: pick a place, set the vibe and radius, get a short list of AI-curated date ideas. API keys stay on the server.
- Deferred
- Richer loading states, micro-interactions, and a mobile results sheet. Nice to have — not needed for the first release.
- Next release
- Finish that polish backlog without reopening the core product.
- Evidence
- Open DateLight — you can go from “where?” to a short list of date ideas in under a minute.
03 · Creative direction & iteration
Ultraviolette
Every run turns a grey, depleted city into something colorful.
- Decision
- Build it in the browser with Three.js instead of a full game engine — lighter, deploys as a webpage, and I own how it looks.
- Shipped result
- A playable endless runner with lane movement, collisions, and a color-spread effect that paints the grey city as you run.
- Deferred
- Custom character assets and horn-drill polish. Saved for later so the beta could ship.
- Next release
- Grow the single-city run into suburbs, city, and industrial zones.
- Evidence
- Play the beta — the city starts grey and fills with color as you run.
04 · Scope discipline
Hello Whirled
A small toy, not a feature-heavy game: discover a world, greet it, spin it, and generate another.
- Decision
- Ship it as a full-screen game only. No tabs, no ads chrome, no platform shell getting in the way.
- Shipped result
- A small React shell around the working planet toy — greet it, spin it, generate another world.
- Deferred
- Tabs, ads, and platform UI stayed out of the public release.
- Next release
- Move remaining game modules into React gradually, without rewriting the working core all at once.
- Evidence
- Open Hello Whirled — three actions, full screen, nothing else competing for attention.