🎵 Cadence

Cadence

A lesson continuity and practice management platform for Suzuki music teachers and parents — replacing scattered notes, manual scheduling, and guesswork with structured workflows.

Build
v1.0 · May 2026
Stack
React · Supabase · Vercel
🎻 Teacher View — studio management 👨‍👩‍👦 Parent View — practice guidance
24
Database tables with RLS
17
Suzuki Book 1 pieces
12
Technique skills tracked
3
Roles: Teacher · Parent · Admin
Part 1

Teacher View

Teachers manage their studio from a mobile-first interface. Each student has four tabs: Lessons, Pieces, Skills, and Schedule. The goal: reduce admin time so teachers can focus on teaching.

Teacher workflow
📋
Students list
All students
👤
Student profile
4 tabs
📝
Lesson notes
Per session
🎵
Pieces
Repertoire
🎯
Skills
Assessment
📅
Schedule
Seasonal calendar
Students List
Students
+ Add Student
Gump
Violin Suzuki B1
Invited · 38 lessons · no log this wk
May 10
11:45am
Forrest
Violin Suzuki B1
Invited · 7 lessons · no log this wk
May 11
4:00pm
Sara Chen
Violin Suzuki B2
Invited · 15 lessons · no log this wk
May 12
8:00pm
🎻
Students
📅
Calendar
🎪
Events
👤
Profile
1
Student cards — show instrument, Suzuki level, lesson count, and next lesson date at a glance.
2
Color-coded left border — indicates student status. Green = active and linked to parent account.
Student Detail — Lessons Tab
Violin Suzuki B1 Age 5 Notes · 10 ›
Parent access
Lessons
Pieces
Skills
Schedule
+ New Lesson Note
Lesson History
10 notes
Introduction / readiness
NoteApr 25Edit
Twinkle
+3 more pieces
NoteApr 20Edit
Go Tell Aunt Rhody
NoteApr 16Edit
Twinkle
+5 more pieces
Apr 16Edit
Twinkle
+7 more pieces
NoteApr 14Edit
Twinkle
+4 more pieces
Apr 13Edit
Lightly Row
Apr 11Edit
🎻
Students
📅
Calendar
🎪
Events
👤
Profile
1
Continuous lesson record — each lesson links to specific pieces covered, building a longitudinal learning history.
2
Parent access — shows the linked parent account that can view practice guidance and progress. RLS-enforced.
Student Detail — Pieces Tab
Violin Suzuki B1 Age 5 Notes · 10 ›
Lessons
Pieces
Skills
Schedule
Twinkle, Twinkle, Little Star Variations
Shinichi Suzuki
+6Polished
Lightly Row
Traditional
+5Working
Song of the Wind
Traditional
+0Not started
Go Tell Aunt Rhody
Traditional
+2Not started
O Come, Little Children
Traditional
+0Not started
May Song
Traditional
+0Not started
Long, Long Ago
T.H. Bayly
+0Not started
Allegro
Shinichi Suzuki
+0Not started
🎻
Students
📅
Calendar
🎪
Events
👤
Profile
1
Practice count (+N) — tracked automatically from lesson notes. +6 means the piece was practiced 6 times across lessons.
2
Status progression — Not started → Working → Polished. Teachers update with one tap during or after a lesson.
Student Detail — Skills Tab
Violin Suzuki B1 Age 5 Notes · 10 ›
Lessons
Pieces
Skills
Schedule
+4 = 4 practice times
Skill level: Untouched Early Developing Independent Retained
Tap a skill to change its level
Retained
Posture +5
🎻 Setup & Playing Position
Violin Position +1 Bow Hold +2
🏹 Bowing Foundations
Bow Lane +4 Straight Bowing +1 Direction Changes +1 String Changes +0
🤚 Left Hand Foundations
Hand Shape +4 Finger Patterns +2
🎵 Rhythm & Recall
Twinkle Rhythms +2 Piece Memory +1
🎻
Students
📅
Calendar
🎪
Events
👤
Profile
1
Suzuki-specific skills — not generic music skills. Categories mapped to violin pedagogy fundamentals.
2
Practice count (+N) — accumulates across lessons, giving teachers a longitudinal view of technique development.
3
One-touch assessment — tap any skill chip to change its level during or after a lesson.
Student Detail — Schedule Tab
Violin Suzuki B1 Age 5 Notes · 10 ›
Lessons
Pieces
Skills
Schedule
Gump's classes
WINTER 2026 Click on a date to see details
Jan
4
11
18
25
SPRING 2026
Apr
10
10
12
14
18
19
26
May
3
10
17
24
31
Jun
7
14
21
28
SUMMER 2026
Jul
5
12
Aug
2
9
16
23

Lesson Schedule

Sunday
11:45 AM
30 min
Weekly
🎻
Students
📅
Calendar
🎪
Events
👤
Profile
1
Seasonal calendar — shows the full lesson year at a glance. Green = completed, red = cancelled/rescheduled, yellow = today.
2
Auto-generated dates — lesson dates computed from recurrence settings. No manual entry needed — just set day, time, and frequency.
Part 2

Parent View

Parents see what matters: what to practice this week, how their child is progressing, and upcoming events. No lesson notes, no admin. Just clear guidance designed for parents who aren't musicians.

Practice Tab
Practice
Progress
Schedule
Practice Goal This Week
1 day × 15 mins
📖 Last Lesson · Apr 25, 2026
Log practice
Practice skills worked on
🏹 Bow Lane 🤚 Hand Shape 🎵 Twinkle Rhythms
Parent support: Listen together
🎻
Talents
📊
Reports
🎪
Events
👤
Profile
1
Practice goal — set by the teacher. Parents just see the target — no guesswork about what to do this week.
2
Skill chips — match what the teacher assigned. Parents know exactly what to focus on during practice sessions.
3
Parent support tip — gives non-musician parents a concrete action: "Listen together."
Progress Tab
Practice
Progress
Schedule
Achievements ✓ (1)
Twinkle, Twinkle, Little Star Variations
Shinichi Suzuki
Polished Apr 2026
+6
Posture Retained Apr 2026
Pieces
1 Working · 1 Can Play
Lightly Row
Traditional · Started Apr 2026
+5
Song of the Wind
Traditional · Started Apr 2026
+0
Skills
Early Developing Independent
🎻 Setup & Playing Position
Bow Hold Violin Position
🏹 Bowing Foundations
Bow Lane Direction Changes Straight Bowing String Changes
🎻
Talents
📊
Reports
🎪
Events
👤
Profile
1
Read-only progress — parents see achievements and progress without editing access. Teacher assessments only.
2
Piece status — gives parents a clear sense of where their child is in the Suzuki repertoire.
Events
Events
Recitals and studio calendar updates.
Forrest Gump Sara
Upcoming
Spring Recital 2026
May 15, 2026 · 10:00 AM
📅 Add to Cal
Performing: Twinkle, Twinkle, Little Star Variations
Confirmed
✓ I'll be there ✗ Can't make it
🎻
Talents
📊
Reports
🎪
Events
👤
Profile
1
Per-child RSVP — parents RSVP per child. Teachers see confirmed attendance before the event.
2
Auto-populated piece — performing piece is pulled from the student's Polished repertoire. No manual entry.
Part 3

Admin View

Super admins manage the entire platform: approve teachers, link parents to students, monitor data quality, and reassign students between studios. Desktop-first dashboard with full CRUD access across all tables — enforced via RLS super_admin policies.

