
The problem
A first open-source pull request is a big step, and most projects don't have a change small enough, safe enough and visible enough for a beginner. I wanted a place where the whole real flow (fork, branch, commit, pull request, CI, review, merge) ends with something you can see.
What I built
- Each house is one JSON file in places/. A strict Zod schema is shared by the CLI validator, the app loader and the in-browser house builder, and CI writes per-file annotations when a house is invalid.
- A merge policy in GitHub Actions: a contributor's first house that touches nothing else merges itself once every check passes. The workflow only runs trusted code from the default branch and reads PR files through the API as data. Links, folders and executable files are refused in places/, and changes to the app, .github/, agent-instruction files or someone else's house wait for maintainer review.
- A browser flow for people who have never used git: the builder opens a prefilled new-file page on GitHub, so a first PR needs no install.
- The town itself: an isometric React 19 + Canvas 2D app with residents who keep their own routines, a 24-minute day/night cycle, seasons, football matches and an outdoor cinema with procedurally drawn films.
- A private "town hall" dashboard for workshops that shows each open PR's stage and who it is waiting on, streamed live to a projector view.
Results
- 137 merged PRs since the September 2026 launch; 53 of them from 46 other people (as of October 2026).
- 37 outside PRs were merged automatically by the policy, with no maintainer action.
- 49 forks, 59 houses, and 400 Vitest tests in CI.