Class Desk
Schedules, seats left, customers, registrations.
Keyed:
CSV header: code,title,instructor,venue,starts_at,ends_at,capacity,price,notes,status
Same code updates the class. Time, venue, or instructor change bumps the schedule version. Seats recount immediately.
CSV header: name,phone,email,notes
Match on email, then phone. Existing rows update.
CSV header: course_code,name,phone,email,seats,note
Unknown names are created. Full classes go to the waitlist. Cancel frees a seat and promotes the next waiter.