Appendix
Appendix
Roles & Permissions matrix
| Action / View | School Admin | Principal | Class Teacher | Subject Teacher | Parent |
|---|---|---|---|---|---|
| School Configuration (Ch. 1) | Full | — | — | — | — |
| Approve staff requests (Ch. 2) | — | Yes | — | — | — |
| Take Attendance for a class | Any class | Any class | Only their assigned class/section (Ch. 7.1) — no assignment means no access to any class | Only class/sections they’re mapped to teach (Ch. 6.2); in Period-wise mode, only the exact period they’re scheduled for | — |
| Correct already-submitted attendance | — | Yes, with a reason | — | — | — |
| View Attendance Report | Yes | Yes | — | — | — |
| View a class/section’s full Timetable grid | Any class | Any class | Only their assigned class/section | Only class/sections they’re mapped to teach | — |
| "My Timetable" (own periods only) | Yes | Yes | Yes | Yes | — |
| View own child’s Fees / Timetable / Attendance | — | — | — | — | Own children only |
| Submit a leave request | — | — | — | — | Own children only |
Deny-by-default
As of 2026-07-05, a Class Teacher or Subject Teacher with no assignment/mapping configured has no access to any class — there is deliberately no permissive fallback. Assigning a Class Teacher (Ch. 7.1) and creating Teacher-Subject Mappings (Ch. 6.2) are required setup steps, not optional ones, before those roles can use Attendance or view a class Timetable. See Chapter 7.6 for the full access-decision logic.
Known Issues / Release Notes
Building this guide end-to-end through the real CampusOS UI (rather than seeded test data) surfaced four real product gaps, all fixed as part of this exercise:
1. Student creation rejected for any school without multiple branches configured.
The student form sent an empty
branch_id by default, which the backend’s UUID validation
rejected outright — breaking student admission entirely for the ~95% of schools with a single branch.
Fixed by omitting the field when no branch is selected.
2. Timetable dropdowns silently empty for classes/staff with no branch assignment.
Several timetable queries matched
branch_id exactly, excluding every teacher/class with a
NULL branch (the default for a single-branch school created through the UI, as opposed to a seed
script). Fixed to treat NULL as "no branch restriction" alongside an exact match.
3. Take Attendance always defaulted to Daily mode, regardless of the school’s real setting.
The configuration endpoint that supplies the school’s attendance mode was blanket-restricted to School
Admin/Principal, silently failing for teachers. Fixed by opening the read-only configuration endpoints to any
authenticated role (the data they return was already redacted of secrets) while keeping the actual write
endpoints admin-only.
4. Attendance and Timetable access was not scoped to a teacher’s actual assignment.
Before this fix, any Class Teacher or Subject Teacher could take attendance for, or view the timetable of, any
class in the school — not just their own. Fixed with the deny-by-default scoping described in Chapter 7.6 and
the matrix above.
Glossary
Fee Component — a single named charge (e.g. Tuition Fee).
Fee Structure — a class’s set of installments, each grouping components under one due date.
Concession — a discount rule (percentage or fixed) applied to an individual student’s fees, optionally requiring a supporting document.
Challan — the computed, per-student fee bill for an installment, after concessions are applied.
Maker-checker — a workflow where the person who submits a request can never also approve it.
Feature toggle — a per-school on/off switch controlling whether a module or capability is visible/usable for that specific tenant (Ch. 1.3).
Core module — one of the four modules (Student Management, Attendance, Fee Management, Exam Results) that can never be switched off.
Period-wise attendance — one attendance mark per student per timetable period, instead of one per day.
Class Teacher Assignment — the record naming which teacher owns a given class/section for Attendance and Timetable purposes.
Teacher-Subject Mapping — the record naming which teacher teaches which subject in which class/section.
Revision history
| Version | Date | Change |
|---|---|---|
| v1.0 | 2026-07-05 | Initial guide — School Configuration through Attendance, Class Promotion, and the Parent Portal, built end-to-end for Golden Jubilee CBSE. |
| v1.1 | 2026-07-05 | Rebranded to CampusOS by Stavion Technologies; split into a multi-page guide with a landing page, per-chapter navigation, and prev/next; added Key Concepts, process-flow, and access-decision diagrams throughout (most extensively in 1.3 Feature Toggles and 7.6 Attendance RBAC). |