Docs
search Esc
{{APP_VERSION}} Attendance & ID Cards

Headmaster LMS

The school-management dashboard built into every classroom server: enroll learners, run scan-based attendance with printable student ID cards, post announcements, set term dates, and export whole-school reports — all fully offline.

Opening the LMS

The LMS runs on the classroom server itself (not the cloud hub). While the server is running, open:

http://localhost:3000/lms

Sign in with a teacher account. Who gets in:

RoleAccess
Head teacherEverything, including assigning deputies and granting teacher permissions
DeputyEverything except changing staff roles (deputies are assigned by the head teacher)
Teacher with grantsOnly the tabs matching their granted permissions (see below)
info
Learner coverage and rolesLearning (K10/learner/term) and Community Free (30 learners school-wide) provide basic registers and progress. School Complete (K20/learner/term) enables attendance, IDs and reports for entitled learners intersected with the teacher's classes, even for a licensed subset. Shared calendar, staff management and announcements require whole-school Complete coverage. Builder API access requires whole-school current Builder entitlement and an unscoped administrator; old standalone-export HTML shells remain blocked for cohort installations. Historical licence semantics and separate teacher permissions still apply. Open local /teacher/licensing.html from Teacher → Settings to register the signed cohort's contractual group and attest named members. See the cohort and migration guide →.

Teacher Permissions

The head teacher (or a deputy) can grant individual teachers access to specific LMS areas from Staff & Roles — tick any of:

  • learners — the Learners tab (enrollment, roster, ID cards)
  • attendance — registers and scan check-in
  • announcements — posting school announcements
  • reports — whole-school reports
  • calendar — term dates

Granted teachers sign into the LMS and see only their permitted tabs. Grants and revocations take effect immediately — no re-login needed.

Enrolling Learners

The Learners tab owns the whole onboarding journey:

  1. Single enroll — type the learner's name; the form suggests a username, generates a PIN, and offers a class picker and avatar. On success, a strip shows the sign-in credentials with one-click Print ID Card and Write NFC Tag actions.

  2. Bulk enroll — paste one learner per line as Name, username, pin, class (username/pin/class optional). Errors are reported per line; valid lines still enroll.

  3. Roster — search, filter by class, print any learner's ID card, write their NFC tag, or (admins only) remove a learner.

Hand each learner their username and PIN — that is what they use to sign in on the student portal.

Student ID Cards

Every learner gets a printable ID card at true credit-card size (85.6 × 54 mm when printed at 100%): school name, avatar, learner name, class and username, a short ID, and a signed attendance QR code. One card is both the student ID and the attendance badge. PINs are deliberately not printed on cards.

Print cards per learner (from the roster or the enroll success strip), per class, or for the whole school — the sheet opens in a new tab with cut-out cards ready for any printer. Cards are rendered by the server (POST /api/lms/students/id-cards.html) with zero network dependencies, so printing works fully offline.

warning
Badges are forgery-proof — and install-specificQR codes are signed with the install's persistent secret, so a code cannot be guessed from a student ID. A factory reset of the server invalidates all existing badges — regenerate and reprint after a reset.

Attendance Check-In

Students check themselves in at the door by scanning their ID card. Three scan paths cover any hardware:

MethodHardwareNotes
Camera QRAny device with a cameraUses the browser's built-in barcode detector (Chrome/Edge). Needs a secure context — localhost works out of the box; LAN devices should trust the server certificate via /trust first.
NFC tagNFC tags/stickers + Android phoneWrite a learner's badge to a tag from the LMS, then tap to check in (Chrome on Android over HTTPS).
Barcode scannerAny USB or Bluetooth scannerKeyboard-wedge input — works in every browser with zero setup. The most reliable path.

How marks are decided:

  • Scans up to the school's cutoff time mark present; later scans mark late. The cutoff (default 08:15) is configurable on the Attendance tab by the head teacher or a deputy.
  • Re-scans never downgrade an existing mark — the live feed reports "already marked".
  • Manual corrections stay in the register view; scanning is append-only.
  • The live feed shows per-class tally pills with audio feedback per scan.

Export the register any time as CSV (per-student rows with date, class, status, and check-in time) — it opens cleanly in Excel and Google Sheets.

Announcements, Terms & Reports

  • Announcements — post school-wide or audience-targeted notices; students and teachers see them on their portals.
  • Terms — set the school year's term dates, used by reports and summaries.
  • Reports — whole-school learning reports with CSV export for records or district submission.

The Full Journey

Private Classroom Builder: local /teacher/builder.html, linked from teacher navigation and Settings, supports quizzes, true/false and flashcards with typed editing, explicit review and private deployment. It requires cohort mode, current Builder entitlement for every learner and an unscoped head teacher/deputy. Learners launch through their own student portal; no standalone HTML export or administrator token sharing. See the Builder guide.

  1. Enroll learners in the Learners tab (single or bulk)

  2. Print ID cards per class or for the whole school

  3. Scan at the door each morning — teacher scans cards, or a fixed device at the door lets students self-scan

  4. Review & export — live tallies during the morning, register corrections and CSV export any time