keii: a walkable 3D museum
Built for a friend's art career, then scoped honestly as a product
Why I built it
A friend of mine is an illustrator trying to get his art career off the ground. I wanted to give him something that set him apart from every other artist portfolio out there.
The market wasn’t offering him much. Website builders run $16 to 23 a month and every portfolio looks the same. Social platforms compress images and bury older work. The hosted 3D gallery platforms charge $8 to 28 a month forever and keep the gallery on their servers. That risk stopped being theoretical, too: Mozilla Hubs shut down in 2024, and Spatial deleted creator galleries in July 2026.
What I shipped
A complete demo site, built from scratch with Hugo around my friend’s real artwork, with his permission. It’s a capability demo rather than his actual website, and a banner on every page says so. It has a filterable gallery, an automatic thumbnail pipeline, print-purchase links, and hosting that costs nothing.
The centerpiece is a walkable 3D museum in one self-contained HTML file, about 34KB with Three.js and WebXR:
- Walk a dark museum hall with the real artwork hanging under picture lights
- Desktop uses WASD and mouse-look. Phones get touch controls. On a Quest headset it’s full VR with stick locomotion
- A Victrola in the center plays music with positional audio. Walk closer and it gets louder. Two playlists, switchable in-world
- No build tools, no accounts, no subscription. The owner keeps every file


Then I scoped it like a PM
The museum only took me evenings because of AI-assisted coding. That raised an obvious question: what’s it worth to the thousands of artists who can’t build it at all? So I ran the same kind of research pass I did for Campus Scout , covering competitors, marketplaces, taxes, and realistic earnings.
The niche is verifiably empty. As of July 2026 there’s no downloadable, one-time-purchase, walkable WebXR gallery for sale on any major marketplace. CodeCanyon returns zero results for “webxr”. Every real competitor is a hosted subscription, and almost none of the art-focused ones ship real headset support.
I also wrote down the counterweight. Empty niches are usually small niches. 44% of Gumroad products earn nothing, and the median digital product earns about $364 lifetime. My revenue table leads with the failure case and sizes the realistic win at $250 to 800 a month with steady marketing. It’s not a gold rush, and the report says so.
The product plan
| Rung | Price | What it is |
|---|---|---|
| Free demo room | $0 | The live museum. It markets itself |
| Full template | $49 one-time | 20 art slots, music, VR, docs. The buyer owns the files forever |
| Install call | $99 | Template plus I set it up with you |
| Done-for-you | $149 | I deploy it to your host within 48 hours |
Sold through itch.io and Gumroad, since both handle worldwide sales tax as merchant of record. The “own your gallery forever” positioning targets the communities where anti-platform feeling runs strongest, and Spatial’s shutdown orphaned exactly these customers.
Decisions I’d defend in an interview
| Decision | Reasoning |
|---|---|
| One HTML file, no build step | The customer is an artist on Neocities, not a developer. Every dependency removed is a support email prevented |
| One-time purchase, not SaaS | “You own it” is the whole differentiator, and hosting costs plus churn are what killed Spatial’s creator tier |
| Sell through merchant-of-record platforms | 10 to 12% in fees buys out the entire global sales tax problem. The right trade at this scale |
| Lead the revenue model with the failure case | Planning around the median instead of the outlier is what separates a business decision from a wish |
| Kill criteria written before launch | 25+ sales in 90 days means build the product family. Under 10 means it’s a portfolio piece and I cut the time investment |
Where it stands
- Live: the demo site and museum, working on desktop, mobile, and VR
- Done: the business scoping report, with channel economics and a 90-day roadmap
- Next: productize it (a config block, a plain-English README, licensing hygiene), then list it at a $29 launch price
What this shows
Range. This project had the opposite constraints of Campus Scout: aesthetics, WebGL performance, a non-technical end user, and zero-cost hosting. And the same discipline applied after the fun part. Verify the gap, cost the channels, write down the failure case, set kill criteria. Building it was the fun part. Scoping it honestly is the job.