The Constraint Storm — Build Twitter With No JS, No DB, No Server
Pile on the impossible constraints. No JavaScript. No database. No server. Must work offline. Must run on a Game Boy browser. Lean into every limit until something new appears.
Why this exists
Every easy choice ships unexamined. React because React. A database because of course. A server because where else would the state go. Pile on impossible constraints and the unexamined choices snap first. What's left is what was actually load-bearing. The Constraint Storm is not a stunt. It's a diagnostic — you find out what your product actually is by removing everything it claimed to need.
What you get back
- A working single-file HTML app that satisfies every constraint — openable, inspectable, forkable, no build step, no dependencies.
- An annotation pass that maps each design decision back to the constraint that forced it. No constraint, no decision — that's the rule.
- A "constraints we cheated on" honesty list. Every storm has leaks. Naming them is the work.
When to reach for this pattern
Embedded apps with strict size limits, where every kilobyte is a fight. Teaching architecture, where the constraints make the decisions visible instead of hiding them under a framework. Resetting your taste after too long in a modern stack, when you've forgotten that an HTML file is already a program. Reach for the storm when the defaults have started feeling like physics.
Build me a working Twitter clone. Constraints: no JavaScript, no
database, no server, must work offline, must work on a Game Boy
browser, must be inspectable as a single .html file, must support
1000 users. Satisfy all of them. When a constraint forces a creative
solution — embrace it. The point is not "what's possible" — the
point is "what's possible only when these constraints are stacked."
Paste this into Claude, Cursor, or Copilot. Change one thing that matters to you.
What I learned shipping it
- Constraints are not obstacles. They're a generator. Stack enough of them and the design has nowhere to hide.
- Modern web stacks ship a thousand features to solve problems most apps don't actually have. Strip them and the actual product is smaller than you think.
- The real product surface is the one that survives every 'no.' Everything else was scaffolding you forgot to take down.