Shane and I shipped this in Phase 3. Rails saved scores, the browser ran the game loop, and the Web Audio API fed timing from the track. Not a clone of OSU, but obviously in conversation with it.
He leaned on the Ruby side and built the analyzer that turned frequency data into something we could schedule against. I lived in the JavaScript that translated that stream into buttons you could actually hit. Pairing meant we both touched pieces we wouldn't have chosen alone. Slower at first, faster once the interfaces between our halves stopped lying.
Feel
Rhythm games are tuning problems. A few milliseconds wrong and the whole thing reads cheap. We chased that until playtests stopped complaining. Nothing philosophical about it, just iteration.
Stack
Rails, Postgres for leaderboard and usernames, guest mode if you didn't want to log in. Enough for a school deadline, more than enough to learn how audio and UI have to agree.