School Management & Organization Setup
The foundational configuration layer for NexusOne. Every other module — students, teachers, attendance, timetables, LMS, examinations, and finance — depends on this setup being complete. Must be configured before going live.
School Onboarding Workflow
Feature Modules
School Profile & Settings
Basic- School name, code, logo, email, phone, website
- Board affiliation (CBSE, ICSE, IB, IGCSE, State Board, Custom)
- Address (city, state, country, PIN)
- Language, timezone, date format, currency settings
- Attendance rules, promotion rules, grading rules
- School lifecycle: Draft → Pending → Active → Suspended
Campus Management
Basic- Multi-campus support for school groups
- Campus name, code, address, contact, capacity
- Designate main campus vs satellite campuses
- Campus-level hierarchy: School → Campus → Building → Floor → Room
Academic Year & Terms
Basic- Define academic years (e.g. 2026-2027)
- Only one active year per school — enforced at API level
- Terms within a year (Term 1, Term 2, Term 3) with dates & weightage
- Year status: Planning → Active → Closed → Archived
Academic Calendar & Holidays
Basic- School days, examination schedules, events, activities
- Holiday types: National, State, School, Emergency Closure
- Week structure: Mon–Fri, Mon–Sat, or custom
- Working hours: start time, end time, breaks, lunch, assembly
Classes (Grades)
Basic- Create grade levels: Nursery, LKG, UKG, Grade 1–12
- Display order for sorted rendering across all modules
- Capacity per class
- Link classes to academic year and campus
Sections
Basic- Divide each class into sections (e.g. Grade 5-A, 5-B, 5-C)
- Assign room to each section
- Set section capacity
- Filter sections by class in all downstream modules
Subjects
Basic- Subject code, name, type, category, credits
- Types: Core, Elective, Practical, Language, Activity, Skill-Based
- Categories: Mandatory / Optional
- Subject assignment flow: Subject → Class → Section → Teacher
Houses
Basic- Inter-house competition management
- House name, code, color, captain, vice captain
- Point tracking per house
- Examples: Red House, Blue House, Green House, Yellow House
Clubs
Basic- Extracurricular club management
- Categories: Academic, Sports, Cultural, Technology, Leadership, Community
- Coordinator assignment, meeting schedule, max capacity
- Examples: Science Club, Coding Club, Debate Club, Art Club
Departments
Basic- Functional department management
- Types: Academics, Administration, Finance, Transport, Library, Facilities, HR
- Department code, head, description
- Staff belong to primary (and optional secondary) department
Designations
Basic- Job title management linked to departments
- Level hierarchy (0 = highest authority)
- Examples: Vice Teacher, Coordinator, Accountant
Buildings & Rooms
Basic- Building inventory: name, code, floors, campus
- Room types: Classroom, Laboratory, Library, Computer Lab, Auditorium, Sports Room, Conference Room, Staff Room
- Room facilities: Projector, Smart Board, AC, Computers (count)
- Floor and capacity tracking per room
Bulk School Onboarding Import
Basic- One .xlsx workbook, one sheet per entity: AcademicYears, Campuses, Classes, Sections, Subjects, Staff, Students, Parents, FeeStructures
- Downloadable template with headers, sample rows, and an Instructions sheet
- Dry-run /validate resolves every cross-sheet reference and reports row-level errors without writing anything
- /commit writes rows in dependency order and tags every created document to an import batch
- One-call rollback deletes everything a batch created if the import needs to be undone
Configuration Locking
Certain settings cannot be modified after the academic year starts: Attendance Rules, Promotion Rules, Grade Structure. Plan your setup carefully before activating the academic year.
API Endpoints
All endpoints require JWT authentication and active subscription. Tenant isolation enforced on every query. Note: Campus and AcademicYear writes are restricted to the admin role only — every other org-setup entity (classes, sections, subjects, houses, clubs, departments, designations, buildings, rooms) additionally allows super_admin. Org-setup entities plus Staff/Students/Parents/FeeStructures can also be bulk-imported from a single multi-sheet .xlsx workbook via /api/onboarding-import — see the Bulk School Onboarding Import module above. Separate JSON-payload bulk student enrollment also exists (Chapter 6).
| Method | Endpoint | Description | Roles |
|---|---|---|---|
| GET | /api/schools/:schoolId | Get school profile | Admin, Super Admin |
| PUT | /api/schools/:schoolId | Update school profile (name, contact, address, board) | Admin, Super Admin |
| GET | /api/schools/:id/stats | Student/teacher counts and subscription status | Admin, Super Admin |
| GET | /api/schools/:schoolId/branding | Get branding (logo, colors, fonts) — returns defaults if unset | All (authenticated) |
| PUT | /api/schools/:schoolId/branding | Update branding colors, display name, fonts | Admin (own school only) |
| POST | /api/schools/:schoolId/branding/logo | Upload school logo to Cloudinary | Admin (own school only) |
| GET | /api/campuses | List campuses for the school | All |
| POST | /api/campuses | Create a campus | Admin |
| PUT | /api/campuses/:id | Update a campus | Admin |
| DELETE | /api/campuses/:id | Delete a campus | Admin |
| GET | /api/academic-years | List academic years for the school | All |
| GET | /api/academic-years/active | Get the currently active academic year | All |
| POST | /api/academic-years | Create a new academic year (with terms) | Admin |
| PUT | /api/academic-years/:id/activate | Mark a year active — deactivates the previous active year | Admin |
| PUT | /api/academic-years/:id | Update academic year details | Admin |
| GET | /api/academic-calendar | List calendar events (holidays, exams, events, PTMs) | All |
| GET | /api/academic-calendar/upcoming | Get upcoming events | All |
| POST | /api/academic-calendar | Create a calendar event | Admin, Teacher |
| PUT | /api/academic-calendar/:id | Update a calendar event | Admin, Teacher |
| DELETE | /api/academic-calendar/:id | Delete a calendar event | Admin, Teacher |
| GET | /api/classes | List all grade levels | All |
| POST | /api/classes | Create a grade level | Admin, Super Admin |
| PUT | /api/classes/:id | Update a grade level | Admin, Super Admin |
| DELETE | /api/classes/:id | Deactivate a grade level | Admin, Super Admin |
| GET | /api/sections | List sections (filter by ?classId=) | All |
| POST | /api/sections | Create a section under a class | Admin, Super Admin |
| PUT | /api/sections/:id | Update a section | Admin, Super Admin |
| DELETE | /api/sections/:id | Deactivate a section | Admin, Super Admin |
| GET | /api/subjects | List all active subjects for the school | All |
| POST | /api/subjects | Create a new subject | Admin, Super Admin |
| PUT | /api/subjects/:id | Update subject details | Admin, Super Admin |
| DELETE | /api/subjects/:id | Soft-deactivate a subject | Admin, Super Admin |
| GET | /api/houses | List all houses with points | All |
| POST | /api/houses | Create a house | Admin, Super Admin |
| PUT | /api/houses/:id | Update a house | Admin, Super Admin |
| DELETE | /api/houses/:id | Deactivate a house | Admin, Super Admin |
| GET | /api/clubs | List all active clubs | All |
| POST | /api/clubs | Create a club | Admin, Super Admin |
| GET | /api/clubs/:id/members | List club members | All |
| POST | /api/clubs/:id/join | Join a club | Student |
| POST | /api/clubs/:id/leave | Leave a club | Student |
| POST | /api/clubs/:id/attendance | Mark club meeting attendance | Teacher, Admin |
| GET | /api/departments | List departments | All |
| POST | /api/departments | Create a department | Admin, Super Admin |
| GET | /api/designations | List designations | All |
| POST | /api/designations | Create a designation | Admin, Super Admin |
| GET | /api/buildings | List buildings | All |
| POST | /api/buildings | Create a building | Admin, Super Admin |
| GET | /api/rooms | List rooms (filter by ?buildingId=&type=) | All |
| POST | /api/rooms | Create a room | Admin, Super Admin |
| GET | /api/onboarding-import/template | Download the multi-sheet .xlsx onboarding import template | Admin, Super Admin |
| POST | /api/onboarding-import/validate | Dry-run validate an uploaded workbook — resolves references, writes nothing | Admin, Super Admin |
| POST | /api/onboarding-import/commit | Commit an uploaded workbook, creating records in dependency order | Admin, Super Admin |
| GET | /api/onboarding-import/batches | List past import batches for the school | Admin, Super Admin |
| POST | /api/onboarding-import/batches/:batchId/rollback | Delete every record a committed import batch created | Admin, Super Admin |
Frontend Pages
Bulk School Onboarding Import
/dashboard/admin/organization/onboarding-import
Campus Management
/dashboard/admin/campus
Academic Years & Terms
/dashboard/admin/academic-year
Academic Calendar & Holidays
/dashboard/admin/academic-calendar
Classes / Grades
/dashboard/admin/organization/classes
Sections
/dashboard/admin/organization/sections
Subjects
/dashboard/admin/organization/subjects
Houses
/dashboard/admin/organization/houses
Clubs
/dashboard/admin/organization/clubs
Departments
/dashboard/admin/organization/departments
Designations
/dashboard/admin/organization/designations
Buildings & Rooms
/dashboard/admin/organization/buildings-rooms
School Branding
/dashboard/admin/branding
Mobile Screens
(admin)/campus — Campus list & CRUD
(admin)/school-setup — Hub linking to all setup modules
(admin)/classes — Grade level management
(admin)/subjects — Subject CRUD with type/category selectors
(admin)/sections — Section management with class filter
(admin)/houses — House management with color picker + point tracking
(admin)/clubs — Club management with category chips
(admin)/departments — Department management
(admin)/designations — Designation management linked to departments
(admin)/buildings-rooms — Building and room inventory with facility flags
Data Models
Subject
SchoolClass
Section
House
Club
Department
Designation
Building
Room
Campus
AcademicYear
AcademicCalendar
SchoolImportBatch