Skip to content

Administrator Guide

Varun Karthic edited this page Oct 8, 2026 · 1 revision

Administrator Guide

Everything an admin or super_admin does in the web app: users, courses, classrooms, students, enrollment, the activity log, and the device and firmware pages. The device and firmware pages have their own pages: Device Management and Firmware Management and OTA.

Contents


Signing in and sessions

  • Signing in: go to the server's address (e.g. https://impress.example.edu) and sign in.
  • The first account, admin, is a super admin. Its password is IMPRESS_INITIAL_ADMIN_PASSWORD, or the random one printed once in the server log (Installation). Change it at once in Settings → Change password.
  • Session lifetime: a session ends after 60 minutes without activity or 6 hours after sign-in, whichever comes first (configurable). The web app warns you 5 minutes before the hard limit. Pages that refresh themselves (live devices, deployments) don't count as activity, so a dashboard left open doesn't keep a session alive forever.
  • Independent sessions: every sign-in is its own session. Signing out ends that one only.
  • Settings: change your full name and password here.

The admin menu

Menu item Page For
Admin dashboard a greeting, live classroom nodes, user accounts and recent activity at a glance
Courses course catalog courses (code, name, credits, exam date and times)
Students student registry every student; create, edit, import
Classrooms classes / sections create, edit, import and export, activate, faculty
Modules devices gateways and hubs with health and diagnostics; student module inventory
Firmware firmware registry upload, approve, deploy, deployments
Users user management teachers and admins
Activity activity log who did what, and when
My Classes as a teacher the classes you teach

Users

Users → + New User:

Field Rules
Username 3–64 characters, unique
Email valid, unique
Password at least 6 characters
Full Name
Role teacher, admin, or super_admin

Who can do what:

  • Creating users: an admin can create teachers. Granting admin or super_admin needs a super admin.
  • Changing roles: nobody can change their own role. Promoting or demoting admin-level accounts needs a super admin.
  • Deactivating: this stops sign-in at once and invalidates the user's open sessions. You can't deactivate yourself, and an admin can't deactivate a super admin.
  • Resetting passwords: Reset pwd sets a new password. An admin can't reset a super admin's.
  • Deleting: this is a soft delete (deactivation), so the user's history stays intact.

Import CSV creates many users at once. The columns are all required: username,email,password,full_name,role. Each row is checked on its own; valid rows are created, and the response lists invalid rows with the reason. Rows with role=admin need a super admin.

Courses

Courses → + New Course: Course Code (1–16, unique), Course Name, and optionally description, credits, department, exam date and exam start and end times.

A course is a catalog entry. Teaching happens in its sections, which are classes linked to the course (below).

Classrooms

A classroom in the web app is a class: one section of a course, or a free-standing class. Create one with Classrooms → + New (the form), or import many from CSV (CSV Imports).

Form field Meaning
Classroom Name * display name
Classroom Code * the join code (code, 1–32 characters, unique). Teachers can join a class with it as co-faculty (API)
Course and Section links the class to a course. A section label is unique within a course (409 if it already exists)
Semester and Year Monsoon, Winter or Summer, and 2000–2100. Used for timetable clash checks
Class Start Date / End Date the teaching period
Location free text
Capacity 0–5000
Room Label (device code) the classroom code (classroom_code, e.g. RM-201, unique): the physical room. A gateway registering with this code is linked to this class
Time slots (+ Add Time Slot) day, start and end. Overlaps with the same teacher's or the same room's other classes are shown as warnings, never blocked

Rules to know:

  1. New classes are inactive. Click Activate (on the class page, or with the activate button) when the class is in session. Gateways only auto-link to active classes, and live teaching assumes an active class.
  2. The primary teacher is the first teacher you choose. The others become co-faculty.
  3. Deleting a class deletes its quizzes (with questions and answers), polls (with votes), attendance, enrollments and co-faculty links, all in one transaction. Devices are kept: a gateway linked to it is simply unlinked. Only the primary teacher or an admin can delete a class.
  4. Clash warnings: a clash is reported only when the time windows really overlap. That means the same term and year; otherwise overlapping date ranges; otherwise unknown dates, which count as overlapping. Back-to-back slots don't clash.

