Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Matrix Animation

Typing SVG

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.


Python Django Daphne LiveKit

OpenCV FFmpeg Redis HTTPS

License Status PRs Welcome Platform



📌 Table of Contents


🎯 What is EduMi 2?

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.


💡 Why EduMi 2?

❌ 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

✨ Key Features

  • 🔐 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 dlib face 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 (Space to play, S to split, Del to delete), and single-pass FFmpeg export filtergraphs.

🏗️ System Architecture

┌──────────────────────────────────────────────────────────────┐
│                       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.


📁 Project Directory Structure

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

🛠️ Setup & Installation Guides

To make the onboarding process cleaner and easier to read, we have divided the installation instructions based on target environments:


⚙️ Technical Architecture Specification

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:

👉 TECHNICAL_ARCHITECTURE.md

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.

🔢 Ports & Credentials Reference

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

🤝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the repository.
  2. Create your branch: git checkout -b feature/your-feature-name
  3. Commit your changes: git commit -m 'feat: add some feature'
  4. Push to the branch: git push origin feature/your-feature-name
  5. Open a Pull Request.

📄 License

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.

About

A unified educational platform combining virtual classrooms, AI-powered attendance, real-time engagement analytics, hardware/mobile camera management, and non-destructive video editing — all served over HTTPS with end-to-end security.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages