Skip to content

anitha112005/IQAC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI-Powered IQAC Academic Intelligence & Accreditation Monitoring System

Full MERN project inside one workspace with:

  • frontend (React + Tailwind + Chart.js)
  • backend (Node + Express + MongoDB + JWT+LLM)

Features Implemented

Core Roles and Login

  • Admin (IQAC), HOD, Faculty, Student roles
  • JWT authentication
  • Role-based route protection

Academic Monitoring

  • Student profile and semester-wise metrics
  • CGPA trend, attendance pattern, backlog count
  • Risk prediction engine (LOW, MEDIUM, HIGH)

Department Monitoring

  • Department creation and listing
  • Department analytics (pass%, avg CGPA, backlog rate, placement rate)
  • Placement and achievement data entry

Faculty Inputs

  • Upload marks
  • Upload attendance
  • Add research/publication records

Accreditation Intelligence

  • Store accreditation evidence for NAAC/NBA/AUDIT
  • Filter by criterion/department/year/status
  • Readiness score with missing items

Automated Reports

  • Report generation endpoint with PDF/Excel export
  • Supported types:
    • Student Progress
    • Department Performance
    • CGPA Distribution
    • Backlog Analysis
    • Placement
    • Faculty Contribution
  • Report history log

Dashboard and Demo Flow

  • Faculty Panel for marks and attendance upload
  • Admin Dashboard with:
    • institutional analytics
    • department comparison chart
    • risk distribution chart
    • report download buttons
  • Student dashboard with CGPA trend and risk badge

Project Structure

IQAC/
  backend/
    src/
      config/
      controllers/
      middleware/
      models/
      routes/
      services/
      utils/
  frontend/
    src/
      api/
      components/
      context/
      layouts/
      pages/
      styles/

Setup

1) Backend

cd backend
npm install

Create .env using .env.example as template.

Update .env:

PORT=5000
MONGO_URI=mongodb://127.0.0.1:27017/iqac_monitoring
JWT_SECRET=replace_with_strong_secret
JWT_EXPIRES_IN=1d

Run backend:

npm run dev

Seed demo data:

npm run seed

2) Frontend

cd frontend
npm install
npm run dev

Create .env using .env.example as template.

Frontend runs on http://localhost:5173.

Demo Credentials (after seed)

Password for all:

Admin@123

Users:

  • Admin: admin@iqac.edu
  • HOD: hod.cse@iqac.edu
  • Faculty: faculty.cse@iqac.edu
  • Student: ravi@student.iqac.edu

Key API Endpoints

  • POST /api/auth/login
  • POST /api/auth/register (admin only)
  • GET /api/analytics/overview
  • GET /api/analytics/department-comparison
  • GET /api/analytics/risk-students?risk=HIGH
  • POST /api/faculty/students/:studentId/marks
  • POST /api/faculty/students/:studentId/attendance
  • POST /api/reports/generate
  • GET /api/accreditation/readiness?type=NAAC

Notes

  • Frontend build is validated.
  • Backend requires MongoDB connection configured in .env.
  • This is a hackathon-ready foundation and can be extended with advanced ML models, notifications, and full audit trails.

IQAC System — Complete Project Analysis

AI-Powered Internal Quality Assurance Cell Academic Intelligence & Accreditation Monitoring System


1. High-Level Architecture

graph TB
    subgraph Frontend["Frontend (Vite + React 18)"]
        LP[Landing Page]
        Login[Login Page]
        Admin[Admin Dashboard]
        HOD[HOD Dashboard]
        Faculty[Faculty Dashboard]
        Student[Student Dashboard]
    end
    subgraph Backend["Backend (Express 4 + Node.js)"]
        API[REST API :5000]
        Auth[JWT Auth Middleware]
        Controllers[9 Controllers]
        Services[LLM + Report Services]
    end
    subgraph Data["Data Layer"]
        MongoDB[(MongoDB Atlas<br/>iqac_monitoring)]
        AttDB[(MongoDB Atlas<br/>attendance_patterns)]
        Ollama[Ollama Mistral LLM<br/>localhost:11434]
    end
    Frontend -->|axios + fetch SSE| API
    API --> Auth --> Controllers --> Services
    Controllers --> MongoDB
    Controllers --> AttDB
    Services --> Ollama
Loading

2. Technology Stack

Layer Technology Version
Runtime Node.js 22.x
Backend Express.js 4.19
Frontend React 18.3
Bundler Vite 5.3
Styling TailwindCSS 3.4
Database MongoDB Atlas (Mongoose 8.5)
LLM Mistral via Ollama local
Auth JWT (jsonwebtoken) 9.0
Charts Chart.js 4 + Recharts 3
PDF PDFKit 0.15
Excel ExcelJS 4.4
Security Helmet, bcryptjs, CORS

3. Backend Architecture

3.1 Database Connections

Two separate MongoDB Atlas clusters managed via mongoose.createConnection():

Connection Database Purpose
mainDB iqac_monitoring All core data (students, marks, departments, etc.)
attendanceDB attendance_patterns Secondary attendance pattern analysis

3.2 Models (18 Mongoose Schemas)

Model Key Fields Relationships
Student rollNo, name, email, currentSemester, batch, riskLevel, metrics[] (semester SGPA/CGPA/backlogs/attendance), feeDetails → Department
Department name, code, vision, mission → User (HOD)
User name, email, password, role (admin/hod/faculty/student), facultyProfile, registrationNumber → Department, → Student
Mark subjectCode, subjectName, semester, internal, external, total, passed → Student, → User (faculty), → Section
Attendance semester, academicYear, totalClasses, attendedClasses, percentage, subjects[] → Student, → User
Placement academicYear, totalEligible, totalPlaced, highestPackageLPA, medianPackageLPA, majorRecruiters[] → Department
Research title, publicationType (Journal/Conference/Patent/Book Chapter), journalOrConference, publishedOn → Department, → User (faculty)
AccreditationItem title, body, type (NAAC/NBA/AUDIT), criterion, completed, evidenceUrl → Department, → User
Achievement title, category (Faculty/Student/Department), level (Institute/State/National/International) → Department
ReportLog reportType, format (PDF/EXCEL), filters → User
Section Section management → Department
DepartmentStat Department statistics → Department
Faculty Faculty-specific data
FacultyAchievement Faculty achievement records
StudentAchievement Student achievement records
StudentActivity Student event participation
TeachingAssignment Teaching load tracking
Announcement System announcements

3.3 API Routes (9 Route Files, ~50+ Endpoints)

Route File Base Path Auth Key Endpoints
authRoutes /api/auth Public + Protected POST /login, POST /public-signup, GET /me
studentRoutes /api/students admin, hod CRUD, filters, dashboard, metrics
departmentRoutes /api/departments admin, hod CRUD, analytics, placements, achievements
facultyRoutes /api/faculty faculty, hod Marks upload, attendance, research
analyticsRoutes /api/analytics admin, hod, faculty Overview, department comparison, risk students
reportRoutes /api/reports admin, hod Generate PDF/Excel, history
accreditationRoutes /api/accreditation admin, hod Items CRUD, readiness score
aiRoutes /api/ai admin, hod, faculty 8 AI jobs + streaming search
adminRoutes /api/admin admin User management

3.4 Controllers (9 Files)

Controller Purpose
authController Login, signup, JWT token generation, GET /me
studentController Student CRUD, dashboard data, semester metrics, filtering
departmentController Department CRUD, analytics, placement data, achievements
facultyController Marks entry, attendance tracking, research publication management
analyticsController KPI overview, department ranking, risk distribution
reportController PDF/Excel report generation, report history logging
accreditationController NBA/NAAC accreditation item management, readiness calculation
aiController All 8 AI report controllers + streaming SSE search
adminController User management (admin-only)

3.5 Services (2 Files)

Service Purpose Key Features
llmService All Mistral LLM interactions 8 specialized prompt functions + NL query, in-memory cache (5 min TTL), num_predict:80-200, temperature:0.3
reportService PDF and Excel file generation PDFKit for PDF, ExcelJS for Excel spreadsheets

3.6 Security & Middleware

Component Implementation
Authentication JWT Bearer tokens via protect() middleware
Authorization Role-based via authorize("admin","hod",...) — 4 roles: admin, hod, faculty, student
Password Hashing bcryptjs with salt round 10
Security Headers Helmet.js
CORS Open CORS for dev
Request Logging Morgan (dev format)
Error Handling express-async-errors + global error handler
Body Limit 5 MB JSON limit

4. LLM Integration (Mistral via Ollama)

4.1 Architecture

sequenceDiagram
    participant U as User (Browser)
    participant API as Express API
    participant DB as MongoDB
    participant LLM as Ollama Mistral

    U->>API: POST /api/ai/search-stream
    API->>DB: Promise.all([Students, Departments, ...])
    DB-->>API: Raw data
    API->>API: Aggregate & summarize data
    API->>LLM: POST /api/generate (stream: true)
    loop Token by token
        LLM-->>API: { response: "word" }
        API-->>U: SSE: data: {"token": "word"}
    end
Loading

4.2 The 8 AI Jobs

Job Function Input Data Output
1 Student Progress Analysis Risk levels, CGPA, attendance, backlogs 4-sentence formal analysis
2 Department Performance Dept scores, CGPA, pass%, placement% NBA compliance assessment
3 CGPA Distribution Distribution bands, NBA threshold 3-sentence pattern analysis (cached)
4 Backlog Analysis Clean pass rate, worst dept/semester Severity + intervention plan
5 Placement Forecast Placement rates, packages, recruiters Trend forecast + recommendations
6 Faculty Contribution Publications, types, per-faculty ratio NBA Criterion 4 compliance
7 Accreditation Readiness NBA/NAAC scores, missing items Audit readiness verdict (cached)
8 Natural Language Search Full DB summary as context 2-sentence factual answer

4.3 Performance Optimizations Applied

