The Problem and Product Idea
Most online piano apps are either single-player toys or learning-only tools. Music lovers had no social space where they could play the same keyboard at the same time with friends, chat, and learn together.
Social Piano fills that gap: a multiplayer piano platform that opens in the browser with no installation, lets anyone start instantly as a guest, and keeps profiles, friends, and progress with a Google sign-in.
My Role
As the founder and sole developer, I owned the entire product end to end: product design, the audio engine, the real-time game server, the database schema and security policies, Android packaging, SEO, and store readiness. I used AI coding agents throughout planning, refactoring, testing, and documentation.
Key Product Decisions
- Live jam rooms: Every note in a room is heard instantly; room ownership is protected by a short grace period on disconnects, alongside reaction emojis.
- Three modes: Piano Studio (recording, MIDI export, sound packs), Play Together (real-time rooms), and Learn Piano (falling notes, wait mode, section looping, tempo control, and leaderboards).
- Realistic sound: A polyphonic, sampled grand piano on Web Audio with sustain pedal, reverb, and velocity support.
- Real keyboard support: Physical MIDI keyboards via Web MIDI with hot-plugging and pedal thresholds; MIDI file import and export.
- Community: Room chat, private messages, friends, clans, badges, daily rewards, and a cosmetics store.
- Safe community: Reporting and blocking, moderator review, a profanity filter, and server-side rate limits for notes and messages.
- 17 languages and SEO: The interface ships in 17 languages; song landing pages carry deep links that open the app directly on that song.
Architecture Approach
The client is a React and Vite application, installable as a PWA and served through Vercel. The same codebase is packaged as an Android app with Capacitor. The real-time layer is a Node.js WebSocket server on Google Cloud Run that manages rooms, note broadcasting, chat, and rate limiting. Authentication, profiles, and persistent data live in Supabase (PostgreSQL), protected by row-level security policies.
- React + Web AudioWeb, PWA, and Android
- WebSocket Room ServerNode.js · Cloud Run
- SupabaseAuth, profiles, and RLS
Outcome
Social Piano brings real-time network programming, low-latency in-browser audio, multilingual product delivery, and community safety together in one live product. Open the live app and start playing right away as a guest.