← Swipe·Swipe →

2026 · INTERNAL TOOLS | OBSERVATION

Classroom Walkthroughs

Replaced the Admin Team's Microsoft Form + hand-maintained Excel workbook for informal classroom observations with a live dashboard that rebuilds the old workbook's tabs automatically.

Built at Immaculata-La Salle High School

Private Deployment: Built for Immaculata-La Salle High School
Classroom Walkthroughs dashboard

Tech Stack

Next.jsTypeScriptNextAuthAzure ADMicrosoft GraphSharePointAzure Static Web Apps

Overview

The Admin Team's 8 observers logged classroom walkthroughs into a Microsoft Form that fed an Excel workbook someone had to keep current by hand, 81 historical rows deep, with no live view of who hadn't been observed yet and no trend line without opening the file and building a pivot table. I built a Next.js app with an /observe form matching the old workbook's exact fields (department, block, grade level, course level, engagement activities, classroom protocols, engagement band, visit length) so no historical data or habits were lost in the move, and an admin-only dashboard that recreates the workbook's by-teacher and results tabs live, plus trends, a not-yet-observed list, and a raw-data export. Both the observer list and the teacher roster are governance-sensitive, so access is tightly restricted to a small, named set of observers and admins, and the teacher list is read (not re-synced) from the same SIS-backed SharePoint list another internal tool already maintains.

Impact

Who it serves: 8 Admin Team observers and ~90 teachers observed across the school year (of ILS's ~100 staff)

Before

Observers logged walkthroughs into a Microsoft Form that fed an Excel workbook someone had to keep current by hand. Seeing which teachers hadn't been observed yet, or comparing trends across a school year, meant opening the file and building a pivot table from scratch every time, 81 rows deep with no live view of any of it.

After

Every walkthrough now writes straight to a SharePoint list, and the dashboard rebuilds the old workbook's by-teacher and results tabs live, plus a not-yet-observed list, a trend chart, and year-over-year comparison. The same information that used to take manual spreadsheet work is now just a page load.

Est. Annual Cost Saved

$5,400/yr

vs. TeachBoost Pro (TeachBoost): est. $5,400/yr. $50/user/month, 9 licensed seats (8 observers + 1 admin), published TeachBoost starting price.TeachBoost's exact school/enterprise pricing requires a sales quote. The calculation assumes per-observer-seat licensing, the more common model for this SaaS category: an assumption, not a quote.

Estimate, not an audited figure. Methodology and sources are disclosed above for each comparable product.

What I Built

  • Observation form matching the legacy workbook's exact fields: department, block, grade level, course level, 16 engagement activities, 13 classroom protocols, engagement band, and visit length
  • Admin dashboard recreating the old workbook's by-teacher and results tabs automatically from live data
  • Teacher matrix, trend chart, and year-over-year comparison views
  • Not-yet-observed list, surfacing which teachers still need a walkthrough this period
  • Raw-data table with an Excel export, and a live-linked SharePoint export view for direct access
  • Reads the teacher roster from another internal tool's SIS-synced SharePoint list instead of re-syncing it: one source of truth, no duplicate sync job
  • One-time migration script that imported all 81 rows of historical workbook data into the new list

What I Learned

The upstream student information system's 'Teacher' role tags counselors and Admin Team members the same as classroom teachers, and the school's public 'Meet the Team' page turned out not to be authoritative either (several staff listed there as non-Faculty actually do teach), so the exclusion list is maintained as its own corrected source of truth, not derived from either upstream source.

Reused another internal tool's nightly SIS-synced teacher list read-only instead of standing up a second sync job for the same data. One job owns the sync, this app just reads the result.

Migrating the legacy workbook's 81 rows once, up front, meant the new dashboard had full historical trend data from day one instead of starting from zero.