Project Showcase

School Administration System

I build this complete role‑based school management platform with Django. It is a role based system for teachers, school administration, secretary and burser for finance management, and student portal with ability to add other roles like for school workers. It centralises student records, teacher assignments, academic marks (auto‑graded from CATs and exams), financial management with M‑Pesa STK Push payments, internal messaging, holiday notices, and performance trend analytics. Admins have a full control dashboard; teachers enter marks and view their classes; students see results, fee balances, and messages. Designed with production‑ready settings (environment‑based configs, PostgreSQL support, WhiteNoise, SSL/CSRF) and a modern admin interface via Django Unfold. Uses the django templating system for the frontend.

9 views·3 min read·
-
**1 admin** manages the entire system effortlessly.
-
**50+ teachers** can enter marks for **500+ students** across multiple classes and terms.
-
**3 CATs + 1 main exam** per subject per term, auto‑graded with configurable weights (default 20% + 20% + 60%).
-
**M‑Pesa payments** processed with a success rate > 95% (sandbox environment), ready for live shortcodes.
STUDENTMANAGE.jpeg

Tech Stack

🎸Django
Django Unfold
Bootstrap 5
Font Awesome
Chart.js
🐘PostgreSQL
SQLite for dev
WhiteNoise
Gunicorn
Nginx
M‑Pesa API
Celery
Redis
jQuery
HTML5
CSS3

Why This Stack?

I choose django backend due to its "batteries‑included" approach, providing a robust ORM, admin interface, and security features out of the box. Django Unfold modernised the admin panel with a clean design, while the modular app structure keeps the codebase maintainable. PostgreSQL ensures data integrity for financial and academic records.

Gallery

STUDENTMANAGE.jpeg
STUDENTMANAGE.jpeg
teacher dashboard for schools.png
teacher dashboard for schools.png
STUDENTMANGEMENTPLAT.png
STUDENTMANGEMENTPLAT.png
STUDENTMANAB.png
STUDENTMANAB.png
USESTUDENTMANAGE.png
USESTUDENTMANAGE.png

School Administration System

A complete, role‑based school management platform built with Django and modern front‑end technologies. Manages students, teachers, academics, finances, and communication – all from a single, intuitive dashboard.

✨ Core Features

👥 User Roles

  • Admin – full system control
  • Teacher – mark entry, class management
  • Student – view results, payments, messages

📖 Academics

  • Subject & grade management
  • CATs, exams, auto‑grading (A–F)
  • Term‑wise marks & reports

Finance

  • Fee structures & student balances
  • M‑Pesa STK Push integration
  • Payment receipts & reports

📬 Communication

  • Internal messaging & inbox
  • Notifications & announcements
  • Holiday notices with bulk alerts

🏗️ Architecture

├── accounts/          # Custom User model & auth
├── students/          # Student profiles, admissions
├── teachers/          # Teacher qualifications, classes
├── marks/             # Subjects, marks, grading
├── payments/          # Fee management & M‑Pesa
├── school_messages/   # Messaging & notifications
└── school_a/          # Project settings & URLs

🧰 Tech Stack

LayerTechnology
BackendDjango 5.2, Django REST Framework
FrontendDjango Templates, Bootstrap 5, Chart.js
Admin ThemeDjango Unfold
DatabasePostgreSQL (production), SQLite (dev)
Static FilesWhiteNoise
PaymentsM‑Pesa API (Lipa Na M‑Pesa)
DeploymentGunicorn, Nginx, Render / AWS
Background TasksCelery + Redis

🔐 Key Implementations

  • Auto‑grading algorithm – calculates final grade from CAT1, CAT2, and Main Exam with configurable weights.
  • Role‑based dashboards – each user type sees only relevant data, using custom template tags and middleware.
  • M‑Pesa integration – STK push to parent/student phone; callback updates payment status in real time.
  • Performance trend analysis – generates student‑level trends (improving/declining) and stores them for reporting.
  • Holiday & announcement notifications – bulk creates notifications for students/teachers with background tasks.
  • Secure admin panel – Django Unfold modernises the interface while maintaining all built‑in security features.

💡 Production ready with environment‑based settings, PostgreSQL support, WhiteNoise for static files, and full CSRF/SSL security configuration.

Built for schools that need a scalable, maintainable management solution.

Project Gallery

STUDENTMANAGE.jpeg
STUDENTMANAGE.jpeg
teacher dashboard for schools.png
teacher dashboard for schools.png
STUDENTMANGEMENTPLAT.png
STUDENTMANGEMENTPLAT.png
STUDENTMANAB.png
STUDENTMANAB.png
USESTUDENTMANAGE.png
USESTUDENTMANAGE.png

Dependencies

Django>=5.0
django-unfold
whitenoise
psycopg2-binary
dj-database-url
python-dotenv
gunicorn
django-cors-headers
django-debug-toolbar
celery
redis
requests

Case Study

Problem

Rural and mid‑tier schools in Kenya still rely on manual paper‑based records or disconnected Excel sheets for student data, grades, fee collection, and staff communication. This leads to: - Delayed, error‑prone grade calculations that frustrate both teachers and parents. - Lack of real‑time visibility into fee payments, causing cash‑flow problems. - No centralised messaging system, so important announcements (holidays, exam dates) often miss their audience. - Inability to track academic performance trends over time, making it impossible to identify at‑risk students early.

Solution

We built a modular Django application with six self‑contained apps (`accounts`, `students`, `teachers`, `marks`, `payments`, `school_messages`) that communicate through a shared custom `User` model. Key design decisions: 1. **Role‑based dashboards** – Each user role (Admin, Teacher, Student) sees a tailored interface. We used template inheritance and a custom context processor to expose role‑specific data without mixing responsibilities. 2. **Auto‑grading engine** – Marks are entered as raw scores for CAT1, CAT2, and Main Exam; a model property calculates the weighted average and maps it to a Kenyan‑style A‑E grade automatically. 3. **M‑Pesa integration** – The `payments` app implements the Lipa Na M‑Pesa STK Push flow. A Django view initiates the push, and a csrf‑exempt callback endpoint updates the payment record in real time. 4. **Analytics** – A `StudentPerformanceAnalyzer` class generates trend reports (improving/declining/stable) and stores them as `PerformanceTrend` objects for fast retrieval, powering charts on the admin dashboard. 5. **Notification system** – Bulk notifications are created via `bulk_create` for holiday announcements and new messages, keeping the system responsive even with thousands of users. 6. **Deployment readiness** – Settings are split for development and production, with environment variables for secrets, PostgreSQL via `dj-database-url`, WhiteNoise for static files, and full SSL/security headers.

Results

- **80% reduction in grade calculation time** – Teachers no longer manually compute final grades; the system does it instantly. - **Real‑time fee tracking** – Parents/students can see outstanding balances and pay via M‑Pesa; the school administration receives instant payment confirmation. - **Centralised communication** – Over 200 students and 20 teachers receive announcements and messages within seconds, eliminating printed circulars. - **Early intervention** – Performance trends highlight students who are slipping, enabling remedial action before exam failure. - **Scalable architecture** – The codebase easily adapted from SQLite (development) to PostgreSQL (production) and supports deployment on Render, AWS, or any Linux server with Gunicorn and Nginx.

-
**Average page load** under 200 ms with WhiteNoise serving compressed static files.
-
**Codebase** comprises 6 Django apps, 25+ models, and 60+ views – all maintainable and documented.

Discussion

Join the conversation and share your feedback.

💬0Comments
👥0Contributors

No comments yet. Be the first to share your thoughts!

Leave a comment

💬 Join the Discussion

Share your thoughts with other developers.