zoomcheck

Zoom attendance dashboard — match rosters with review queue and webhook-ready backend for large meeting automation.

Overview

Load a roster from Excel, capture Zoom join/leave events via webhook, and match participants against the roster to compute attendance. In classes where names, nicknames, and device names are mixed, checking every attendee by hand is not practical — confident matches are handled automatically and only ambiguous ones go to a review queue.

  • .NET 8 + Avalonia desktop, ASP.NET Core backend, SQLite
  • Installer: ZoomCheck-Setup-x64.exe under deploy/windows/
  • Backend at http://127.0.0.1:5078 — CSV export from the dashboard

READMERepositoryIssuesPages canonical

Quick start

  1. Run ZoomCheck-Setup-x64.exe and finish the wizard
  2. Launch the ZoomCheck shortcut (local service starts automatically)
  3. Open or join the Zoom meeting
  4. Enter the meeting ID — load the roster — refresh during class — review flagged people — export at the end
dotnet build ZoomCheck.sln
dotnet run --project src/ZoomCheck.Backend
dotnet run --project src/ZoomCheck.App

Architecture — 4 projects

ProjectResponsibility
ZoomCheck.CoreDomain models and matching logic
ZoomCheck.InfrastructureExcel parsing and SQLite access
ZoomCheck.BackendRoster distribution, Zoom webhooks, board operations, export API
ZoomCheck.AppOperator review dashboard (Avalonia desktop)

Matching confidence

TierMeaning
VerifiedStrongest match, typically email-based
AliasVerifiedOperator-registered alias matches Zoom display name
NameOnlyName-only match — quick confirmation recommended
PossibleWeak evidence — review recommended
UnmatchedNo roster match

See Windows operator guide for the full workflow.

License and ownership

Owner: ianlyoo — License: MIT — Version: 0.1.0 — Language: C#

Limitations: Windows-oriented deployment; Zoom webhook setup requires a reachable endpoint. Roster quality (Excel encoding, name normalization) directly affects match rates. Attendance results are decision-support — operator review is required for NameOnly / Possible / Unmatched.