Admin Dashboard
cadence-osa.com/admin/dashboard
🎵
Cadence Admin
📊 Dashboard
🎻 Teachers
👤 Students
👨‍👩‍👦 Parents
Dashboard
3
Active teachers
8
Active students
2
Pending invites
5
Linked parents
⏳ Pending Teacher Approvals
Sarah K. · violin · applied May 6
ApproveReview
🔍 Data Quality Alerts
2 students without parent links
1 parent without student links
📋 Recent Activity
Student Gump added by Teacher A · 2d ago
Parent linked to Forrest · 3d ago
Teacher Sarah K. registered · 4d ago
!
Pending approvals — new teachers register but require admin approval before accessing the platform. Status: pending → active.
1
Data quality alerts — surfaces orphan records: students without parents, parents without students. Prevents broken access chains.
2
Activity feed — timestamped log of system-wide actions. Admin sees everything without querying individual tables.
Teacher Management
cadence-osa.com/admin/teachers
Teachers
All Active Pending Inactive
Name Email Instrument Students Status Actions
Teacher A teacher.a@example.com Violin 3 Active View
Teacher B teacher.b@example.com Violin 5 Active View
Sarah K. sarah.k@example.com Violin 0 Pending Approve
1
Teacher lifecycle — register → pending → admin approval → active. Deactivation available for offboarding.
2
Student assignment — admin can reassign students between teachers, link parents by email, and manage the full org graph.
👤
Student management
Create, edit, reassign students between teachers. Bulk view across the entire organization — not scoped to a single teacher's studio.
👨‍👩‍👦
Parent management
Link parents to students by email. Send invites, track acceptance. Surface orphan parents without student links and students without parent links.
🔐
RLS super_admin policies
All 24 tables have a dedicated super_admin_full_access policy. Admin bypasses teacher/parent scoping but still goes through Postgres RLS — not application-level checks.
📧
Invite system
Token-based parent invites via Supabase Edge Function + Resend API. Teachers send invites; parents accept via magic link. Token-verified, expiry-enforced.
Architecture

Architecture

Show detailsHide details
Data model
organizations
    ↓
profiles (teacher / parent / super_admin)
    ↓
teachers → students → lessons → lesson_notes
              ↓            ↓         ↓
    student_parents   schedule   lesson_note_piece_assignments
         ↓           _blocks         ↓
      parents                   piece_progress → pieces → books
         ↓                                         ↓
    practice_logs                            piece_sections

skills → skill_groups → student_skill_states
                            ↓
                    student_skill_history (audit)

events → event_students (RSVP)
invites (token-based parent linking)
pilot_feedback
Key technical decisions
DecisionDetail
Supabase RLS (24 tables)Teacher sees only their students. Parent sees only their children. Admin has super_admin_full_access policies on all tables. Enforced at DB level — not app code.
Magic link authNo passwords stored. Email OTP sign-in for teachers and parents. Token-based invite system for parent onboarding.
Suzuki curriculum data10 Suzuki books, 17 Book 1 pieces (with Twinkle sections), 12 technique skills across 4 skill groups — all seeded in database, not hardcoded.
Seasonal schedulingLesson dates auto-generated from schedule_blocks recurrence rules. Calendar view computed at render — not stored as rows.
Skill progression engine5-level state machine (untouched → early → developing → independent → retained) with full audit trail via student_skill_history. RPC functions handle tap-to-advance logic.
Parent-safe views3 Postgres views filter lesson notes and progress to parent-visible fields only. Parents never see teacher observations or private notes.
Parent access linkingToken-based invite flow: teacher sends invite → Edge Function emails parent → parent accepts → RPC creates student_parents link → RLS grants read access.
Edge Function (email)Supabase Edge Function sends branded invite emails via Resend API. CORS-protected, idempotent, token-verified.
Row-Level Security: each role sees only their own data
Teacher A
🔒 Their students only
🔒 Their lessons + notes
🔒 Their schedule
🔒 Skill assessments
RLS WALL
Parent B
🔒 Linked children only
🔒 Practice view (read-only)
🔒 Progress view (read-only)
Cannot see other families — ever
🔐

Security checklist

ControlLayerStatus
Row-Level Security on all tables
Supabase Postgres
Database
Magic link auth (no passwords)
Supabase Auth
Auth
Role-based routing (teacher/parent/admin)
App layer
App
Parent can only view linked children
Database RLS + parent_safe views
Database (RLS)
Super admin policies on all 24 tables
Supabase Postgres
Database
Token-based invite system
Edge Function + RPC
Auth + Database
Skill audit trail (append-only)
student_skill_history
Database
PIPEDA-compliant data minimization
Policy
Policy
View Live App View Case Study