POLYCON 2025 - Dystopian Data Consent Form
What Inspired Me
The inspiration for this wasn't a single flash of genius, but rather a slow, grinding accumulation of daily frustration. Like everyone else, I've been bombarded by cookie banners for years. I started noticing how they were getting more and more deceptive--a design trend people call dark patterns. The "Decline" button would be a low-contrast grey link, while the "Accept All" button was a huge, inviting purple beacon. The options were a labyrinth of pre-checked toggles and corporate jargon designed to exhaust you into submission.
I was inspired to take that feeling of cynical, powerless frustration and turn it into something tangible—a piece of playable satire. I wanted to create an experience that was both funny and horrifying, holding a mirror up to the state of digital privacy by exaggerating it.... only slightly. The idea of contrasting this nightmare widget with a beautiful, unattainable "event of a lifetime" in the background felt like the perfect metaphor for the modern web: there's amazing content right there, but first, you have to wade through the swamp.
What I Learned
The Psychology of Dark Patterns: To satirize dark patterns, I had to learn how to build them. I learned how powerful things like low-contrast text, confusing hierarchies, and deceptive placebo toggles are. The process of intentionally designing something to be misleading gave me a much deeper appreciation for ethical, user-centric design.
The Power of State Management: On a technical level, the project's logic was surprisingly complex for a simple-looking widget. The probabilistic failure (the 30% chance of the form resetting) and the interconnected state of the toggles taught me the absolute necessity of a robust state management library. Trying to handle that with simple React state would have been a nightmare of prop-drilling.
Tone is Everything: The biggest learning curve was in the creative writing. Crafting the dystopian Terms of Service required me to think like a soulless corporate lawyer. I had to write something that was legally dense, grammatically correct, but utterly horrifying in its implications. It taught me that the words around a product are as much a part of the user experience as the buttons and code.
How I Built It
Foundation: React + TypeScript
Styling: Tailwind CSS
Challenges I Faced
Tuning the Frustration: The biggest challenge was balancing the satire. If the form was too impossible, users would leave in 5 seconds. If it was too easy, the point would be lost. The 30% chance of the form resetting on you felt like the right amount of "unfairness" to make the user feel helpless but still willing to try again, at least once.
Implementing "Perfect" Brokenness: Writing code that is intentionally and reliably broken is a unique challenge. For instance, making the "Enable past-life regression marketing" toggle re-enable itself after a 2-second delay required careful use of
setTimeoutand state updates to avoid race conditions or infinite loops.The Scrollable Widget: Ensuring the consent widget was scrollable on all screen sizes, especially mobile, while being a fixed element, required some tricky CSS to get right without interfering with the background page's aesthetic.
Built With
- bolt.new
- css
- html
- javascript
- typescript
Log in or sign up for Devpost to join the conversation.