Africa's most comprehensive school management platform — built specifically for Nigerian and African schools.
- Overview
- Features
- Tech Stack
- Project Structure
- Quick Start (Frontend)
- Backend Setup
- Database Setup
- Environment Variables
- Deployment — Hostinger
- Deployment — Docker
- Demo Credentials
- Nigerian Integrations
- API Documentation
EduNova is a multi-tenant SaaS school management platform covering 32+ dashboard pages and 20+ modules — from student admissions to WAEC/NECO/JAMB management, AI analytics, CBT exams, payroll with Nigerian tax calculations, Paystack/Flutterwave fee collection, and WhatsApp parent notifications.
| Module | Status | Key Capabilities |
|---|---|---|
| 🎓 Admissions | ✅ | Application intake, entrance exams, admission letters |
| 👨🎓 Students | ✅ | Full student profiles, bulk import, ID card generation |
| 📋 Attendance | ✅ | Manual, QR code, RFID, biometric; SMS parent alerts |
| 📅 Timetable | ✅ | Class, teacher & exam timetables |
| 📊 Results | ✅ | WAEC A1–F9 grading, scratch pins, PDF report cards |
| 💻 CBT Exams | ✅ | Question bank, live monitoring, auto-grading |
| 📚 E-Learning | ✅ | LMS, assignments, Zoom/Meet virtual classes |
| 🏫 WAEC/NECO/JAMB | ✅ | Candidate reg, timetables, result analysis |
| 👔 Staff | ✅ | HR records, qualifications, appraisals |
| 💰 Payroll | ✅ | PAYE, 8% pension, 2.5% NHF, payslip PDFs |
| 👨👩👧 Parent Portal | ✅ | App activation, engagement tracking |
| 💳 Fee Management | ✅ | Paystack + Flutterwave + bank transfer |
| 📒 Accounting | ✅ | Double-entry ledger, income statement, bank reconciliation |
| 📈 Budgets | ✅ | Departmental budget allocation and tracking |
| 📖 Library | ✅ | Catalogue, loans, fines, e-library |
| 🏠 Hostel | ✅ | Room allocation, bed management, billing |
| 🚌 Transport | ✅ | Fleet, routes, maintenance alerts |
| 📦 Inventory | ✅ | Asset register, ICT equipment, procurement workflow |
| 📣 Communication | ✅ | SMS (Termii), WhatsApp Business, email |
| 🤖 AI Analytics | ✅ | At-risk detection, fee default prediction, OpenAI comments |
| 📊 Reports & BI | ✅ | Academic, financial, attendance, enrollment reports |
| ⚙️ Settings | ✅ | School profile, integrations, security, billing |
| 👥 Users & Roles | ✅ | 12 roles, RBAC, 2FA, audit logs |
Frontend
- Vanilla HTML5 / CSS3 / JavaScript (ES6+)
- Chart.js 4.4 for dashboards
- Font Awesome 6.5 icons
- Plus Jakarta Sans + Inter fonts
- No build step required — deploy as static files
Backend
- Node.js 20 + NestJS 10
- TypeORM + PostgreSQL 16
- Redis (session caching, rate limiting)
- JWT (7d) + Refresh Tokens (30d) + TOTP 2FA
- Swagger/OpenAPI 3.0 documentation
Nigerian Integrations
- Paystack (primary payment gateway)
- Flutterwave (alternative gateway)
- Termii (SMS)
- WhatsApp Business API
- OpenAI GPT-4o-mini (AI analytics)
edunova/
├── index.html # Landing / marketing page
├── robots.txt
├── sitemap.xml
├── css/
│ └── style.css # Complete design system
├── js/
│ └── script.js # App JS: sidebar, charts, CBT engine, AI module
├── images/
│ ├── favicon.svg
│ ├── logo.svg
│ └── favicon-*.png # 16, 32, 180, 192, 512
├── pages/ # All 32 pages
│ ├── login.html
│ ├── register.html
│ ├── dashboard.html
│ ├── students.html
│ ├── ... (29 more pages)
├── backend/ # NestJS API
│ ├── src/
│ │ ├── main.ts
│ │ ├── app.module.ts
│ │ ├── modules/ # 19 feature modules
│ │ └── common/ # Guards, interceptors, decorators
│ ├── package.json
│ ├── tsconfig.json
│ ├── Dockerfile
│ └── .env.example
├── database/
│ ├── schemas/schema.sql # Full PostgreSQL schema (35+ tables)
│ └── seeds/seed.sql # Demo data
├── api/
│ └── openapi.json # Full REST API documentation
└── deployment/
├── nginx.conf # Production Nginx config
└── docker-compose.yml # Full stack Docker deployment
The frontend is pure static files — no build step, no Node.js required.
# Just open index.html in a browser
open index.html
# Or use a local server
npx serve .
# or
python3 -m http.server 8080- Log into Hostinger hPanel
- Go to File Manager →
public_html - Upload all files (maintain folder structure)
- Visit
yourdomain.com— done!
- URL:
pages/login.html - Click "Demo: Admin" quick-access button
- Or use: Email
admin@demo.edunova.ng/ PasswordAdmin@EduNova2025
- Node.js 20+
- PostgreSQL 16+
- Redis 7+
cd backend
cp .env.example .env # Fill in your values
npm install
npm run build
npm start
# API runs at http://localhost:3000
# Swagger docs at http://localhost:3000/api/docsnpm run start:dev-- Connect as postgres superuser
CREATE USER edunova WITH PASSWORD 'your_strong_password';
CREATE DATABASE edunova_db OWNER edunova;
GRANT ALL PRIVILEGES ON DATABASE edunova_db TO edunova;# Schema (creates all 35+ tables, views, functions, triggers)
psql -U edunova -d edunova_db -f database/schemas/schema.sql
# Seed (demo school + data for Chukwuemeka Memorial College)
psql -U edunova -d edunova_db -f database/seeds/seed.sqlCopy backend/.env.example to backend/.env and fill in all values.
Required for core functionality:
| Variable | Description |
|---|---|
DB_HOST/PORT/USER/PASS/NAME |
PostgreSQL connection |
JWT_SECRET |
64-char random string |
JWT_REFRESH_SECRET |
Another 64-char random string |
Required for payments:
| Variable | Description |
|---|---|
PAYSTACK_SECRET_KEY |
From Paystack dashboard |
FLUTTERWAVE_SECRET_KEY |
From Flutterwave dashboard |
Required for messaging:
| Variable | Description |
|---|---|
TERMII_API_KEY |
From Termii dashboard |
WHATSAPP_ACCESS_TOKEN |
From Meta for Developers |
SMTP_HOST/USER/PASS |
Email server credentials |
Required for AI features:
| Variable | Description |
|---|---|
OPENAI_API_KEY |
From OpenAI platform |
- Upload all files from the root
edunova/folder topublic_html/ - Point your domain to Hostinger nameservers
- Enable free SSL in hPanel → SSL/TLS
- Create VPS (Ubuntu 22.04, min 4GB RAM)
- SSH into server:
# Install Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Install PostgreSQL 16
sudo apt-get install -y postgresql-16
# Install Redis
sudo apt-get install -y redis-server
# Install Nginx
sudo apt-get install -y nginx certbot python3-certbot-nginx
# Clone / upload project
cd /var/www && git clone your-repo edunova
# SSL
sudo certbot --nginx -d yourdomain.com -d api.yourdomain.com
# Nginx
sudo cp edunova/deployment/nginx.conf /etc/nginx/sites-available/edunova
sudo ln -s /etc/nginx/sites-available/edunova /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
# Backend
cd /var/www/edunova/backend
cp .env.example .env # edit with real values
npm install && npm run build
# Run with PM2
npm install -g pm2
pm2 start dist/main.js --name edunova-api
pm2 startup && pm2 save# 1. Copy and configure environment
cp backend/.env.example backend/.env
# Edit backend/.env with real secrets
# 2. Start all services
cd deployment
docker compose up -d
# 3. Check status
docker compose ps
docker compose logs api --tail=50
# Services running:
# - PostgreSQL on 127.0.0.1:5432
# - Redis on 127.0.0.1:6379
# - NestJS API on 127.0.0.1:3000
# - Nginx on 0.0.0.0:80 and :443
# - Automated daily backups| Role | Password | |
|---|---|---|
| Super Admin | admin@demo.edunova.ng |
Admin@EduNova2025 |
| Principal | principal@cmc.edu.ng |
Admin@EduNova2025 |
| Teacher | math@cmc.edu.ng |
Admin@EduNova2025 |
| Accountant | accountant@cmc.edu.ng |
Admin@EduNova2025 |
Demo School: Chukwuemeka Memorial College, Enugu (2024/2025, 2nd Term)
- Create account at paystack.com
- Get Secret Key from Settings → API Keys
- Add to
.envasPAYSTACK_SECRET_KEY - Set webhook URL:
https://api.yourdomain.com/api/v1/fees/paystack/webhook
- Create account at flutterwave.com
- Get Secret Key from Settings → API Keys
- Add to
.envasFLUTTERWAVE_SECRET_KEY
- Register at termii.com
- Get API Key from dashboard
- Set
TERMII_API_KEYandTERMII_SENDER_ID=EduNova
- Create Meta for Developers account
- Set up WhatsApp Business API
- Configure webhook at
https://api.yourdomain.com/api/v1/communication/whatsapp/webhook
- These are managed via the
pages/waec.htmldashboard - Candidate data is stored in the
waec_candidatestable - Actual registration uses each body's official portal
Interactive Swagger docs available at:
- Development:
http://localhost:3000/api/docs - Staging:
https://api-staging.yourdomain.com/api/docs
Static OpenAPI spec: api/openapi.json
POST /api/v1/auth/login — Login
POST /api/v1/auth/register — Register new school
GET /api/v1/students — List students
POST /api/v1/fees/paystack/initiate — Start Paystack payment
POST /api/v1/results — Enter student results
POST /api/v1/attendance — Mark attendance
POST /api/v1/analytics/generate-comment — AI report comment
GET /api/v1/health — Health check
- 📧 Email: support@edunova.ng
- 📞 Phone: +234 803 123 4567
- 💬 WhatsApp: +234 901 234 5678
- 🌐 Website: https://edunova.ng
© 2025 EduNova Technologies Ltd. All rights reserved.