Product Studio

Small apps and games I make in my spare time.

Gateaux café interior with a pastry display case

Gateaux

Live Beta

A language-learning café where you bake cakes by completing lessons and serve customers in Spanish and French.

DateLight wordmark and lightbulb location-pin logo

DateLight

Live

Choose a date location in under 60 seconds with AI-curated picks based on place, vibe, and radius.

01 · Learning loop

Gateaux

Live Beta

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.
Language learning Game loop Vanilla JS Vite

02 · Product prioritization

DateLight

Live

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.
AI curation Maps PWA
DateLight glowing heart-shaped lightbulb app icon

03 · Creative direction & iteration

Ultraviolette

Live Beta

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.
Three.js GLSL Game design Object pooling
Ultraviolette character spreading a sparkling purple trail through a city changing from grey to colorful

04 · Scope discipline

Hello Whirled

Live

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.
React Three.js Procedural 3D