| # NETRA - System Architecture | |
| ## ποΈ Application Architecture | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β FRONTEND β | |
| β βββββββββββββ ββββββββββββββββ ββββββββββββββββββββββ β | |
| β β Login/ β β Dashboard β β Live Camera / β β | |
| β β Register β β β β Video Analysis β β | |
| β βββββββ¬ββββββ ββββββββ¬ββββββββ βββββββββββ¬βββββββββββ β | |
| β β β β β | |
| β βββββββββββββββββ΄ββββββββββββββββββββββ β | |
| β β β | |
| β [HTTP/AJAX] β | |
| β β β | |
| ββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ | |
| β | |
| ββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ | |
| β FLASK BACKEND β | |
| β β β | |
| β βββββββββββββββββββββββ΄ββββββββββββββββββββββββββ β | |
| β β Flask Application (app.py) β β | |
| β β ββββββββββββββββββββββββββββββββββββββββββββ β β | |
| β β β Route Handlers β β β | |
| β β β β’ /register β’ /login β’ /dashboard β β β | |
| β β β β’ /live-camera β’ /video-analysis β β β | |
| β β β β’ /camera_feed β’ /upload_video β β β | |
| β β ββββββββββββββββββββββββββββββββββββββββββββ β β | |
| β βββββββββββββββββ¬βββββββββββββββββββ¬βββββββββββββ β | |
| β β β β | |
| β ββββββββββββββ΄βββββββββ βββββ΄βββββββββββββββ β | |
| β β Authentication β β Video Processor β β | |
| β β β’ User Login β β β’ Frame Process β β | |
| β β β’ Session Mgmt β β β’ Model Apply β β | |
| β β β’ Password Hash β β β’ Alert Gen β β | |
| β βββββββββββββββββββββββ βββββββββββ¬βββββββββ β | |
| β β β | |
| β ββββββββββββββββββββββββββββββββββββββ΄βββββββββ β | |
| β β Model Manager β β | |
| β β ββββββββββββββββ βββββββββββββββββββββββ β β | |
| β β β YOLO Object β β Violence Detection β β β | |
| β β β Detection β β CNN Model β β β | |
| β β ββββββββββββββββ βββββββββββββββββββββββ β β | |
| β β β β | |
| β β ββββββββββββββββββββββββββββββββββββββββ β β | |
| β β β Extensible Model Interface β β β | |
| β β β (Add More Models Here) β β β | |
| β β ββββββββββββββββββββββββββββββββββββββββ β β | |
| β βββββββββββββββββββββββββββββββββββββββββββββββ β | |
| ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ | |
| β | |
| ββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ | |
| β DATA LAYER β | |
| β β β | |
| β ββββββββββββββββββββββ΄βββββββββββββββββββββββ β | |
| β β SQLite Database (netra.db) β β | |
| β β ββββββββββββββββ βββββββββββββββββββββββ β | |
| β β β Users β β Analysis History ββ β | |
| β β β β’ id β β β’ id ββ β | |
| β β β β’ username β β β’ user_id ββ β | |
| β β β β’ email β β β’ type ββ β | |
| β β β β’ password β β β’ detections ββ β | |
| β β β β’ created β β β’ alert_count ββ β | |
| β β ββββββββββββββββ βββββββββββββββββββββββ β | |
| β βββββββββββββββββββββββββββββββββββββββββββ β | |
| β β | |
| β ββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β File Storage (uploads/) β β | |
| β β β’ Uploaded video files β β | |
| β β β’ Temporary processing files β β | |
| β ββββββββββββββββββββββββββββββββββββββββββββ β | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ## π Data Flow | |
| ### User Registration/Login Flow | |
| ``` | |
| User Input β Flask Route β Validate Data β Hash Password | |
| β Store in DB β Create Session β Redirect to Dashboard | |
| ``` | |
| ### Live Camera Flow | |
| ``` | |
| Camera β OpenCV Capture β Frame Extract β Model Manager | |
| β YOLO Detection β Violence Detection β Annotate Frame | |
| β Generate Alerts β Stream to Frontend β Display Results | |
| ``` | |
| ### Video Analysis Flow | |
| ``` | |
| Upload Video β Save to Uploads/ β Extract Frames | |
| β Process Each Frame β Collect Detections β Generate Report | |
| β Save to History β Return Results β Display to User | |
| ``` | |
| ## π Component Interactions | |
| ### Frontend β Backend | |
| - **Authentication**: POST JSON β Flask validates β Return success/error | |
| - **Video Stream**: GET request β Flask streams MJPEG β Browser displays | |
| - **File Upload**: FormData POST β Flask saves β Processes β Returns JSON | |
| - **Model List**: GET request β Flask queries ModelManager β Returns JSON | |
| ### Backend β Models | |
| - **Model Loading**: App start β ModelManager loads all models | |
| - **Frame Processing**: Frame β YOLO.detect() β Violence.predict() | |
| - **Result Aggregation**: Combine all model outputs β Format alerts | |
| ### Backend β Database | |
| - **User Operations**: Create, Read, Authenticate | |
| - **History Logging**: Store analysis results for each session | |
| - **Session Management**: Track logged-in users | |
| ## π Technology Stack | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββ | |
| β Presentation Layer β | |
| β β’ HTML5 β’ CSS3 β’ JavaScript (Vanilla) β | |
| ββββββββββββββββββββ¬βββββββββββββββββββββββ | |
| β | |
| ββββββββββββββββββββ΄βββββββββββββββββββββββ | |
| β Application Layer β | |
| β β’ Flask 3.0 β’ Python 3.8+ β | |
| β β’ Flask-SQLAlchemy β’ Werkzeug β | |
| ββββββββββββββββββββ¬βββββββββββββββββββββββ | |
| β | |
| ββββββββββββββββββββ΄βββββββββββββββββββββββ | |
| β AI Layer β | |
| β β’ YOLOv8 (Ultralytics) β | |
| β β’ TensorFlow/Keras β | |
| β β’ OpenCV β | |
| ββββββββββββββββββββ¬βββββββββββββββββββββββ | |
| β | |
| ββββββββββββββββββββ΄βββββββββββββββββββββββ | |
| β Data Layer β | |
| β β’ SQLite β’ File System β | |
| βββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ## π― Design Patterns Used | |
| 1. **MVC Pattern**: Models (DB), Views (Templates), Controllers (Routes) | |
| 2. **Manager Pattern**: ModelManager handles all AI models | |
| 3. **Singleton**: Database connection | |
| 4. **Factory**: Model creation and loading | |
| 5. **Strategy**: Different detection strategies per model | |
| ## π Security Architecture | |
| ``` | |
| Request β Session Check β Authentication β Authorization | |
| β Input Validation β Process β Sanitize Output | |
| ``` | |
| - Password hashing (Werkzeug) | |
| - Session management (Flask) | |
| - File upload validation | |
| - Path sanitization | |
| ## π Deployment Architecture | |
| ``` | |
| Development: | |
| Flask Dev Server β SQLite β Local Files | |
| Production (Future): | |
| Nginx β Gunicorn β Flask App β PostgreSQL | |
| β S3/Cloud Storage | |
| β Redis (Caching) | |
| ``` | |
| ## π Scalability Considerations | |
| Current: Single-threaded with threading support | |
| Future paths: | |
| - Multi-process workers (Gunicorn) | |
| - Background job queue (Celery) | |
| - Message broker (RabbitMQ/Redis) | |
| - Load balancer | |
| - Microservices architecture | |
| --- | |
| **This architecture supports:** | |
| β Easy model integration | |
| β Horizontal scaling potential | |
| β Maintainable code structure | |
| β Security best practices | |
| β Future enhancements | |
| ``` | |