Window: a store where nothing is for sale
Fourteen categories, 350 products, an empty cart that never checks out. Built for my mother, who could not stop shopping online.

- 350
- products photographed
- 14
- categories
- 0
- things for sale
Context
My mother shops online when she is anxious. Not for anything in particular. The browsing is the point, and the parcel arriving is an anticlimax she then has to find room for.
I watched enough of that loop to notice which part she actually wanted. It was not the delivery. It was the scrolling, the comparing, the adding to cart, the small sense of a decision being made. Checkout was the tax she paid for the rest of it.
So I built the rest of it. Window is a store with fourteen categories and 350 products, and none of them exist. You can browse, filter, compare, add to cart and save things for later. The cart never checks out, because there is nothing behind it.
The problem
Compulsive online shopping does not respond well to being told to stop. Blockers make the urge into a locked door, and a locked door is a thing to get around. Every app I looked at was built on subtraction: hide the store, count the days, feel bad about the relapse.
Nothing offered the behaviour without the consequence. The urge is real and it wants an object. Removing the object does not remove the urge; it just leaves it circling.
I also had to be honest about what this is not. It is not therapy, it is not a clinical intervention, and I am not qualified to build either. Getting that wrong would be worse than not building it.
My role
All of it, solo. Nuits has never hired anyone.
I designed the store, wrote every product name and description, drew the icons, and photographed all 350 items myself in Helsinki, mostly after dark, because that is when I had time and because the light was better than the alternative. I built the site, wrote the copy for the help pages, and assembled the helpline directory.
The photography was not a shortcut around stock imagery. It was the longest part of the project by a wide margin, and it is the reason the store reads as a store instead of as a demo.
Approach
Window only works if it is convincing. A parody store with placeholder rectangles gives you nothing, because the thing being replaced is a full sensory habit: real photographs, real prices, real category pages, real “customers also viewed” logic. The moment it feels like a joke, it stops functioning.
So the discipline was to build a genuinely good ecommerce site and then remove exactly one thing. Every other affordance stays. The cart holds items. The saved list persists. The prices are consistent within a category. The absurdity is not decorated; it is just there, in the fact that the button at the end does nothing.
Two pages carry the honesty. One is a directory of real helplines. The other says plainly that Window is not treatment and does not claim to be, and points at people who are qualified. Both are linked from the footer of every page, not buried in an about section.
Building it
Next.js, fully prerendered, on Cloudflare. There is no server rendering, no database and no user account, which is the first privacy decision rather than a performance one. If I do not build a backend, there is no browsing history of a vulnerable person sitting on my infrastructure. There is nothing to breach and nothing to subpoena.
Cart state, saved items and settings live in the browser and stay there. The whole catalogue ships as static output, so the site installs as a PWA and works with the network off. That matters more than it sounds: the moment someone reaches for the habit is often the moment they are somewhere with bad signal, and an offline shop that loads instantly is more useful than a fast one that needs a connection.
There is no AI in Window at all. Not a recommendation model, not a generated description, not a single call to a provider. That was a deliberate choice and I get asked about it often. Product copy written by a model would have been faster to produce and would have read as filler, and filler breaks the illusion the whole thing depends on. More to the point, a personalisation model pointed at a compulsive shopper is a machine for making the compulsion worse. I did not want to build that, even accidentally, even well.
Outcome
It is live at windowshops.org. My mother uses it. That is the entire success metric I set and the only one I am confident measuring.
Beyond that, the thing I did not expect: people browse it as a browsing experience, with no compulsion involved, the way you would flip through a catalogue. Fine by me.
What I’d do differently
Fourteen categories was ambitious for one photographer. I would ship six deep categories rather than fourteen shallow ones, because a thin category is the fastest way to break the illusion.
I would also have written the not-treatment page first, before the shop. I wrote it late, and writing it late meant reworking tone across the whole site to match it.




