A calendar you can drag
Month view, colour-coded statuses, a day panel. Move a lesson to Thursday by dragging it there — the new time is saved in your timezone, not the server's.
Loading your piano space...
Built for one teacher and every student they have
A diary for one piano teacher — your students are records you keep, not accounts they sign into. It replaces the spreadsheet, the notebook by the metronome and the “sorry, did I pay you for March?” texts: attendance, one-to-five blossom scores, tuition at the rate each lesson was booked at, and a monthly report you can print for the parents.
No signup needed — the demo seeds 12 students, 2 months of lessons and a messy payment ledger in 7 steps.
Who turned up, what they owe and how the lesson actually went are one record here, written once — not three apps you reconcile on a Sunday night.
Month view, colour-coded statuses, a day panel. Move a lesson to Thursday by dragging it there — the new time is saved in your timezone, not the server's.
Pending, complete or cancelled, plus the real duration and a note. Cancelling asks for a reason, because in March you will want to know why.
Rate a finished lesson one to five blossoms. Leaving it unrated is a real answer — unrated lessons stay out of the ranking instead of counting as a zero.
All-time podium, score spread, and a flag when a student has too few rated lessons to judge. Ties are compared exactly, so two students can genuinely share first.
Search, sort and filter a real table that remembers how you left it. Avatars, notes, and separate in-person and online rates per student.
Group a family and their month prints as a single combined attendance and tuition sheet — one paper for one parent.
Expected against received, per student per month, with partial payments, several transactions, methods, notes and an outstanding summary.
Pieces with level, description and a one-to-five difficulty, each showing how many lessons you have spent on it.
Everything is stored as UTC and bucketed by your IANA zone on the server, so month totals, today's lessons and drag-drop reschedules never disagree.
Who is coming this evening, who still owes you for February, and how the month is tracking — all on one screen.
Drag a lesson to reschedule it — the new time is written back in your timezone, not the server's.
Rates are frozen per lesson
Every lesson stores the rate it was booked at. Raise a student's rate in March and only April re-prices — February stays exactly as you billed it.
The calendar only fetches the month you are on
Move to April and it asks for April. Jumping back to January does not re-download the year, so a studio with two years of history still opens instantly.
One timezone, everywhere
Times are stored as UTC and bucketed by your IANA zone on the server, so a 9pm lesson dragged to Thursday never quietly lands on Wednesday.
The feeling that a student has finally turned a corner lives in your head — this turns it into a score, a rank and a sheet of paper you can hand a parent.
Tuesday, 4:30pm · Mai Anh · Clementi, Op. 36 No. 1
4 of 5 — Really good — she fixed bar 24 herself.
Scored 4 out of 5 blossoms. Counted in the ranking.
An unrated lesson is null, not zero. It is excluded from the average and from every ranking. A lesson you forgot to score should never look like a lesson that went badly.
Averages over every rated lesson, since the studio opened.
Priya Raman
4.55
38 rated
Mai Anh
4.72
43 rated
Duc Pham
4.41
29 rated
Linh Tran
Score spread: 0 × 1, 1 × 2, 2 × 3, 5 × 4, 7 × 5.Sam Okoye
Score spread: 0 × 1, 2 × 2, 2 × 3, 6 × 4, 10 × 5.Ha MyThin evidence · 2 rated
Score spread: 0 × 1, 0 × 2, 1 × 3, 1 × 4, 0 × 5.Bao Nguyen
Score spread: 1 × 1, 3 × 2, 5 × 3, 6 × 4, 3 × 5.Two fours, no five. Ties are decided by the exact average via integer cross-multiplication, so a real tie shares a rank (1, 1, 3) instead of being broken by luck.
One student, one month, printed straight from the browser.
July 2026 · monthly report
| Week | Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|---|
| W1 | no lesson | complete | no lesson | complete | no lesson | complete | no lesson |
| W2 | complete | complete | no lesson | complete | no lesson | complete | no lesson |
| W3 | no lesson | complete | no lesson | cancelled | no lesson | complete | no lesson |
| W4 | no lesson | complete | no lesson | complete | no lesson | complete | to come |
12 complete 1 cancelled 1 to come
Summary
The sonatina is under her hands now — bars 1 to 24 from memory, tempo steady. The left hand still rushes the repeat, so we took it down to 76.
Next month
Finish the second movement and add five minutes of sight-reading a lesson. Recital piece chosen by the 20th.
One family, one sheet — siblings print together and the maths comes from the same code path, so the numbers can never disagree.
July 2026 · 5 students
| Student | Expected | Received | Status |
|---|---|---|---|
| Mai Anh | ₹7,200 | ₹7,200 | Paid |
| Priya Raman | ₹6,000 | ₹3,500 | Partial |
2 transactions
| |||
| Duc Pham | ₹4,800 | ₹4,800 | Paid |
| Linh Tran | ₹5,400 | ₹0 | Unpaid |
| Sam Okoye | ₹6,600 | ₹6,600 | Paid |
| Total | ₹30,000 | ₹22,100 | ₹7,900 short |
Partial payments are the normal case, not an edge case. Two transfers and a bit of cash still add up to one honest outstanding figure.
Seed a studio, book the week, mark what actually happened, then print the month and see who still owes you.
One click builds a sample studio in seven visible steps: 12 students, sibling families, two months of history. Or skip it and type in your real Tuesday.
Book lessons on the calendar, or generate a weekly recurring slot across the next month or two. Double-booking the same slot is blocked.
After the lesson: complete, cancelled with a reason, or still pending. Then one to five blossoms while you still remember how it went.
A per-student report with comments and next month's plan, printed straight from the browser — plus an outstanding list so nothing quietly goes unpaid.
…and then you do it again next week.
The six things people ask before they hand a tool their studio.
No. This is a diary for one teacher — students are records you keep, not accounts they sign into. Nothing to onboard, no passwords to reset for a nine-year-old.
Still wondering something? Email me.
She is the mascot of the whole thing. She sits on every empty state, so a screen with nothing on it yet still feels like somewhere. She has three moods. She meows when you click her. That is the entire specification.
There are a few doors in here that aren't on the sidebar. Click her enough and you'll find one.
Content — her resting face.
Go on, pet her.
Seed a full sample studio in seven visible steps. Twelve students, two months of lessons, and a payment ledger that is deliberately a bit of a mess — so you can see the app do real work.