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.exeunderdeploy/windows/ - Backend at
http://127.0.0.1:5078— CSV export from the dashboard
Quick start
- Run
ZoomCheck-Setup-x64.exeand finish the wizard - Launch the ZoomCheck shortcut (local service starts automatically)
- Open or join the Zoom meeting
- 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
| Project | Responsibility |
|---|---|
ZoomCheck.Core | Domain models and matching logic |
ZoomCheck.Infrastructure | Excel parsing and SQLite access |
ZoomCheck.Backend | Roster distribution, Zoom webhooks, board operations, export API |
ZoomCheck.App | Operator review dashboard (Avalonia desktop) |
Matching confidence
| Tier | Meaning |
|---|---|
Verified | Strongest match, typically email-based |
AliasVerified | Operator-registered alias matches Zoom display name |
NameOnly | Name-only match — quick confirmation recommended |
Possible | Weak evidence — review recommended |
Unmatched | No roster match |
See Windows operator guide for the full workflow.
Project links
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.