Engineering journal documenting the journey of building production systems
with AI-powered development. From zero to a full EKS platform in two sessions.
Our 3D game crashed a budget Samsung in seconds. The obvious fix — drop the render resolution — was the wrong lever entirely. The real problem was geometry, and even measuring it turned out to be a trap.
Our kids' endless runner needed a third world. Instead of weeks of 3D work, one prompt became concept art, textures, and rigged models through an AI pipeline with human approval gates — and by evening, kids could run through a glass aquarium tunnel. Here's the pipeline, the checklist that makes every world complete by construction, and the three places human taste overruled the machine.
Last time iOS Safari broke a feature on me, I cracked it with a debug overlay on a real phone. This time the bug was pure layout — fine in Chrome, wrong on iPhone — and I wanted a tighter, scriptable loop. So I drove the iOS Simulator entirely from the command line: flat screenshots, scripted navigation, and a throwaway harness to reach a component locked behind a scroll gate. Here's the workflow, and the three one-line bugs it surfaced.
Klooboo started as a single 3D runner. Turning it into a platform took two moves: extract one 'Make it yours' editor that every game gets for free, and build a TikTok-style feed where each page is a game's world auto-running inside a framed preview. The feed sounded trivial — until full-screen three.js met a React scroll container and froze it, crashed it, and jumped on every swipe.
When the Android app went live we needed to route users to the right store from the marketing site, a shareable link, and inside the web game itself — without a paid deep-linking SDK. The buttons were easy. The edge cases were the whole job: a banner that must not nag users already inside the native app, an iPad that lies about being a Mac, and a redirect page that still has to be crawlable.
We let kids type 'flying car' or 'golden dragon' and play as a real, textured 3D model seconds later. Here's the text→image→mesh pipeline behind it, why every call goes through one AI gateway, and the two production traps we hit — CloudFront silently dropping CORS headers, and the temptation to stuff 2 MB meshes into MongoDB.
We shipped a polished scrollytelling bedtime-story player that passed every Chrome and Playwright check — then it fell apart on real iPhones in three completely different ways. Here are the iOS Safari limitations behind it, and the device-debugging trick that finally cracked them.
Our browser endless-runner looked like flat colored cubes. We pushed it toward a Temple-Run-grade night cityscape — real lighting, a glowing parallax skyline, dust and screen shake — with zero hand-modeled art. Here's what actually moved the needle, and the dead-ends along the way.
An unexpected jump in our LLM bill had no obvious cause — until we realized dozens of scripts were calling the model provider directly, invisible to every dashboard. Here's how we turned our AI service into the single, observable, enforced gateway for every generation call.
We were shipping 1.4 MB PNGs to phones and rendering them at 64×84 pixels. The fix was an on-the-fly image transform at the CDN — and a couple of CloudFront gotchas that nearly undid the win.
AWS Cost Explorer showed our infrastructure bill at $750 a month. The biggest single line item wasn't compute or storage — it was a Kubernetes pricing tier I'd never heard of. Here's how I found it, the two failure modes I hit fixing it, and the runbook for next time.
A multi-repo deploy story: a brand-new user-service microservice, Google ID-token verification on the existing auth service, two new public ingresses, and the entire UX gated behind one Astro build-time flag so it ships dark until launch. The rough edges turned out to be more interesting than the happy path.
We built and shipped a complete Pinterest auto-publisher — Sharp+SVG pin compositor, OAuth refresh, GitOps-managed k8s secrets, the full nine yards. Production E2E rollout went perfectly until POST /v5/pins returned a 403 with a message no one in the spec or docs had warned us about. Here's the trap, the actual rule, and how to avoid it.
We tested four image providers across 25 subjects, almost shipped gpt-image-1, then pivoted to Gemini 2.5 Flash Image at the last minute. Here's the comparison data, the operational landmines, and the surprise capability that decided it.
A Lighthouse score of 76 and a 5.1-second LCP led to three surgical fixes: Astro's build-time image pipeline, a subtly wrong nginx Cache-Control header, and replacing GSAP with 40 lines of CSS keyframes.
We built a fully automated pipeline that generates multilingual SEO content for every puzzle image — long-form stories and coloring page copy in 5 languages, triggered by a cron job, published via GitHub Actions, and rendered as static pages on our Astro marketing site.
We added a dedicated scheduler service to the kids games platform — a lightweight cron runner with a real admin UI, Prometheus metrics, and atomic job locking, built so recurring tasks never touch the app server again.
We pulled user authentication out of the puzzle app and into a standalone auth service — so every game on the platform shares the same user identity without duplicating auth logic.
When a kid gets stuck, the app gently lifts the right tile and drifts it toward its target — then puts it back. No auto-solving. The hint fades away as the player improves. Here's how we built it.
We restructured the kids games codebase into a proper Bun monorepo with shared UI components, types, and analytics — so adding the next game doesn't mean copying half the codebase.
After building the self-filling puzzle pool, we needed a way to see what's been generated, catch bad images, and regenerate them without touching code. Here's the two-step preview/confirm admin we built directly into the webapp server.
SFX synthesized in code, music with fade transitions, ElevenLabs voice encouragement — all wired through a React context with zero external audio dependencies. Here's how we built the sound layer for the puzzle app.
Our kids game went offline and nobody noticed for hours. Here's what broke, how we found it, and how we wired up Prometheus Blackbox Exporter with AlertManager to make sure it never happens silently again.
We wired GA4 and PostHog into the puzzle app in a single session — a thin typed module, dynamic script injection, and build-time secrets baked into Docker. Here's the full setup and why we made each call.
How I built and shipped kidsgamesapp.com in a single session — a fully animated Astro 6 static site with GSAP, floating character art, and a complete GitOps deploy pipeline to our existing EKS cluster.
We extended our admin UI with a Category Assets tab that generates, previews, and deploys theme images to S3 — using multiple AI providers, LLM-powered prompt enhancement, and a carousel preview to match covers with backgrounds before going live.
We replaced client-side AI image generation with a server-driven pool system. The first player to hit a puzzle triggers generation; every player after gets it instantly from S3. Here's how the architecture works and why it makes offline support trivial.
We built a zero-dependency admin tool directly into our ai-service microservice — it generates app icons, splash screens, and store graphics using the service's own image generation API, then exports them as a ZIP with all platform-specific sizes.
We pulled image generation and photo transformation out of the puzzle app and into a standalone AI service — a Bun/TypeScript microservice with provider abstraction, Prometheus metrics, and Langfuse tracing. One session, fully deployed.
Replacing a login wall with progressive authentication — guest sessions, smart save prompts at natural moments, and an AI-generated Adventure Card as the registration reward.
We replaced Stable Diffusion XL with FLUX.1-schnell and rewrote our prompt pipeline so every puzzle image matches its theme — a frozen snowflake gets aurora skies, a Paw Patrol helicopter gets Adventure Bay.
We replaced a static world map with a Netflix-style carousel of kids' themes — Frozen, Paw Patrol, Pokémon and more — each with AI-generated cover art and animated backgrounds.
How we replaced a traditional mobile layout with an immersive full-screen experience, a glassmorphic floating menu, and on-demand AI puzzle generation — while deleting 1,000 lines of code.
How I built a full production-grade AWS platform with EKS, GitOps, and observability in two evening sessions using AI-powered development — work that would typically take a DevOps team months.
We built a reusable platform — now we prove it works. This blog you're reading was deployed as a new app on the same cluster in under an hour, at 11 PM on a Sunday night.