A unified, self-hosted educational platform combining virtual classrooms,
AI-powered attendance, real-time engagement analytics, and non-destructive video editing —
all secured over HTTPS with end-to-end encryption.
- What is EduMi 2?
- Why EduMi 2?
- Key Features
- System Architecture
- Project Directory Structure
- Setup & Installation Guides
- Technical Architecture Specification
- Ports & Credentials Reference
- Contributing & License
EduMi 2 replaces the fragmented patchwork of tools schools rely on today — video conferencing software, manual attendance registers, surveillance dashboards, and standalone video editors — with a single, unified, self-hosted platform.
Everything runs securely over HTTPS. Biometrics are encrypted at rest. Real-time communications are powered by low-latency WebSockets and WebRTC SFU. Zero third-party cloud dependencies required.
| ❌ The Old School Way | ✅ The EduMi 2 Way |
|---|---|
| Manual roll call wastes 5–10 min per class | AI face-recognition attendance — 100% automated |
| Zero visibility into student attention/mood | Real-time engagement scoring + emotion detection |
| 5+ fragmented tools to manage & pay for | One platform for meetings, cameras, recordings & editing |
| Raw biometric data stored in plaintext | Fernet AES-256 encryption for all face embeddings |
| Expensive dedicated IP camera hardware | Use any standard Android / iPhone as a live classroom feed |
| Video meetings served over insecure channels | Full HTTPS via self-signed certs & Daphne ASGI |
- 🔐 HTTPS Everywhere: Native SSL support with Daphne ASGI, secure cookies (
SESSION_COOKIE_SECURE,CSRF_COOKIE_SECURE), and simple local trust script integration. - 🤖 AI Attendance & Engagement: Automatic roll call using
dlibface embedding vector analysis. Embeddings are Fernet-encrypted. Continuous polling tracks active presence. - 📊 Real-Time Emotion & Attention Tracking: Captures emotional states and attention indexes. Aggregates data into visual trends and teacher report dashboards.
- 🎥 Hybrid Camera Integration: Interfaces with RTSP surveillance cameras and phones running IP webcam feeds. Runs parallel frames through CV analysis.
- 🖥️ Low-Latency Virtual Classrooms: Powered by LiveKit SFU WebRTC with automated meeting attendance log entries, raised-hands queues, and instant text chats.
- ✂️ Non-Destructive Video Editor: Browser-level auto-saving, keyboard shortcuts (
Spaceto play,Sto split,Delto delete), and single-pass FFmpeg export filtergraphs.
┌──────────────────────────────────────────────────────────────┐
│ Browser / Client │
│ HTTPS · WebSocket (wss://) · WebRTC │
└────────────────────────────┬─────────────────────────────────┘
│
┌─────────────▼─────────────┐
│ Nginx : 443 (prod) │ ← SSL termination + static files
│ Daphne : 8002 (dev) │ ← HTTPS + WSS direct
└─────────────┬─────────────┘
│
┌────────────────▼────────────────┐
│ Django Main App │
│ school_project/ │
│ ┌──────────┐ ┌─────────────┐ │
│ │ accounts │ │ meetings │ │ ← Auth, profiles, messaging
│ │ │ │ (LiveKit) │ │ ← Virtual classrooms
│ ├──────────┤ ├─────────────┤ │
│ │attendance│ │ cameras │ │ ← Face AI + engagement
│ │ │ │ (RTSP) │ │ ← Hardware camera mgmt
│ ├──────────┤ ├─────────────┤ │
│ │ videos │ │video_editing│ │ ← Upload & storage
│ │ │ │ │ │ ← Non-destructive editor
│ ├──────────┤ ├─────────────┤ │
│ │ mobile │ │ common │ │ ← Phone cameras
│ │ cameras │ │ │ │ ← Shared utilities
│ └──────────┘ └─────────────┘ │
└────────────┬──────────┬───────────┘
│ │
┌──────────▼──┐ ┌───▼──────┐
│ SQLite / │ │ Redis │
│ PostgreSQL │ │ :6379 │
└─────────────┘ └────┬─────┘
│
┌──────────────┴─────────────┐
│ │
┌───────────▼──────────┐ ┌─────────────▼──────┐
│ Celery Worker │ │ Camera Service │
│ (face processing, │ │ :8003 (Waitress) │
│ report gen, │ │ ─ MJPEG proxy │
│ recording mgmt) │ │ ─ Head counting │
└──────────────────────┘ │ ─ Face detection │
└──────────┬──────────┘
│
┌────────────▼────────────┐
│ LiveKit SFU : 7880 │
│ WebRTC peer routing │
└─────────────────────────┘
For a comprehensive technical breakdown of service topology, client-side track registries, biometric encryption pipelines, and timeline compilation, please consult the complete design documentation.
Tip
📖 Read the detailed Technical Architecture & Integration Specifications for a deep dive into the code infrastructure.
Edumi2/
├── school_project/ # Django project configuration, ASGI & Celery routes
├── accounts/ # User authentication, roles, and notifications
├── attendance/ # Face profiling and attention tracking database logic
├── cameras/ # Hardware camera MJPEG proxies and controls
├── mobile_cameras/ # Mobile phone IP camera pipelines
├── meetings/ # LiveKit WebRTC meetings room & consumer routes
├── videos/ # General repository for video upload storage
├── video_editing/ # Non-destructive editor sequencing and commands
├── common/ # Shared classes and UI elements
├── camera_service/ # Waitress microservice running CV pipelines (port 8003)
├── templates/ # Global templates directory
├── static/ # Shared CSS, JS files, assets
├── config/ # Configuration files (LiveKit, environmental examples)
├── certs/ # Local SSL/TLS keys
└── scripts/ # Administration and setups script suite
To make the onboarding process cleaner and easier to read, we have divided the installation instructions based on target environments:
- 🏁 Windows Developer Setup Guide — Detailed steps for running locally on Windows.
- 🐧 Linux Developer Setup Guide — Instructions for setting up development environments on Linux.
- 🐳 Production Server Deployment Guide — Instructions for deploying using Docker Compose, systemd, and Nginx.
If you are developing features, extending the face-matching service, or contributing to the video editor's FFmpeg filter compilation pipelines, read the architecture runbook:
It contains:
- Service topologies and communication protocols (ASGI, Daphne, Redis).
- LiveKit WebRTC SFU client-side track registry details (
TrackManager). - Fernet AES-256 biometric encryption specifications.
- Non-destructive video editing and compiler filtergraph setups.
- Waitress CV service orchestration and troubleshooting schemas.
| Service | Port | Protocol | Usage |
|---|---|---|---|
| Django / Daphne | 8002 | HTTPS / WSS | Local web client interface |
| Camera Service (Waitress) | 8003 | HTTP | Internal AI computer vision calculations |
| LiveKit SFU | 7880 | WS / HTTP | WebRTC media engine signaling |
| Redis | 6379 | TCP | Task broker queue & channel layer |
| Nginx (Production) | 443 | HTTPS | Production ingress port |
Contributions, issues, and feature requests are welcome!
- Fork the repository.
- Create your branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m 'feat: add some feature' - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Built for better classrooms.
Made with ❤️ by GAuravgiy87 and tarunkumar-sys.