Get in touch

From the workshop

Irenaverse

A universe where kids learn to code by building games.

Iris + Arena + Universe. A browser-based coding playground with its own kid-friendly language (Irene), an in-page editor, and a game canvas — all running client-side, no server execution.

Live Web
Laravel Inertia React CodeMirror Irene DSL
The build story

The build story

Iris in the loop.

Iris was nearly twelve when this started. She was always curious about what Dad did all day — those screens of gibberish the rest of the family politely walked past. Scratch and the other block-based tools were fun for a while, but she could tell they were not the same thing. The cat moved because you dragged a block, not because you’d typed words and the computer had read them.

Irenaverse is the bridge I built for her: a browser-based coding playground with its own language, Irene — the smallest possible language that can express the games a twelve-year-old wants to build without lying about how real code works. It sits deliberately between Scratch (too magical) and real tooling (too punishing — semicolons, stack traces, blank pages).

A language where the game loop is grammar

Most learn-to-code tools bolt the game loop on as a library. In Irene, on tick:, on key_down "space": and on collide: are part of the language itself, so a beginner writes a real moving game in three lines without ever hearing the word “callback”:

dog = sprite("dog", 100, 100)

on tick:
    dog.x = dog.x + 5

That’s lesson three of thirty-eight. Change the 5 and the dog runs faster. Change x to y and it falls. That feedback loop — type words, computer obeys — is the entire point.

Even the error messages were designed for her: no SyntaxError, no stack traces. Irene says things like “I expected a number here, but I got the word dog. Did you forget quotes?”

Safe by construction

Irene compiles to nothing and ships nowhere — it’s a lexer, parser, and tree-walking interpreter (about 5,300 lines of TypeScript) running in a Web Worker in the kid’s own browser at 60 Hz. The server never executes a line of user code. A step cap per tick means the classic first crime — while true: — trips a friendly error instead of freezing the editor. Sharing works on an invite tree (your games are visible to friends-of-friends, never strangers), and comments pass through an AI safety check with one hard rule: if the AI is down, a kid’s comment is never silently eaten — it posts flagged for review instead. Never silence a kid because of infra.

Three weeks, docs first

The first commit was documentation: what it is, who it’s for, the language spec, the architecture, a phased roadmap — all written before any code. Then the phases landed fast: language and editor first, lessons and accounts, an AI tutor (hint first, code only on ask), sharing and remixing, then polish. First commit to production on my own server: about three weeks of evenings.

And the name on the tin is real. The roadmap’s test for every feature is whether Iris or a real friend would actually use it. Playtesting her games surfaced physics bugs that got fixed the same week, and the sprites shipped at 100 pixels until kid feedback shrank them to 70. She’s not a persona in a product doc — she’s the user, and the loop is short: she plays it at the kitchen table, and the fixes ship before bedtime.

Got a domain that needs its own playground — or its own language? Here’s how we could work together.

Visit Irenaverse