Optimization Impact
num_predict: 80-200 tokens Forces short, fast responses
temperature: 0.3 Consistent, focused output
Promise.all() for DB queries 3-5x faster data loading
.lean() on all Mongoose queries Plain JS objects — no Mongoose overhead
In-memory cache (5 min TTL) Instant repeat queries for Jobs 3 & 7
SSE streaming for search First word appears in 1-2 seconds
Short prompts (~500 chars) Reduced prompt processing time

5. Frontend Architecture

5.1 Routing & Role-Based Access

Route Page Allowed Roles
/ Landing Page Public
/auth Login Page Public
/home Home Page All authenticated
/admin Admin Dashboard admin
/hod HOD Dashboard hod
/faculty Faculty Dashboard faculty, hod, admin
/student Student Dashboard student

5.2 Pages (8)

Page Key Features
LandingPage Public intro page
LoginPage Email/password login form
AdminDashboard KPI cards, charts, AI search (streaming), report generation
HodDashboard Department-scoped analytics
FacultyDashboard Marks/attendance entry, research
StudentDashboard Personal performance view
HomePage Role-based landing
NotFoundPage 404 handler

5.3 Components (21)

  • Charts: DepartmentChart, DepartmentComparisonChart, RiskChart, RiskDistributionChart, RiskDoughnut, SectionComparisonChart, SectionPerformanceChart, FacultyRiskChart, SafeChartContainer
  • UI: StatCard, StatsCards, FacultyStatsCards, TopStudentsTable, Sidebar, AdminSidebar, FacultySidebar
  • Management: AddFacultyDrawer, AttendanceManager, FacultyAchievements, FacultyProfile
  • Auth: ProtectedRoute

6. Data Flow Summary

flowchart LR
    subgraph Input
        JSON[Seed JSON Files]
        Faculty[Faculty Entry]
        Admin[Admin Upload]
    end
    subgraph Storage
        Mongo[(MongoDB Atlas)]
    end
    subgraph Processing
        Controllers[Controllers]
        LLM[Mistral LLM]
    end
    subgraph Output
        Dashboard[React Dashboards]
        PDF[PDF Reports]
        Excel[Excel Reports]
        AI[AI Analysis]
    end
    JSON --> Mongo
    Faculty --> Mongo
    Admin --> Mongo
    Mongo --> Controllers
    Controllers --> LLM
    Controllers --> Dashboard
    LLM --> AI
    Controllers --> PDF
    Controllers --> Excel
Loading

7. Database Statistics (Live)

Collection Count
Students 90
Departments 3 (CSE, ECE, MECH)
Users Multiple (admin, hod, faculty, student roles)
Marks Per-student per-subject records
Placements Per-department per-year
Research Faculty publications
AccreditationItems NBA + NAAC criteria

8. Test Coverage

A comprehensive 13-suite, 76-test test suite exists at testAll.js:

Suite Tests Coverage
Pre-flight Checks 7 Server, DB, Ollama health
Authentication 9 Login, signup, JWT, roles
Student API 6 CRUD, filters, dashboard
Department API 3 CRUD, analytics, placements
Analytics API 5 KPIs, comparison, risk
Accreditation API 5 Items, readiness, filters
LLM Data Aggregation 8 Data pipeline verification
LLM Job Tests 14 All 8 Mistral jobs
LLM Accuracy 5 Answers match DB values
Cache Tests 3 Set/get/clear verification
Load Tests 1 Sequential performance
NL Search 10 Natural language questions
Security 2 Role enforcement

Last run result: 75/76 passed (99% success rate)


9. Environment Configuration

Variable Purpose
PORT Backend port (5000)
MONGO_URI Main database connection
DB_PASSWORD MongoDB Atlas password
ATTENDANCE_MONGO_URI Secondary attendance DB
JWT_SECRET Token signing secret
JWT_EXPIRES_IN Token expiry (1 day)

10. Key Project Strengths

  1. Full-stack MERN with clean separation of concerns
  2. Role-based access control at route, controller, and frontend level
  3. Real LLM integration with Mistral for intelligent analysis
  4. Live SSE streaming for responsive AI search
  5. NBA/NAAC accreditation tracking with readiness scoring
  6. Multi-format report generation (PDF + Excel)
  7. Comprehensive test suite with 76 tests across 13 categories
  8. Performance-optimized DB queries with Promise.all() and .lean()
  9. In-memory caching for expensive LLM calls
  10. Dual database architecture for specialized data stores

11. Areas for Improvement

Area Current State Recommendation
LLM Speed 15-20s per query (local Mistral) Use cloud GPU or smaller model (e.g., mistral:7b-instruct-v0.2-q4_0)
JWT Secret Hardcoded weak value Generate a strong random secret
Error Logging Console-only Add structured logging (Winston/Pino)
API Pagination Missing on list endpoints Add ?page=&limit= to student/mark queries
Input Validation Basic Mongoose validation Add express-validator for request body
File Uploads No evidence file upload Add multer for accreditation evidence docs
Rate Limiting None Add express-rate-limit for AI endpoints
Test Automation Manual node command Add to CI/CD pipeline

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors