Skip to content

divyaa-s/classroom-pulse

Repository files navigation

πŸ“š Classroom Pulse β€” AI-Powered Smart Classroom Management System

Classroom Pulse is a comprehensive, AI-driven classroom management platform built for Smart India Hackathon 2025 (SIH '25). It integrates real-time mood & engagement analysis, face-recognition-based automated attendance, geofenced QR attendance, a faculty LMS dashboard, and video conferencing into a single unified system β€” enabling data-driven teaching and enhanced student engagement.

πŸ† Built for SIH 2025 β€” Solving real-time classroom monitoring and intelligent attendance management at scale.


πŸ“‹ Table of Contents


πŸ— Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Faculty LMS Dashboard (React + Vite)                      β”‚
β”‚         Timetable β”‚ Attendance β”‚ Marks β”‚ Mood Analytics β”‚ Reports            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚ REST / SSE                   β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  QR Attendance      β”‚     β”‚  Classroom Pulse Backend                       β”‚
β”‚  (Flask + ngrok)    β”‚     β”‚  (FastAPI / Flask)                             β”‚
β”‚                     β”‚     β”‚                                                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚     β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ QR Generation β”‚  β”‚     β”‚  β”‚ YOLOv8-Face  β”‚   β”‚  FER / DeepFace        β”‚ β”‚
β”‚  β”‚ + Geofencing  β”‚  β”‚     β”‚  β”‚ Detection    │──▢│  Emotion Recognition   β”‚ β”‚
β”‚  β”‚ (Haversine)   β”‚  β”‚     β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚     β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚                     β”‚     β”‚  β”‚ MediaPipe    β”‚   β”‚  Engagement Scoring    β”‚ β”‚
β”‚                     β”‚     β”‚  β”‚ FaceMesh     │──▢│  (Valence / Arousal)   β”‚ β”‚
β”‚                     β”‚     β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                     β”‚     β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚                     β”‚     β”‚  β”‚ Head Pose    β”‚   β”‚  Yawn / Blink / Gaze   β”‚ β”‚
β”‚                     β”‚     β”‚  β”‚ (PnP Solve)  │──▢│  Detection (MAR/EAR)   β”‚ β”‚
β”‚                     β”‚     β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Video Conferencing β”‚     β”‚  Smart Kiosk (Face Recognition Attendance)      β”‚
β”‚  (Express + Jitsi)  β”‚     β”‚  DeepFace SFace + YOLO + Live Analytics UI     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

✨ Key Features

Feature Description
Real-Time Mood Detection 7-emotion classification (happy, sad, angry, surprise, fear, disgust, neutral) using FER / DeepFace on live webcam feeds
Engagement Index Weighted Valence-Arousal model producing a 0–100 engagement score with EMA smoothing
Head Pose Estimation PnP-based 3D head pose (pitch, yaw, roll) to detect "Listening" vs. "Looking Down" states
Yawn Detection Mouth Aspect Ratio (MAR) based real-time yawning detection via MediaPipe FaceMesh
Blink Detection Eye Aspect Ratio (EAR) analysis for drowsiness / attention monitoring
YOLOv8 Face Detection Fast, accurate multi-face detection optimized for classroom-scale (50+ faces)
Face Recognition Attendance DeepFace (SFace model) for automatic check-in/check-out via smart kiosk
QR + Geofence Attendance QR code scan with GPS verification (Haversine formula, configurable radius)
Faculty LMS Dashboard React + Vite frontend with timetable, attendance records, marks, and mood analytics views
Video Conferencing Jitsi Meet integration with role-based settings (host/student) and bandwidth optimization
Live Video Stream MJPEG streaming with annotated face boxes, emotion labels, and attention overlays
SSE / WebSocket Analytics Real-time analytics push to frontend dashboards via Server-Sent Events and WebSocket
Per-Emotion Headcount Charts Live Matplotlib bar charts and engagement time-series (standalone mode)

🧩 Modules

1. Classroom Pulse β€” Real-Time Mood & Engagement Analytics

The core analytics engine that processes live webcam feeds to generate classroom-level mood and engagement metrics.

Two operational modes:

Mode File Face Detection Server
Standalone (OpenCV Window) classroom_yolo.py / realtime_pulse_preview.py YOLOv8-Face / MediaPipe None (runs locally with Matplotlib charts)
Server Mode (API + Dashboard) app/main.py + app/pulse.py FER built-in detector FastAPI with WebSocket + MJPEG stream

Key capabilities:

  • Multi-face emotion detection (FER library on per-face crops)
  • MediaPipe FaceMesh for 468-landmark tracking
  • PnP-based head pose estimation with EMA smoothing
  • Yawning detection via Mouth Aspect Ratio (MAR > 0.60)
  • Listening / Looking Down classification
  • Engagement scoring: E = 100 Γ— (0.5 Γ— (happy + surprise) + 0.3 Γ— (1 βˆ’ neutral) + 0.2 Γ— arousal)
  • Real-time Chart.js dashboard via WebSocket push

2. Smart Kiosk β€” Face Recognition Attendance

A classroom-entrance kiosk system that uses DeepFace for automated face-recognition-based attendance.

Pipeline:

Camera Frame
    β”‚
    β”œβ”€β”€β–Ί YOLOv8-Face β†’ face bounding boxes
    β”‚
    β”œβ”€β”€β–Ί DeepFace.find() β†’ match against student dataset (SFace model)
    β”‚       └──► Auto check-in / check-out with cooldown timer
    β”‚
    β”œβ”€β”€β–Ί DeepFace.analyze() β†’ per-face emotion classification
    β”‚
    └──► MediaPipe FaceMesh β†’ MAR (yawning) + EAR (blink) detection

Features:

  • Automatic student identification from pre-registered face database
  • Check-in / check-out with configurable cooldown (default: 5 min)
  • Live UI overlay with sidebar showing attendance log and analytics
  • Backend sync via REST API for persistent attendance records

3. QR Code Attendance (Geofenced)

A lightweight Flask app for QR-based attendance with GPS geofencing to prevent proxy attendance.

How it works:

  1. Faculty generates a QR code linked to a public ngrok URL
  2. Students scan the QR β†’ opens a verification page on their phone
  3. Browser captures GPS coordinates
  4. Server validates location using Haversine distance (configurable radius, default: 20m)
  5. Attendance logged as PRESENT or ABSENT to CSV

4. Faculty LMS Frontend

A React 18 + Vite + TypeScript single-page application for faculty to manage their classes.

Pages:

Page Description
LoginPage Faculty authentication
DashboardPage Timetable grid + upcoming classes overview
AttendancePage Student attendance records and management
MarksPage Marks entry and management
AnalyticsPage Class performance analytics
MoodAnalyticsPage Live mood & engagement visualizations from Classroom Pulse

Tech: React Router, Tailwind CSS, Recharts, jsPDF + html2canvas for report export.


5. Video Conferencing

An Express.js server that wraps Jitsi Meet to provide seamless video conferencing for online/hybrid classes.

Features:

  • Room creation with unique IDs (class-<random>)
  • Role-based join URLs (host vs. student)
  • Auto-configured Jitsi settings: prejoin disabled, students muted by default, 360p bandwidth cap, P2P disabled for stability

πŸ›  Tech Stack

AI / Computer Vision

Technology Purpose
YOLOv8n-Face Fast multi-face detection (Ultralytics)
MediaPipe FaceMesh 468-landmark facial tracking, head pose, MAR/EAR
FER Lightweight 7-emotion classifier
DeepFace Face recognition (SFace) + emotion analysis
TensorFlow / Keras Custom CNN for drowsiness detection (eye/yawn classification)
OpenCV Video capture, frame processing, PnP pose estimation
NumPy / SciPy Numerical computation, Haversine distance

Backend

Technology Purpose
FastAPI Classroom Pulse API server (WebSocket + REST)
Flask QR attendance server + Kiosk analytics backend
Express.js Video conferencing room management
ngrok Public URL tunneling for QR attendance

Frontend

Technology Purpose
React 18 UI framework
Vite Build tool and dev server
TypeScript Type safety
Tailwind CSS Styling
Recharts Data visualization charts
Chart.js Real-time analytics dashboard (Pulse MVP)
jsPDF + html2canvas PDF report generation
Axios HTTP client

Infrastructure

Technology Purpose
Jitsi Meet Open-source video conferencing
Matplotlib Standalone analytics charts (OpenCV mode)
CSV Lightweight attendance logging

πŸ“ Project Structure

classroom-pulse/
β”‚
β”œβ”€β”€ classroom_pulse_mvp/           # 🧠 Core real-time analytics module
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ main.py                # FastAPI server (WebSocket, MJPEG, REST)
β”‚   β”‚   β”œβ”€β”€ pulse.py               # PulseEngine β€” threaded emotion + engagement pipeline
β”‚   β”‚   β”œβ”€β”€ config.py              # Tunable parameters (intervals, thresholds, labels)
β”‚   β”‚   └── static/
β”‚   β”‚       └── index.html         # Chart.js real-time dashboard
β”‚   β”œβ”€β”€ classroom_yolo.py          # Standalone mode β€” YOLO + FER + head pose + charts
β”‚   β”œβ”€β”€ realtime_pulse_preview.py  # Standalone mode β€” MediaPipe + FER + charts
β”‚   β”œβ”€β”€ requirements.txt           # Python dependencies
β”‚   └── yolov8n-face.pt            # YOLOv8 face detection weights
β”‚
β”œβ”€β”€ github-new/attendance-marker/
β”‚   └── SIH/
β”‚       β”œβ”€β”€ backend/
β”‚       β”‚   β”œβ”€β”€ server.py          # Flask server β€” KioskRuntime + MJPEG + SSE analytics
β”‚       β”‚   β”œβ”€β”€ app.py             # Flask app routes
β”‚       β”‚   β”œβ”€β”€ models.py          # Data models
β”‚       β”‚   └── routes.py          # REST API routes
β”‚       β”œβ”€β”€ kiosk/
β”‚       β”‚   β”œβ”€β”€ kiosk_app.py       # Smart kiosk β€” DeepFace recognition + live UI
β”‚       β”‚   β”œβ”€β”€ register_students.py # Student face enrollment
β”‚       β”‚   β”œβ”€β”€ hardware_test.py   # Camera/hardware diagnostics
β”‚       β”‚   └── students.csv       # Registered student records
β”‚       └── requirements.txt       # Python dependencies
β”‚
β”œβ”€β”€ qr-code/                       # πŸ“± QR-based geofenced attendance
β”‚   β”œβ”€β”€ app.py                     # Flask server β€” QR generation + location verification
β”‚   β”œβ”€β”€ qr_utils.py                # QR code image generator
β”‚   β”œβ”€β”€ location_utils.py          # Haversine distance calculator
β”‚   β”œβ”€β”€ location_logs.csv          # Attendance log
β”‚   β”œβ”€β”€ templates/                 # HTML templates (index, verify)
β”‚   └── static/                    # QR images
β”‚
β”œβ”€β”€ faculty-lms-frontend/          # πŸ–₯ Faculty dashboard (React + Vite)
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ App.tsx                # Router and layout
β”‚   β”‚   β”œβ”€β”€ pages/                 # Login, Dashboard, Attendance, Marks, Analytics, Mood
β”‚   β”‚   β”œβ”€β”€ components/            # Navbar, TimetableGrid, UpcomingClasses, charts
β”‚   β”‚   β”œβ”€β”€ context/               # Auth context
β”‚   β”‚   β”œβ”€β”€ services/              # API clients
β”‚   β”‚   β”œβ”€β”€ router/                # Route configuration
β”‚   β”‚   └── types/                 # TypeScript type definitions
β”‚   β”œβ”€β”€ package.json
β”‚   └── vite.config.ts
β”‚
β”œβ”€β”€ video-conferencing/            # πŸŽ₯ Jitsi-based video conferencing
β”‚   β”œβ”€β”€ server.cjs                 # Express.js β€” room creation + join URL generation
β”‚   β”œβ”€β”€ public/                    # Static assets
β”‚   └── package.json
β”‚
β”œβ”€β”€ dataset_new/                   # Training data (eye/yawn classification)
β”‚   β”œβ”€β”€ train/
β”‚   └── test/
β”‚
β”œβ”€β”€ mood_recog.py                  # πŸ§ͺ CNN training script for drowsiness detection
β”œβ”€β”€ yolomodel.py                   # YOLO face weights downloader utility
β”œβ”€β”€ yolov8n-face.pt                # YOLOv8 face detection model weights
└── kaggle.json                    # Kaggle API credentials (for dataset downloads)

βš™οΈ Installation

Prerequisites

  • Python 3.10+ with pip
  • Node.js 18+ with npm
  • Webcam (required for real-time analysis)
  • GPU (optional, falls back to CPU β€” recommended for DeepFace)

1. Clone the Repository

git clone https://github.com/<your-username>/classroom-pulse.git
cd classroom-pulse

2. Set Up Classroom Pulse (Analytics Engine)

cd classroom_pulse_mvp

# Create and activate virtual environment
python -m venv .venv

# Windows
.\.venv\Scripts\activate

# Linux/macOS
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt
cd ..

3. Set Up Smart Kiosk (Face Recognition Attendance)

cd github-new/attendance-marker/SIH

# Create virtual environment and install
python -m venv .venv
.\.venv\Scripts\activate     # Windows
pip install -r requirements.txt
cd ../../..

4. Set Up QR Attendance

cd qr-code
pip install flask qrcode[pil]
cd ..

5. Set Up Faculty LMS Frontend

cd faculty-lms-frontend
npm install
cd ..

6. Set Up Video Conferencing

cd video-conferencing
npm install
cd ..

7. Download YOLO Face Weights

The YOLOv8n-Face weights are auto-downloaded on first run, or you can manually place yolov8n-face.pt in the relevant directories.


πŸš€ Usage

Option A: Standalone Real-Time Analytics (No server needed)

cd classroom_pulse_mvp
python classroom_yolo.py

This opens a fullscreen camera window with real-time face detection, emotion labels, attention tracking, and live Matplotlib charts showing per-emotion headcount and engagement over time.

Controls:

  • Press F β€” Toggle fullscreen
  • Press Q β€” Quit

Option B: Server Mode (Dashboard + API)

Terminal 1 β€” Analytics Backend:

cd classroom_pulse_mvp
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

Terminal 2 β€” Faculty Frontend:

cd faculty-lms-frontend
npm run dev

Terminal 3 β€” Video Conferencing (optional):

cd video-conferencing
node server.cjs

Access Points

Service URL
Pulse Dashboard http://localhost:8000
Camera Preview http://localhost:8000/preview
Live Video Stream http://localhost:8000/video
Analytics Snapshot http://localhost:8000/snapshot
Faculty LMS http://localhost:5173
Video Conferencing http://localhost:3000

Option C: QR Attendance

cd qr-code

# Start ngrok (in a separate terminal)
./ngrok-v3-stable-windows-amd64/ngrok http 5000

# Update the public_url in app.py with your ngrok URL, then:
python app.py

Option D: Smart Kiosk

cd github-new/attendance-marker/SIH

# Terminal 1 β€” Start the backend
cd backend
python server.py

# Terminal 2 β€” Start the kiosk
cd kiosk
python kiosk_app.py

πŸ”¬ Detection & Analysis Pipeline

Emotion & Engagement Pipeline

Webcam Frame (960Γ—540)
    β”‚
    β”œβ”€β”€β–Ί YOLOv8-Face Detection
    β”‚       └──► Bounding boxes (padded 10%) for each face
    β”‚
    β”œβ”€β”€β–Ί FER Emotion Classification (per-face crop)
    β”‚       └──► Top emotion + confidence score
    β”‚       └──► Thresholded (conf > 0.40, else β†’ "neutral")
    β”‚
    β”œβ”€β”€β–Ί MediaPipe FaceMesh (468 landmarks)
    β”‚       β”‚
    β”‚       β”œβ”€β”€β–Ί PnP Head Pose (6-point solve)
    β”‚       β”‚       β”œβ”€β”€β–Ί Pitch > 15Β° β†’ "Looking Down"
    β”‚       β”‚       └──► |Pitch| < 10Β° & |Yaw| < 25Β° β†’ "Listening"
    β”‚       β”‚
    β”‚       └──► Mouth Aspect Ratio (MAR)
    β”‚               └──► MAR > 0.60 β†’ "Yawning"
    β”‚
    └──► Aggregation (every 0.1–0.5s interval)
            β”œβ”€β”€β–Ί Per-emotion headcount distribution
            β”œβ”€β”€β–Ί Weighted Valence = Ξ£ (weight_i Γ— valence_i)
            β”œβ”€β”€β–Ί Weighted Arousal = Ξ£ (weight_i Γ— arousal_i)
            └──► Engagement Index (0–100) with EMA smoothing

Face Recognition Pipeline (Kiosk)

Camera Frame
    β”‚
    β”œβ”€β”€β–Ί YOLO Detect β†’ face boxes
    β”‚
    β”œβ”€β”€β–Ί DeepFace.find(SFace model) β†’ match against enrolled dataset
    β”‚       β”œβ”€β”€β–Ί Match found β†’ check-in / check-out (with cooldown)
    β”‚       └──► POST /api/attendance/log
    β”‚
    β”œβ”€β”€β–Ί DeepFace.analyze() β†’ dominant emotion per face
    β”‚
    └──► FaceMesh β†’ yawn count (MAR) + blink count (EAR)
            └──► Kiosk UI overlay with live analytics sidebar

Geofenced QR Attendance Pipeline

Faculty generates QR β†’ Student scans
    β”‚
    └──► Browser geolocation API β†’ (lat, lon)
            β”‚
            └──► Haversine distance to classroom center
                    β”œβ”€β”€β–Ί distance ≀ 20m β†’ PRESENT βœ…
                    └──► distance > 20m β†’ ABSENT ❌

πŸ“‘ API Endpoints

Classroom Pulse (FastAPI β€” port 8000)

Method Endpoint Description
GET / Chart.js analytics dashboard
GET /preview Live camera preview (MJPEG)
GET /video Raw MJPEG video stream
GET /snapshot Latest metrics JSON
GET /healthz Health check
WS /ws WebSocket β€” real-time metrics push

Snapshot Response:

{
  "emotion_dist": { "happy": 0.45, "neutral": 0.30, "surprise": 0.15, "sad": 0.10 },
  "valence": 0.3412,
  "arousal": 0.6234,
  "engagement": 72.5,
  "n_faces": 12,
  "timestamp": 1747412345.678
}

Smart Kiosk Backend (Flask β€” port 5000)

Method Endpoint Description
GET /api/stream MJPEG annotated video stream
GET /api/kiosk/analytics/stream SSE β€” real-time analytics events
GET /api/kiosk/analytics/summary JSON snapshot of current analytics

QR Attendance (Flask β€” port 5000)

Method Endpoint Description
GET / QR display page
GET /verify Student verification page
POST /store_location Submit GPS for attendance verification

Video Conferencing (Express β€” port 3000)

Method Endpoint Description
POST /courses/:courseId/meetings Create a new Jitsi meeting room
GET /meetings/:id/join-url Get role-based join URL

πŸ“Έ Screenshots

Screenshots can be added here after deployment.


πŸ™ Acknowledgements

  • Ultralytics YOLOv8 β€” Object detection framework
  • MediaPipe β€” Face mesh and landmark tracking
  • FER β€” Facial Expression Recognition
  • DeepFace β€” Face recognition and analysis
  • Jitsi Meet β€” Open-source video conferencing
  • FastAPI β€” Modern async Python web framework
  • Vite β€” Next-generation frontend build tool
  • Recharts β€” React charting library

πŸ“„ License

This project is developed for Smart India Hackathon 2025 and academic purposes.
See LICENSE for details.


Built with πŸŽ“ by the Classroom Pulse Team β€” SIH 2025

About

AI-powered smart classroom management system with real-time emotion analysis, face-recognition attendance, geofenced QR attendance, and live analytics dashboards.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors