# 🏫 Uganda Primary School Management System
A complete, production-ready School Management System built for Ugandan government and grant-aided primary schools (P1–P7). Built with **Node.js + Express + MongoDB** backend and **React + Tailwind CSS** frontend.
---
## đź“‹ Table of Contents
- Features
- Tech Stack
- User Roles
- Project Structure
- Installation
- Environment Variables
- Running the App
- Demo Credentials
- Role Flow Diagram
- API Reference
- Deployment
---
## ✨ Features
### Academic Management
- **Classes & Streams** — P1–P7 with up to 5 streams (A, B, C, D, E) per class
- **Academic Year & Terms** — configure school years, 3 terms, activate/deactivate
- **Timetable** — weekly schedule per stream with period, subject, teacher, and room
- **Attendance** — daily attendance per stream with Present/Absent/Late/Excused status
- **Marks & Grading** — BOT, MOT, EOT, CA assessments with auto-grading (A–F), stream ranking
- **PLE Integration** — UNEB PLE registration, bulk registration, result entry and division calculation
- **Homework** — assign with deadlines, submission tracking, grading
### Finance Management (Bursar)
- **Fee Structures** — configurable per class, per term with itemised breakdown
- **Fee Payments** — record, receipt generation (PDF), payment reversal
- **MTN MoMo / Airtel Money** support
- **UPE Capitation Grants** — track government grants, expenditures, balances
- **Financial Reports** — collection summary, defaulters list, method breakdown
- **Fee Defaulters** — auto-detected students with outstanding balances
### Student Management (Secretary)
- **Admissions** — full bio data, photo, guardian info, district, religion
- **Transfers** — transfer in/out with reason tracking
- **Re-streaming** — move students between streams mid-year
- **Promotions** — bulk promote classes at year-end
### Communication
- **In-app messaging** — inbox, sent, read/unread tracking
- **Bulk messaging** — broadcast to all parents, teachers, or by stream
- …