Founder & Full-Stack Developer

Social Piano

A social multiplayer piano platform where friends play the same 88-key keyboard in real time, chat, join clans, and learn songs step by step.

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.

  1. React + Web AudioWeb, PWA, and Android
  2. WebSocket Room ServerNode.js · Cloud Run
  3. SupabaseAuth, profiles, and RLS
Clients send notes over WebSocket to the room server, which validates and broadcasts them to everyone in the room; persistent data lives in Supabase.

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.

Building a product?

Turn technical decisions into a working product.

Get in touch to discuss a SaaS product, custom web application, or AI prototype.

Start a conversation