CHAPTER 5BASIC TIER

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

School Registration→
Verification→
Approval→
Subscription Selection→
School Setup→
Campus Setup→
Academic Setup→
Go Live

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).

MethodEndpointDescriptionRoles
GET/api/schools/:schoolIdGet school profileAdmin, Super Admin
PUT/api/schools/:schoolIdUpdate school profile (name, contact, address, board)Admin, Super Admin
GET/api/schools/:id/statsStudent/teacher counts and subscription statusAdmin, Super Admin
GET/api/schools/:schoolId/brandingGet branding (logo, colors, fonts) — returns defaults if unsetAll (authenticated)
PUT/api/schools/:schoolId/brandingUpdate branding colors, display name, fontsAdmin (own school only)
POST/api/schools/:schoolId/branding/logoUpload school logo to CloudinaryAdmin (own school only)
GET/api/campusesList campuses for the schoolAll
POST/api/campusesCreate a campusAdmin
PUT/api/campuses/:idUpdate a campusAdmin
DELETE/api/campuses/:idDelete a campusAdmin
GET/api/academic-yearsList academic years for the schoolAll
GET/api/academic-years/activeGet the currently active academic yearAll
POST/api/academic-yearsCreate a new academic year (with terms)Admin
PUT/api/academic-years/:id/activateMark a year active — deactivates the previous active yearAdmin
PUT/api/academic-years/:idUpdate academic year detailsAdmin
GET/api/academic-calendarList calendar events (holidays, exams, events, PTMs)All
GET/api/academic-calendar/upcomingGet upcoming eventsAll
POST/api/academic-calendarCreate a calendar eventAdmin, Teacher
PUT/api/academic-calendar/:idUpdate a calendar eventAdmin, Teacher
DELETE/api/academic-calendar/:idDelete a calendar eventAdmin, Teacher
GET/api/classesList all grade levelsAll
POST/api/classesCreate a grade levelAdmin, Super Admin
PUT/api/classes/:idUpdate a grade levelAdmin, Super Admin
DELETE/api/classes/:idDeactivate a grade levelAdmin, Super Admin
GET/api/sectionsList sections (filter by ?classId=)All
POST/api/sectionsCreate a section under a classAdmin, Super Admin
PUT/api/sections/:idUpdate a sectionAdmin, Super Admin
DELETE/api/sections/:idDeactivate a sectionAdmin, Super Admin
GET/api/subjectsList all active subjects for the schoolAll
POST/api/subjectsCreate a new subjectAdmin, Super Admin
PUT/api/subjects/:idUpdate subject detailsAdmin, Super Admin
DELETE/api/subjects/:idSoft-deactivate a subjectAdmin, Super Admin
GET/api/housesList all houses with pointsAll
POST/api/housesCreate a houseAdmin, Super Admin
PUT/api/houses/:idUpdate a houseAdmin, Super Admin
DELETE/api/houses/:idDeactivate a houseAdmin, Super Admin
GET/api/clubsList all active clubsAll
POST/api/clubsCreate a clubAdmin, Super Admin
GET/api/clubs/:id/membersList club membersAll
POST/api/clubs/:id/joinJoin a clubStudent
POST/api/clubs/:id/leaveLeave a clubStudent
POST/api/clubs/:id/attendanceMark club meeting attendanceTeacher, Admin
GET/api/departmentsList departmentsAll
POST/api/departmentsCreate a departmentAdmin, Super Admin
GET/api/designationsList designationsAll
POST/api/designationsCreate a designationAdmin, Super Admin
GET/api/buildingsList buildingsAll
POST/api/buildingsCreate a buildingAdmin, Super Admin
GET/api/roomsList rooms (filter by ?buildingId=&type=)All
POST/api/roomsCreate a roomAdmin, Super Admin
GET/api/onboarding-import/templateDownload the multi-sheet .xlsx onboarding import templateAdmin, Super Admin
POST/api/onboarding-import/validateDry-run validate an uploaded workbook — resolves references, writes nothingAdmin, Super Admin
POST/api/onboarding-import/commitCommit an uploaded workbook, creating records in dependency orderAdmin, Super Admin
GET/api/onboarding-import/batchesList past import batches for the schoolAdmin, Super Admin
POST/api/onboarding-import/batches/:batchId/rollbackDelete every record a committed import batch createdAdmin, 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