Product & engineering
Stavo
A subscription web application for self-taught piano and guitar players. It includes interactive lessons, a score editor, guided playback and practice tools.
- Context
- Independent product
- Date / status
- Ongoing
- Work
- Product & engineering
The problem
Static lessons do not provide interactive practice. Stavo needed to combine lesson content, notation, playback and practice in one application.
Scope and architecture
My responsibilities
- Product definition and interaction design
- Frontend architecture and score editor
- Go API and PostgreSQL data model
- Billing, deployment, backups and operations
System
- Vue.js and TypeScript web application
- Go HTTP API with explicit validation
- PostgreSQL with versioned score documents
- Docker, Caddy and encrypted backups on Hetzner
Key decisions
- 01
Let people try the editor before creating an account.
Guest scores and learning progress stay in the browser. Account workspaces move through the API into PostgreSQL, so evaluation is immediate without weakening ownership rules.
- 02
Use one document model across the product.
Notation, tablature, playback, MIDI entry, practice loops and autosave all operate on the same versioned score format. That keeps the tools synchronized and makes older documents migratable.
- 03
Keep production boundaries explicit.
The frontend, API, migrations, database and optional transcription worker run as separate services with health checks, private persistence networking and recoverable backups.
What I built
I defined the product, designed the workflows and built the Vue and TypeScript frontend, Go API, PostgreSQL data layer and Docker-based production environment. The same versioned score document drives editing, playback, practice and account synchronization.
- Vue.js
- TypeScript
- Go
- PostgreSQL
- Docker
Result
Live subscription product built and operated independently
- Interactive lessons with guided playback
- An in-browser score editor and focused practice tools
- A subscription product running in production
Contact
Have a project in mind?
Tell me what you’re building, where it stands and what you need help with. LinkedIn is the best place to reach me for now.
Start a conversation