Export CSV downloads every course section in the import layout, ready to edit and re-import in update mode (CSV Imports).

Faculty

On a class page, Manage Faculty sets the teachers of that class. The first in the list becomes the primary teacher; the rest are co-faculty. Co-faculty have the same rights in the class as the primary teacher (quizzes, polls, results, roster), except deleting it.

A teacher can also join a class themselves with its join code, through the API (POST /api/classes/join {"code": "PHY101"}). The web app has no button for this yet. Joining adds them as co-faculty and never replaces the primary teacher.

Students

Students is the student registry: every student, whatever their classes.

+ New Student:

Field Rules
Enrollment Number * exactly 10 letters or digits; stored upper-case; unique
Student Name * up to 128 characters
Email, Phone a valid email; phone 7–15 characters (digits, spaces, + - ( ))
Program up to 128 characters
Enrollment Year, Graduation Year 2000–2099; graduation ≥ enrollment

Import CSV needs exactly these seven columns, all required: roll_number,student_name,email,phone,program,enrollment_year,graduation_year. Valid rows are inserted. Invalid rows are listed with their row number and reason, and the import doesn't stop at the first error.

Removing a student can be done two ways:

  • Delete is a soft delete: the student is hidden but kept.
  • Hard delete is admin-only, and permanent:
    • the student, their enrollments and their attendance are removed;
    • their quiz answers and poll votes are kept but anonymised, so finished quizzes and polls keep their totals;
    • a student module tied to them stays in the inventory, without the enrollment number.

The student's page shows their classes and participation: quizzes answered, polls voted and attendance.

Enrollment

On a class page, 🎓 Students:

  • + Enroll Student: search the student registry (by enrollment number or name) and enroll. A student is enrolled in a class at most once.
  • ⬆ Import CSV: the student CSV above. It creates new students and enrolls them in this class. A row whose enrollment number already exists in the registry is reported as an error and not enrolled: enroll existing students with + Enroll Student.
  • Unenroll: removes the student from this class only.

Students also appear in the inventory when their module joins the room's mesh (Device Management).

Activity log

Activity lists recent events: time, user (empty for device and system events), action, entity and details. Common actions:

Action When
auth.login, auth.change_password sign-ins, password changes
user.create, user.update, user.deactivate, user.reset_password user management
class.create, class.activate, class.deactivate, class.delete, class.device_auto_linked, class.status_update classes
quiz.create, quiz.start, quiz.stop, poll.create, poll.start, poll.end teaching
student.connect, student.disconnect, student.csv_import students and their modules
esp_device.online, esp_device.offline device presence (only on a change)
module.access, module.key_reset, module.ota, module.ota.prompt, module.ota_result device administration and OTA
firmware.upload and the approve, deprecate and deployment events firmware

A first-day setup, end to end

  1. Sign in as admin and change the password.
  2. Users: create the teachers (and, as super admin, other admins).
  3. Courses: create the catalog, or let the CSV import create courses.
  4. Classrooms: import the sections from CSV, or create them in the form. Set each room's Room Label (e.g. RM-201).
  5. Students: import the student CSV, then enroll students in classes from each class page, or import per class.
  6. Devices: for each room, set up the gateway and hub (Firmware: Build and Flash). Check Modules: each gateway is online and linked to its room's class.
  7. Activate the classes that are in session.
  8. Test: run a one-question quiz in one room (Teacher Guide).

Permissions in detail

Action Teacher Admin Super admin
See and run their own classes (and co-taught ones) ✓ ✓ (all classes) ✓
Create and run quizzes and polls, see results in their classes ✓ ✓
Create classes ✓ (they become primary) ✓ ✓
Delete a class primary teacher only ✓ ✓
Manage students, enroll ✓ ✓ ✓
Hard-delete a student – ✓ ✓
Courses, course and section CSV import – ✓ ✓
Users: create teachers – ✓ ✓
Users: grant or remove admin rights – – ✓
Modules, firmware, deployments, activity log – ✓ ✓
Student module inventory (all rooms) own classes, through the live panel ✓ ✓

The server enforces every one of these. A repository test calls every route without credentials to make sure none is left open (Security).

Clone this wiki locally