Una persona, una casa starts from a simple promise: open the page, press one button and get a house that looks cut out of colored paper, with a few pencil doodles on top. Every house sits on a square colored background. There is a gallery to browse and a small workshop to cut out and publish your own.
The brief was a super-simple page, hosted on GitHub, with one refresh button and nothing else to decide. It began on 9 November 2026 from reference images of houses made as paper collage with pencil drawings, and from the wish for it to cost nothing to run.
What it does
- Home. Each press of the round button shows another house, with a random background color.
- Gallery. A single gallery with no categories and no card backgrounds. The order is shuffled on every visit and stays stable while you browse. Tapping a house opens a large viewer you can flick through.
- Workshop (Crea tu casa). Four tools: Papel, Tijeras, Lápiz and Goma. Paper is cut by tapping corners point to point and closing on the first point. Scissors remove whatever falls inside the traced zone. The pencil draws a fine graphite line. The eraser only removes pencil, only where it passes.
- Publish. Publicar sends the finished house straight to the public gallery. There is no account and no download button.
Design decisions
- Few decisions for the visitor. Early on the brief was to decide on the author's behalf and not ask questions. The home has no settings, no counters and no helper text.
- Names in plain words. The tool is called Papel, not "Collage" or "Cut".
- Quiet interface. Rounded controls, two floating buttons at the bottom on mobile, medium weight text and an 8 px gap between paired buttons.
- Drawing has to feel like paper. The paper texture is shared by all houses. Wall, door, window and roof are free layers, not molds, so a house can be odd on purpose.
- Publishing without friction. Publicar posts to the gallery without a review step or a confirmation overlay. The canvas only resets once the server has confirmed the publication.
A fast first house
The first version generated every house on the phone, and refreshing could freeze the page on an iPhone. The home now serves a bank of pre-rendered, compressed houses (21 to 44 KB each) instead. The cost is that houses can repeat, which was accepted on purpose.
Later work on the gallery and the viewer followed the same idea, less work at the moment of the tap:
- The viewer cancels background work before it closes and prepares fewer neighboring houses in advance.
- Thumbnails of visitors' houses are rasterized and cached, with a fallback to the vector drawing if that is slow or fails.
- Gallery data respects a short cache and there is a single versioned script on the home.
- A browser test walks through the whole path (home, gallery, open a house, move on, close with the button and with Escape) and runs with the other tests on every publish.
Thumbnails were compared against the live vector drawings for real visitors' houses, read only: the average difference was between 0.01 and 0.19 out of 255, and no visual change was visible.
Stack and limits
- A static site on GitHub Pages, with a plain JavaScript renderer per house format. Old formats are frozen so that published houses never change.
- A small Cloudflare Worker with a D1 database receives published houses, on the free plan. It accepts only normalized shapes, never images, HTML, names, emails or links, and limits the number of publications per day.
- Zero cost by design: no paid plan, no accounts and no analytics added. If the free quota is reached, publishing stops and drawing and generating keep working.
- Live at rafagarces.github.io/una-persona-una-casa.
Limitations
- Because publication has no review step, houses are checked after the fact and can be removed.
- Most checks ran in desktop Chrome and emulated mobile. The author has used the site on his iPhone, but there has been no full audit in Safari, and scissors and point-to-point paper have not been verified there in detail.
- Free quotas are shared with other projects on the same account, so a spike can limit publishing.