AI-powered music platform

Singlio

Hosted YouTube karaoke queue — guests scan a QR code to request songs from their phones.

ReactNode.jsExpressPostgreSQLSocket.ioYouTube Data APIDocker
Singlio screenshot 1 of 6
Challenge
Running group karaoke requires juggling song queues, guest requests, and TV display without friction.
My Role
Designed and built the full-stack app: auth with email verification and lockout, event/session management, real-time host/guest sync over websockets, YouTube search integration, photo slideshows with screen messages, favorites, and Postgres persistence with dump/restore tooling.
Architecture
Express + Socket.io server (core/auth/karaoke/routes layers), Postgres pool with boot-time schema creation, Vite React client; QR join links built proxy-aware via HOST_URL/X-Forwarded headers.
Interesting decisions
Server-enforced guest permissions (not just hidden buttons); per-address sign-in throttling that does not leak account existence; DATABASE_URL override for managed Postgres with local compose for dev.
Result
Working self-hostable product; same-network LAN mode without dev server; portable data/ directory for migration.
What I Learned
Real-time state ownership (single host player drives playback) simplifies sync more than any client framework choice.

Ask AI About This · All projects