A comprehensive School Management System for Excellence Academy
Manage academics, finance, attendance, and more with ease
- β¨ Features
- ποΈ Architecture
- π₯ User Roles
- π οΈ Technology Stack
- π¦ Module Overview
- π Getting Started
- βοΈ Configuration
- π± API Documentation
- π³ Payment Integration
- π± SMS Integration
- πΈ Screenshots
- π€ Contributing
- π License
- Excellence Academy Focus: Dedicated system for Excellence Academy
- Data Security: Secure data storage and user authentication
- Scalable Design: Built to handle growing student and staff base
- Simplified Administration: No multi-institution complexity
- System-wide configuration management
- Dashboard and analytics
- User role hierarchy management
- Global audit logging and compliance
- Staff and student management
- Staff Management: Complete recruitment workflow from application to employee ID
- Student Enrollment: Online applications, approval workflow, student profiles
- Financial Management: Fee structures, invoicing, payment tracking
- Academic Setup: Classes, subjects, sections, academic sessions
- Reporting: Comprehensive analytics and reporting dashboards
- Class and section management
- Subject and teacher assignment
- Timetable generation and management
- Academic session and term configuration
- Department management
- Customizable grading systems
- Assignment and exam management
- Mark entry with validation
- Automated grade calculation
- Report Card Generation with PDF export
- Student performance analytics
- Daily attendance tracking
- Period-wise attendance
- Automated attendance summaries
- Late arrival tracking
- Attendance reports and analytics
- Fee Structure Management: Create flexible fee structures per class/level
- Invoice Generation: Automatic and manual invoice creation
- Payment Processing: Online payments via Paystack
- Payment Tracking: Payment history, receipts generation
- Fee Waivers and Discounts: Flexible discount management
- Financial Reports: Revenue, outstanding payments, collections
- Book catalog management
- ISBN-based book entries
- Book copy tracking
- Circulation management (borrow/return)
- Member management
- Overdue tracking and fines
- Reservation system
- Fleet management (vehicles, drivers)
- Route planning with multiple stops
- Student transport allocation
- Vehicle maintenance tracking
- Transport fee integration
- Hostel and room management
- Bed allocation system
- Student hostel assignments
- Maintenance request tracking
- Room inventory management
- SMS Notifications via Termii (Nigerian provider)
- Email notifications
- In-app notifications
- Bulk messaging capabilities
- Parent-student communication
- Announcement system
- Academic performance dashboards
- Attendance analytics
- Financial reports
- Student enrollment trends
- RESTful API for data export
- Activity creation and scheduling
- Student enrollment management
- Coach assignment
- Activity capacity management
- Performance tracking
- Student health records
- Medical history tracking
- Vaccination records
- Health alerts and notifications
- Help desk ticketing system
- Knowledge base articles
- FAQ management
- User support workflows
- Comprehensive audit logging
- User activity tracking
- Login history
- Permission-based access control
- Session management
Excellence Academy SMS/
βββ apps/ # Django applications
β βββ academics/ # Academic management
β βββ activities/ # Extracurricular activities
β βββ analytics/ # Reporting & analytics
β βββ assessment/ # Exams, grades, report cards
β βββ attendance/ # Attendance tracking
β βββ audit/ # Audit logging
β βββ communication/ # SMS, email, notifications
β βββ core/ # Core models, system configuration
β βββ finance/ # Fees, payments, invoicing
β βββ health/ # Health records
β βββ hostels/ # Hostel management
β βββ library/ # Library management
β βββ support/ # Help desk
β βββ transport/ # Transport management
β βββ users/ # Authentication, roles
βββ config/ # Django project settings
βββ templates/ # HTML templates
βββ static/ # CSS, JS, images
βββ setup/ # Project setup scripts
- Single Tenant: All data belongs to Excellence Academy
- UUID Primary Keys: All models use UUID for global uniqueness
- Soft Deletes: All core models support soft delete functionality
- Timestamp Tracking: Created/updated/status change timestamps
- Audit Trail: Comprehensive logging of all data changes
| Role | Description | Access Level |
|---|---|---|
| π¦Έ Super Administrator | System-wide admin | Full system access |
| π¨βπΌ Administrator | School admin | Full school management |
| π Principal | School head | Academic oversight, reporting |
| π¨βπ« Teacher | Teaching staff | Classes, attendance, grades |
| π Student | Student users | Own records, grades, schedule |
| π¨βπ©βπ§ Parent | Guardian | Child monitoring, payments |
| πΌ Accountant | Finance staff | Financial management |
| π Librarian | Library staff | Library operations |
| π Transport Manager | Transport admin | Fleet and routes |
| π Hostel Warden | Hostel admin | Hostel management |
| π Support Staff | Help desk | Support tickets |
| π Driver | Transport driver | Vehicle operations |
- Framework: Django 5.2+
- Python: 3.10+
- Database: SQLite (dev) / PostgreSQL (prod)
- ORM: Django ORM with multi-tenancy support
- Template Engine: Django Templates
- CSS Framework: Bootstrap 5 with crispy-forms
- JavaScript: Vanilla JS + Django Channels
- WebSockets: Django Channels
- Message Broker: Redis (production)
- Payments: Paystack (Nigeria)
- SMS: Termii (Nigeria)
- Email: SMTP (Gmail, SendGrid, etc.)
- PDF Generation: WeasyPrint
- Excel Export: openpyxl
| Module | Purpose | Key Models |
|---|---|---|
core |
Single-institution configuration and system settings | Institution, SystemConfig, SequenceGenerator |
users |
Authentication, roles | User, Role, UserProfile, UserRole |
academics |
Academic structure | Class, Section, Subject, Timetable |
attendance |
Attendance tracking | DailyAttendance, PeriodAttendance |
assessment |
Grades & assessments | Exam, Assignment, Result, ReportCard |
| Module | Purpose | Key Models |
|---|---|---|
finance |
Fees & payments | FeeStructure, Invoice, Payment |
library |
Library operations | Book, BookCopy, BorrowRecord |
transport |
Transport management | Vehicle, Route, TransportAllocation |
hostels |
Hostel management | Hostel, Room, HostelAllocation |
health |
Health records | HealthRecord, Vaccination |
activities |
Extracurricular | Activity, ActivityEnrollment |
communication |
Notifications | Notification, SMSLog, EmailTemplate |
analytics |
Reporting | (Aggregated data views) |
audit |
Audit logging | AuditLog |
support |
Help desk | SupportTicket, HelpArticle |
Python 3.10+
PostgreSQL (production)
Redis (production)
- Clone the repository
git clone https://github.com/ShedrackAmodu/NexusSMS.git
cd NexusSMS- Create virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# OR
venv\Scripts\activate # Windows- Install dependencies
pip install -r requirements.txt- Environment Setup
Create a .env file in the setup/ directory:
# Create setup directory if not exists
mkdir -p setup
# Create .env file
touch setup/.envEdit setup/.env with your configuration (see Configuration section below)
- Run migrations
python manage.py migrate- Create superuser
python manage.py createsuperuser- Run development server
python manage.py runserver- Access the application
http://127.0.0.1:8000/
# Load sample data (optional)
python manage.py loaddata sample_data.json
# Generate report cards
python manage.py generate_report_cards
# Create initial data
python manage.py setup_initial_dataCreate setup/.env with the following variables:
# ============================================
# DJANGO SETTINGS
# ============================================
SECRET_KEY=your-secret-key-here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
# ============================================
# DATABASE (PostgreSQL - Production)
# ============================================
DATABASE_ENGINE=django.db.backends.postgresql
DATABASE_NAME=nexussms
DATABASE_USER=postgres
DATABASE_PASSWORD=your-password
DATABASE_HOST=localhost
DATABASE_PORT=5432
# ============================================
# EMAIL SETTINGS
# ============================================
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password
DEFAULT_FROM_EMAIL=NexusSMS <noreply@nexussms.com>
# ============================================
# PAYSTACK PAYMENT GATEWAY
# ============================================
PAYSTACK_PUBLIC_KEY=pk_test_xxxxxxxxxxxxxx
PAYSTACK_SECRET_KEY=sk_test_xxxxxxxxxxxxxx
PAYSTACK_PAYMENT_URL=https://api.paystack.co
PAYSTACK_TEST_MODE=True
PAYSTACK_CALLBACK_URL=/finance/payment/callback/
PAYSTACK_CANCEL_URL=/finance/payment/cancel/
# ============================================
# SMS SETTINGS (Termii)
# ============================================
TERMII_API_KEY=your-termii-api-key
TERMII_SENDER_ID=NEXUS
TERMII_BASE_URL=https://api.ng.termii.com
SMS_NOTIFY_PARENTS_ON_PAYMENT=True
SMS_NOTIFY_STUDENT_ON_REPORT=True
# ============================================
# REDIS (Production for Channels)
# ============================================
REDIS_URL=redis://localhost:6379/0For production deployment, update config/production.py:
DEBUG = False
ALLOWED_HOSTS = ['your-domain.com']
# Use PostgreSQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'nexussms',
'USER': 'postgres',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
# Use Redis for channels
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [("127.0.0.1", 6379)],
},
},
}The system includes RESTful APIs for integration:
| Endpoint | Method | Description |
|---|---|---|
/api/analytics/students/ |
GET | Student analytics data |
/api/library/books/ |
GET/POST | Book catalog |
/api/library/borrow/ |
POST | Borrow book |
/api/attendance/records/ |
GET | Attendance records |
/api/assessment/results/ |
GET | Student results |
API endpoints use token-based authentication:
# Get token
curl -X POST /api/auth/token/ -d "username=user&password=pass"
# Use token
curl -H "Authorization: Token YOUR_TOKEN" /api/endpoint/- Create a Paystack account at https://paystack.com
- Get your API keys from the dashboard
- Add keys to environment variables
- Configure webhook URL in Paystack dashboard:
https://yourdomain.com/finance/payment/webhook/
Student/Parent β View Invoice β Initiate Payment
β Paystack Checkout β Payment Verification
β Invoice Update β Confirmation Notification
- Register at https://termii.com
- Get your API key from the dashboard
- Configure sender ID (max 11 characters)
- Add to environment variables
- Payment confirmation notifications
- Report card availability alerts
- Attendance alerts
- Announcements
- Bulk messaging
Screenshots coming soon! This section will include:
- Dashboard views for each role
- Student enrollment flow
- Fee payment process
- Report card generation
- Library management interface
- Transport tracking
- Analytics dashboards
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow PEP 8 style guide
- Use Django best practices
- Write tests for new features
- Update documentation
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2024 NexusSMS
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- Django Community
- Bootstrap Team
- Paystack for payment integration
- Termii for SMS services
- All contributors and testers
π Built with β€οΈ using Django
GitHub Repository β’
Documentation β’
Support