# π« 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
- β¦