Chronos — time as a rhythm, not a digit
A world clock that displays the current time across twenty cities using poetic activity labels and animated sun/moon arcs instead of numbers.
A world clock that refuses to show numbers. Twenty cities, each with an animated sky — dawn breaking over London, deep night in New York, noon blazing across Tokyo. Sun and moon orbit on dashed arcs, stars twinkle at night, and poetic labels like "Awakening" and "Dreaming" replace the digits.
Built in Google AI Studio, exported, and — for once — it actually worked on the first boot. The concept landed fully formed: 302 lines of React, Intl.DateTimeFormat doing the timezone math, Framer Motion handling the sky transitions. No backend, no API keys, no Gemini integration despite the scaffolded dependency.
The interesting part wasn't the code. It was the gap between "it runs" and "it's shipped." The first cleanup attempt (on a remix repo) produced sloppy media and missed dead dependencies. The second attempt got methodical: dependency audit, formatter caching, proper screenshot capture, a README that leads with the demo. The /learn command codified the difference.
What came out of it: a clean static app that runs forever with zero external dependencies, and a sharper sense of what "done" actually means in the AI Studio rescue pipeline.
Timeline
Dropped into another AI Studio export expecting the usual graveyard of dead imports and broken builds. This one booted on the first try — npm install clean, dev server up in 400ms, all 20 city cards rendering with animated sky gradients and twinkling stars. Zero console errors. The verdict came back as "ready to plate" and I couldn't argue with it. Chronos shows the current time across world cities using sun/moon arcs and poetic labels like "Awakening" and "Dreaming" instead of digits. 302 lines of React, no backend, no API keys, no Gemini integration despite the dependency being scaffolded in. The concept — time as a rhythm, not a digit — landed fully formed from AI Studio. That almost never happens.
Shipped the same world clock twice because the first attempt embarrassed me. The remix repo went through a rescue conversation that produced sloppy screenshots, missed dead dependencies, and a README I wouldn't put my name on. Opened the repo, saw the GIF, and immediately knew: "major mistakes made." So I started fresh on the primary. This time: stripped @google/genai, express, dotenv, and @types/express — four dependencies the app never imported. Cached the Intl.DateTimeFormat instances so the 20 city cards stop creating 20 new formatters every second. Captured proper screenshots via Chrome DevTools MCP instead of whatever the first attempt produced. Wrote a README that leads with the demo GIF and gets to Quick Start in four lines. One commit, pushed clean. The /learn command exists for exactly this — codifying the gap between "it works" and "it's shipped."