Changelog

1.0.0 — School management system

The first SkoolyHub release. A complete school management system: admin panel, public website, and REST APIs for parent, teacher and student apps.

Academics

  • Academic years and terms, with one year marked current and used as the scoping key throughout
  • Classes, sections with capacity and class teacher, subjects and subject allocation
  • Bell schedule and a timetable grid that refuses teacher and room clashes with the reason
  • School calendar, syllabus units and dated lesson plans with coverage tracking

Admissions

  • Nine-stage pipeline from enquiry to enrolled, with waiting-list positions
  • Applicant photo, carried onto the student record at conversion
  • Conversion creates the student and links or reuses the family's guardian account; running it twice returns the same student

Students, guardians and staff

  • The roll with photo, placement, medical notes and category
  • Server-side admission-number allocation, so two clerks admitting at once cannot collide
  • Guardians linked many-to-many, with primary and can-collect flags
  • Bulk CSV import, ID-card printing, cohort promotion with per-year enrolment history
  • Staff directory, qualifications, documents, salary structures and payroll

Attendance

  • Day and per-period registers with five statuses
  • A roll-wide default with only the exceptions listed — a class of forty is one small request
  • Day absences notify guardians automatically; period absences do not
  • Staff attendance with check-in/out times, filterable by staff type and department

Fees

  • Heads, per-class structures, concessions, invoice generation and counter collection
  • Online payment driven by whichever gateway add-on the school connects — twenty ship
  • The charge is computed from the invoice, never read from the request
  • The ledger is untouched until the gateway confirms, and confirming twice returns the original receipt

Examinations

  • Exams, per-subject papers, marks clamped to the paper maximum
  • Grade scale, computed report cards with class rank
  • Results gated on both the report card and its exam being published

Communication

  • Circulars targeted at everyone, parents, a class or a section, with read receipts
  • Leave requests from guardians and staff, approved with a note
  • Per-recipient notification feed with per-channel preferences

Parent app

  • A home feed merging eleven sources into one chronological stream, each card naming the screen it opens
  • Cursor pagination, so a card never duplicates while the school keeps publishing
  • Attendance appears only as an exception, never as a daily "present"

Teacher app

  • One call for the day: lessons, outstanding registers, homework to grade, pending leave
  • Self-service password reset by a code to the school email — no admin ever handles a teacher's credential
  • Profile and notification preferences, with employment fields deliberately read-only

Platform

  • Idempotent schema provisioning; no migration files
  • Role-scoped JWTs; cross-role replay rejected
  • Opaque public_id in every URL
  • Money in minor units end to end
  • Storage across R2, S3, Spaces and GCS, with server-side WebP variants
  • Integration credentials encrypted in the database
  • An API reference generated from the route handlers, so it cannot drift