Skip to content

AdaviDigital/EduNova

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EduNova — Enterprise School Management & Educational ERP Platform

Africa's most comprehensive school management platform — built specifically for Nigerian and African schools.

License: Proprietary Node.js NestJS PostgreSQL


📋 Table of Contents

  1. Overview
  2. Features
  3. Tech Stack
  4. Project Structure
  5. Quick Start (Frontend)
  6. Backend Setup
  7. Database Setup
  8. Environment Variables
  9. Deployment — Hostinger
  10. Deployment — Docker
  11. Demo Credentials
  12. Nigerian Integrations
  13. API Documentation

Overview

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.


Features

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

Tech Stack

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)

Project Structure

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

Quick Start (Frontend)

The frontend is pure static files — no build step, no Node.js required.

Option A: Open Locally

# Just open index.html in a browser
open index.html

# Or use a local server
npx serve .
# or
python3 -m http.server 8080

Option B: Deploy to Hostinger (Shared / Business Hosting)

  1. Log into Hostinger hPanel
  2. Go to File Managerpublic_html
  3. Upload all files (maintain folder structure)
  4. Visit yourdomain.com — done!

Demo Login

  • URL: pages/login.html
  • Click "Demo: Admin" quick-access button
  • Or use: Email admin@demo.edunova.ng / Password Admin@EduNova2025

Backend Setup

Prerequisites

  • Node.js 20+
  • PostgreSQL 16+
  • Redis 7+

Install & Run

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/docs

Development Mode (with hot reload)

npm run start:dev

Database Setup

Create Database

-- 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;

Run Schema + Seed

# 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.sql

Environment Variables

Copy 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

Deployment — Hostinger

Business Hosting (Frontend Only)

  1. Upload all files from the root edunova/ folder to public_html/
  2. Point your domain to Hostinger nameservers
  3. Enable free SSL in hPanel → SSL/TLS

Cloud Enterprise (Full Stack)

  1. Create VPS (Ubuntu 22.04, min 4GB RAM)
  2. 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

Deployment — Docker

# 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

Demo Credentials

Role Email 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)


Nigerian Integrations

Paystack

  1. Create account at paystack.com
  2. Get Secret Key from Settings → API Keys
  3. Add to .env as PAYSTACK_SECRET_KEY
  4. Set webhook URL: https://api.yourdomain.com/api/v1/fees/paystack/webhook

Flutterwave

  1. Create account at flutterwave.com
  2. Get Secret Key from Settings → API Keys
  3. Add to .env as FLUTTERWAVE_SECRET_KEY

Termii SMS

  1. Register at termii.com
  2. Get API Key from dashboard
  3. Set TERMII_API_KEY and TERMII_SENDER_ID=EduNova

WhatsApp Business

  1. Create Meta for Developers account
  2. Set up WhatsApp Business API
  3. Configure webhook at https://api.yourdomain.com/api/v1/communication/whatsapp/webhook

WAEC/NECO/JAMB

  • These are managed via the pages/waec.html dashboard
  • Candidate data is stored in the waec_candidates table
  • Actual registration uses each body's official portal

API Documentation

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

Key Endpoints

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

Support


© 2025 EduNova Technologies Ltd. All rights reserved.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors