Makeup lesson credits for music studios

Micro-SaaSWeb1 weekNext.jsSupabaseStripe

The idea

Every music teacher carries a shadow debt of makeup lessons, tracked in a notebook, a phone note, or pure memory. Parents remember credits the teacher forgot; teachers honour makeups twice; and the liability compounds because credits never expire when nobody tracks the date. It is the most reliably hated admin problem in a teaching studio.

MyMusicStaff and its peers bundle a makeup feature into a sprawling everything-app, and it is nobody’s priority. The wedge is doing the single worst problem perfectly: an append-only credit ledger, parent self-booking against published windows, and expiry policy enforced by software instead of awkward conversations.

Who pays

Studios with 20-80 students pay 19 USD/month, typically a solo teacher or a two-teacher partnership for whom every double-honoured makeup is a direct unpaid hour. Distribution: music teacher associations (MTNA chapters and their UK equivalents), teacher Facebook groups, and content targeting makeup lesson policy searches, which teachers research every September.

MVP scope

  • Family and student roster with append-only credit ledger
  • One-tap credit issue with policy-driven expiry and daily expiry cron
  • Recurring makeup window publisher with 30-minute slots
  • Token-link family portal for balance viewing and self-booking
  • Transactional slot claim so double-booking is impossible
  • Skip for v1: regular lesson scheduling, tuition invoicing, attendance, multi-teacher studios, practice logs
// Build prompt — paste into Cursor / Claude Code / Lovable / Bolt
Build MakeupDesk, a web app that manages makeup-lesson credits for music teaching studios.

Stack: Next.js (App Router), Supabase (Postgres + auth), Stripe for billing.

Core flow: the teacher keeps a roster of families and students. When a lesson is cancelled with proper notice, the teacher taps Issue Credit on the student, which writes a ledger entry with an expiry date set by studio policy (default 60 days, configurable). Separately, the teacher publishes makeup windows: Thursday 4-6pm in 30-minute slots. Each family has a login-free portal link (signed token per family) showing their current credit balance and the open makeup slots; booking a slot burns one credit atomically and emails both sides a confirmation. Expired credits drop off the ledger automatically via daily cron, with the expiry policy shown on the portal so nobody is surprised.

Pages: teacher dashboard (outstanding credit liability count front and centre), family roster with per-family ledger history, makeup window publisher with recurring windows, family portal (balance, book a slot, upcoming makeups), studio policy settings, billing.

Implementation details: make credit burn and slot claim a single Postgres transaction with a unique constraint on the slot, so two parents cannot book the same 4pm. Ledger entries are append-only: issue, burn, expire, and manual adjust with a required note.

Pricing: 19 USD/month per studio via Stripe Checkout, 30-day trial, up to 100 active students.

// More Micro-SaaS ideas