Shipped this project!
I build this for BROKEN UI JAM
Creating “bad” UI actually taught us a lot about good engineering:
Browser Permissions: We learned how to handle navigator.mediaDevices.getUserMedia and manage microphone permissions gracefully (or ungracefully, in this case).
Real-Time Data: We learned how to visualize audio data (the volume meter) by mapping frequency arrays to CSS styles in a requestAnimationFrame loop.
User Psychology: We discovered that “Good UX” is about reducing friction. By intentionally adding friction (physical exertion + precise timing), we realized just how many invisible helpers (like autofocus and auto-save) exist in modern forms to help users succeed.
Limits of the Web: We explored how browsers handle background tab throttling—meaning this app forces the user to keep the window open and active to suffer the full experience.