Admin Experience
Administrators run the conservatory from the portal. Their menu is
[Schedule] [Calendar] [Students] [Teachers] [Leads] [Admin] [Semester selector] [Profile photo] — most admin pages operate in the context of the
selected semester.
When there are no semesters yet (a fresh install), the admin is walked through a bootstrap: confirm locations, upload teachers by CSV, then create the first semester through the wizard. Once at least one semester exists, the system resolves a default: the semester containing today, else the next future one, else the most recent past one (test semesters are ignored unless nothing else exists).
The key flows
Each operational flow has its own detailed page:
| Flow | What it covers |
|---|---|
| Create a Semester | The wizard, the six CSV imports, pre-populating from a previous semester |
| View the Semester Schedule | The weekly grid, cell colors, confirming reservations (lessons + charges), drag-to-move |
| View the Calendar & a Week | The semester date list and the weekly grid of real lessons |
| Process Leads & Uncompleted Forms | The queues, statuses, append-only notes, account invites |
| Convert a Lead to a Family | Creating people, placing reservations, moving held payments |
| Accept a Check & Other Ledger Entries | Manual payments, scholarships, custom adjustments |
| Move a Lesson’s Time | Standing-slot moves vs. one-week reschedules |
| Change a Lesson’s Duration | One-week changes, and standing changes with pro-rata accounting |
| Assign a Substitute Teacher | Covering one lesson, and what changes for everyone |
| Cancellations & One-Off Changes | Cancelling, attendance, room changes, ad hoc lessons |
The main pages
Schedule — the semester’s weekly grid; the admin landing page. Covered in View the Semester Schedule.
Calendar — the semester’s class dates as a chronological list (class days green, holidays purple), and a weekly view of real lessons. Covered in View the Calendar & a Week.
Students and Teachers — filterable lists with the same pattern: a
keyword filter doing prefix-token search over names, phone numbers, and
address lines (for students, parent names too), with extra filters — by
teacher and by instrument — under a [+]. The students list shows Name /
Parent(s) (name on one line, phone + email on the next, per parent) /
Actions; the teachers list shows Name / Contact / Actions. Add buttons sit
top-right.
Edit Student — photo, basic info, parents (with Add Parent),
Demographics, instruments, and Charges and Payments: the current
balance, a line-item breakdown of this semester’s charges and payments, and
— if those don’t reconcile to the balance — the earlier entries that explain
it. From here an admin records payments and
adjustments. Deleting flags is_deleted
after a confirmation; nothing is actually removed.
Demographics is a single code — B, L, W, AAPI, or O, plus “Not
recorded” — kept for the conservatory’s own reporting. It appears on this
screen and nowhere else: the accessors behind it require an admin, and the
column is absent from every query a parent, student, or teacher page runs. The
Students & Parents CSV import has a matching optional Demographic column,
so a roster can be loaded with the codes already in it; a blank cell leaves
whatever is on file alone.
Edit Teacher — photo, basic info, this semester’s students (linked), soft delete.
Edit Parent — photo, basic info, children with an Add Child dialog offering two paths: Add New Child (name, suffix, preferred name, class of) or Link Existing Child (typeahead + Link Child). Soft delete.
Leads — sits in the top bar rather than the Admin submenu, because working the queue is daily work. Covered in Process Leads.
Admin menu
The [Admin] menu collects the back-office pages: Semesters (the creation
wizard, imports, and carry-forward), Locations, Announcements, Email
Templates, and Settings.
Maintenance (developers only)
Visible only to users with both is_admin and is_developer: the email
log, the activity log, server logs (paths configured via ADMIN_LOG_FILES),
and database migrations (Admin › Migrations, enabled where MIGRATIONS_DIR
is configured).
