← Projects

Allegro

A multi-tenant SaaS for music schools and independent teachers — scheduling, curriculum, practice tracking, billing, and communications, plus a digital score library with optical music recognition.

Role
Solo — full-stack, Django + Next.js
Timeframe
2025 — ongoing
Status
In active development
Stack
Django 6Next.js 15MantineStripeCeleryAudiveris (OMR)
Allegro screenshot

What it is

Allegro is a multi-tenant SaaS for music schools and independent teachers that runs the whole studio — students and instructors, scheduling, curriculum, practice tracking, communications, and Stripe billing — behind one tenant-aware Django API and a Next.js front end.

It’s also where my two careers meet. Most of my work is backend and financial systems; this is the project where the music degrees earn their keep.

What’s in it

  • A real multi-tenant backend. Sixteen Django apps — identity, scheduling, curriculum, practice, scores, billing, communications, instruments, marketing, ops, and more — behind a versioned REST API, with tenant isolation, social login (Google / Facebook / Apple via allauth), Stripe billing, Celery for background work, and S3 storage.
  • A digital score library with optical music recognition. Allegro ingests scanned sheet music and turns it into a structured, annotatable score using an OMR engine (Audiveris), with its own score format and an annotation pipeline. Turning a photo of a page into something a student can practice against is the feature I’m most proud of.
  • Practice tracking and curriculum that tie lessons, assignments, and what a student actually does between them into one thread.
  • A Next.js 15 + Mantine front end with charts, a score viewer, and the day-to-day studio workflows.

Why it matters

It’s the largest thing I’ve built end-to-end: a genuine multi-tenant SaaS with billing, background processing, third-party auth, and a hard technical centerpiece (OMR) that most CRUD apps never attempt. It’s also the clearest expression of the thing that makes me a slightly unusual engineer — I can build the software and read the score.