The village site

A portfolio is usually a list. With AI, I built mine as a Roman harbor town you can walk through. I started building it on September 24, 2026, and had it live five days later. Each new thing I build gets its own place in the town, and the story grows a chapter at a time.

What's in it

  • Every page sits somewhere in the town: a building to walk into, or an object inside one, like the firebricks on a shelf in the Trade stall. Each one is also a plain page you can read.
  • Fourteen named characters and thirteen villagers. When you arrive, Customs asks what brings you to the harbor, and each named character has a different first line for each of the ten answers. That's 140 openers.
  • Nine rooms you can walk inside, from the Library to the Villa's rooftop garden, with more opening as the town grows.
  • A quest at the smithy, and chapter one of a story on the road east: turn-based fights with a timed press on every blow, a boss, and a rescue. Back in town, you can cook, farm, fish, and trade with the merchant for coin.

How it's built

  • A three-quarter view in the style of Stardew Valley, with one fixed sunset painted into the art. The sun is always in the west, so no sprite is ever mirrored: a flipped sprite would have its light on the wrong side. Each direction is drawn on its own.
  • Two maps: the town, 64 by 40 tiles in four levels joined only by stairs and ramps, and the road east, 80 by 18.
  • Walls and walkable ground live in code, not in the art, so a repaint never changes where you can walk. Each character stands on a single tile.
  • No sound yet. Music comes with the chapters, and nothing in the game will depend on hearing it.
  • Vite, Phaser 3 and TypeScript, about 21,000 lines. It runs on Cloudflare, and a small server function saves the short form at the pier to a database.
  • About 440 images from 32 rounds of art, made across ChatGPT and Claude and held to the same guidelines throughout: pixel sizes, illustration direction, a 16-color palette and more.
  • I built it with Claude Code. It reads a rulebook in the repo and a world bible I keep beside it, so every session starts from the same rules and the same story. When a session loses time to a wrong guess, the lesson goes into the rulebook, like checking the browser tab is visible before blaming the code.
  • Every build has to pass more than 100 checks first, across the map, the villagers' paths, the dialogue, the fights and every page. A single em dash in the copy fails the build.

Notes

The code is private.