Skip to content

Meerablip/Vigilance

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›‘οΈ VIGILANCE

Autonomous Multi-Domain Coordination Platform

A comprehensive command center dashboard for defense intelligence and border surveillance operations.


πŸ“š PROJECT HANDBOOK

This document serves as the complete reference guide for the Vigilance platform. It covers architecture, implementation status, setup instructions, and development roadmap.


Table of Contents

  1. Project Overview
  2. System Architecture
  3. Technology Stack
  4. Directory Structure
  5. Frontend Guide
  6. Backend Guide
  7. ML/AI Integration
  8. Data Flow
  9. Current Progress
  10. Remaining Work
  11. Getting Started
  12. Deployment
  13. API Reference
  14. Code Conventions
  15. Troubleshooting

🎯 Project Overview

What is Vigilance?

Vigilance is an AI-powered autonomous surveillance platform designed for military and border security operations. It combines:

  • Real-time sensor fusion from multiple data sources (drones, cameras, radar, motion sensors)
  • AI-driven threat classification using computer vision (YOLOv8)
  • Predictive analytics for threat pattern recognition
  • Unified command dashboard for operators

Core Capabilities

Capability Description Target Spec
Threat Classification AI classifies threats Level 1-5 95% accuracy, <5s response
Pattern Recognition Predicts threats 24hrs ahead 85% accuracy
Data Fusion Combines 1000+ sensor inputs <100ms latency
Real-time Alerts WebSocket-based notifications Instant delivery

Target Use Cases

  • LAC Border Monitoring - High-altitude autonomous surveillance
  • Desert Perimeter Security - 500km+ coverage zones
  • Coastal Security - Maritime-land coordination
  • Counter-Terrorism - Urban surveillance with civilian safety

πŸ— System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                              VIGILANCE SYSTEM                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                         PRESENTATION LAYER                           β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚   β”‚
β”‚  β”‚  β”‚   Navbar    β”‚ β”‚   Sidebar   β”‚ β”‚  Dashboard  β”‚ β”‚  ThreatMap   β”‚   β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚   β”‚
β”‚  β”‚  β”‚ AlertsFeed  β”‚ β”‚  VideoFeed  β”‚ β”‚ Prediction  β”‚ β”‚  StatsCards  β”‚   β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚   β”‚
β”‚  β”‚                     React + Vite + Tailwind                          β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                    β”‚                                        β”‚
β”‚                                    β–Ό                                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                          API LAYER                                   β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚   β”‚
β”‚  β”‚  β”‚ /threats β”‚ β”‚ /alerts  β”‚ β”‚ /sensors β”‚ β”‚/predict  β”‚ β”‚ /status  β”‚  β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚   β”‚
β”‚  β”‚  β”‚                    WebSocket (Socket.io)                        β”‚ β”‚   β”‚
β”‚  β”‚  β”‚              Real-time alerts, sensor updates                   β”‚ β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚
β”‚  β”‚                     Express + TypeScript                             β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                    β”‚                                        β”‚
β”‚                                    β–Ό                                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                      ML/AI LAYER [TODO]                              β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚   β”‚
β”‚  β”‚  β”‚  YOLOv8 Object   β”‚ β”‚  LSTM Pattern    β”‚ β”‚  Ensemble Threat    β”‚  β”‚   β”‚
β”‚  β”‚  β”‚   Detection      β”‚ β”‚  Recognition     β”‚ β”‚  Classification     β”‚  β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚   β”‚
β”‚  β”‚                     Python + PyTorch/TensorFlow                      β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                    β”‚                                        β”‚
β”‚                                    β–Ό                                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                       DATA LAYER [TODO]                              β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚   β”‚
β”‚  β”‚  β”‚  PostgreSQL  β”‚ β”‚    Redis     β”‚ β”‚    Kafka     β”‚                 β”‚   β”‚
β”‚  β”‚  β”‚  (Alerts DB) β”‚ β”‚   (Cache)    β”‚ β”‚  (Streaming) β”‚                 β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                    β”‚                                        β”‚
β”‚                                    β–Ό                                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                     SENSOR LAYER [TODO]                              β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”       β”‚   β”‚
β”‚  β”‚  β”‚ Drone β”‚ β”‚Camera β”‚ β”‚ Radar β”‚ β”‚Motion β”‚ β”‚Thermalβ”‚ β”‚ Satel β”‚       β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ›  Technology Stack

Current Implementation

Layer Technology Status
Frontend React 18, Vite, TypeScript βœ… Complete
Styling Tailwind CSS (custom military theme) βœ… Complete
Maps Leaflet.js (dark theme) βœ… Complete
Charts Recharts βœ… Complete
Icons Lucide React βœ… Complete
Backend Express.js, TypeScript βœ… Complete
Real-time Socket.io βœ… Complete
Containerization Docker, docker-compose βœ… Complete

Planned/TODO

Layer Technology Status
ML/AI Python, PyTorch, YOLOv8 ❌ TODO
Database PostgreSQL ❌ TODO
Cache Redis ❌ TODO
Message Queue Apache Kafka ❌ TODO
Auth JWT, bcrypt ❌ TODO

πŸ“ Directory Structure

vigilance-dashboard/
β”‚
β”œβ”€β”€ πŸ“‚ Docs/                          # Project documentation
β”‚   β”œβ”€β”€ Project Layman.pdf            # Non-technical overview
β”‚   └── Vigilance Proto Build Plan.pdf # Technical specifications
β”‚
β”œβ”€β”€ πŸ“‚ frontend/                      # React frontend application
β”‚   β”œβ”€β”€ πŸ“‚ src/
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ api/                   # API client layer
β”‚   β”‚   β”‚   └── index.ts              # Axios instance + API functions
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ components/            # React UI components
β”‚   β”‚   β”‚   β”œβ”€β”€ AlertsFeed.tsx        # Real-time alerts list
β”‚   β”‚   β”‚   β”œβ”€β”€ Dashboard.tsx         # Main dashboard layout
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.tsx            # Top navigation bar
β”‚   β”‚   β”‚   β”œβ”€β”€ PredictionChart.tsx   # 24-hour threat forecast
β”‚   β”‚   β”‚   β”œβ”€β”€ Sidebar.tsx           # Left navigation sidebar
β”‚   β”‚   β”‚   β”œβ”€β”€ StatsCard.tsx         # Statistics display card
β”‚   β”‚   β”‚   β”œβ”€β”€ ThreatMap.tsx         # Interactive Leaflet map
β”‚   β”‚   β”‚   └── VideoFeed.tsx         # Simulated camera feed
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ hooks/                 # Custom React hooks
β”‚   β”‚   β”‚   └── useAlerts.ts          # Alert management hook
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ styles/                # CSS and styling
β”‚   β”‚   β”‚   └── globals.css           # Global styles + Tailwind
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ types/                 # TypeScript definitions
β”‚   β”‚   β”‚   └── index.ts              # All interfaces/types
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ App.tsx                   # Root application component
β”‚   β”‚   └── main.tsx                  # React entry point
β”‚   β”‚
β”‚   β”œβ”€β”€ index.html                    # HTML template
β”‚   β”œβ”€β”€ package.json                  # Dependencies
β”‚   β”œβ”€β”€ tailwind.config.js            # Tailwind configuration
β”‚   β”œβ”€β”€ tsconfig.json                 # TypeScript config
β”‚   β”œβ”€β”€ vite.config.ts                # Vite build config
β”‚   β”œβ”€β”€ nginx.conf                    # Production nginx config
β”‚   └── Dockerfile                    # Frontend container
β”‚
β”œβ”€β”€ πŸ“‚ backend/                       # Express backend API
β”‚   β”œβ”€β”€ πŸ“‚ src/
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ data/                  # Data layer
β”‚   β”‚   β”‚   └── mockData.ts           # Demo mock data
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ routes/                # API route handlers
β”‚   β”‚   β”‚   β”œβ”€β”€ alerts.ts             # GET/PATCH /api/alerts
β”‚   β”‚   β”‚   β”œβ”€β”€ health.ts             # GET /api/health
β”‚   β”‚   β”‚   β”œβ”€β”€ predictions.ts        # GET /api/predictions
β”‚   β”‚   β”‚   β”œβ”€β”€ sensors.ts            # GET /api/sensors
β”‚   β”‚   β”‚   β”œβ”€β”€ status.ts             # GET /api/status
β”‚   β”‚   β”‚   └── threats.ts            # GET /api/threats
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ realtime/              # WebSocket handlers
β”‚   β”‚   β”‚   └── alertSimulator.ts     # Demo alert generator
β”‚   β”‚   β”‚
β”‚   β”‚   └── server.ts                 # Express app entry point
β”‚   β”‚
β”‚   β”œβ”€β”€ package.json                  # Dependencies
β”‚   β”œβ”€β”€ tsconfig.json                 # TypeScript config
β”‚   └── Dockerfile                    # Backend container
β”‚
β”œβ”€β”€ πŸ“‚ ml/ [TODO]                     # Machine learning models
β”‚   β”œβ”€β”€ πŸ“‚ models/                    # Trained model files
β”‚   β”‚   β”œβ”€β”€ yolov8_threat.pt          # Object detection model
β”‚   β”‚   β”œβ”€β”€ lstm_pattern.h5           # Pattern recognition
β”‚   β”‚   └── ensemble_classifier.pkl   # Threat classifier
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“‚ inference/                 # Inference servers
β”‚   β”‚   β”œβ”€β”€ object_detection.py       # YOLOv8 inference API
β”‚   β”‚   β”œβ”€β”€ pattern_recognition.py    # LSTM inference
β”‚   β”‚   └── threat_classifier.py      # Ensemble inference
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“‚ training/                  # Training scripts
β”‚   β”‚   β”œβ”€β”€ train_yolo.py
β”‚   β”‚   β”œβ”€β”€ train_lstm.py
β”‚   β”‚   └── train_ensemble.py
β”‚   β”‚
β”‚   β”œβ”€β”€ requirements.txt              # Python dependencies
β”‚   └── Dockerfile                    # ML container
β”‚
β”œβ”€β”€ docker-compose.yml                # Container orchestration
β”œβ”€β”€ .env.example                      # Environment template
β”œβ”€β”€ .gitignore                        # Git ignore rules
└── README.md                         # This handbook

🎨 Frontend Guide

Component Hierarchy

App.tsx
β”œβ”€β”€ Navbar.tsx                    # Fixed top bar
β”‚   β”œβ”€β”€ Logo + Branding
β”‚   β”œβ”€β”€ System Status (OPERATIONAL)
β”‚   β”œβ”€β”€ Clock (real-time)
β”‚   β”œβ”€β”€ Notifications Bell
β”‚   └── User Dropdown
β”‚
β”œβ”€β”€ Sidebar.tsx                   # Fixed left navigation
β”‚   β”œβ”€β”€ Navigation Menu (8 items)
β”‚   └── System Status Bars
β”‚
└── Dashboard.tsx                 # Main content area
    β”œβ”€β”€ StatsCard.tsx (Γ—4)        # Top statistics row
    β”‚   β”œβ”€β”€ Active Alerts
    β”‚   β”œβ”€β”€ Personnel
    β”‚   β”œβ”€β”€ Sensors Online
    β”‚   └── Global Ops
    β”‚
    β”œβ”€β”€ ThreatMap.tsx             # Interactive map (left)
    β”‚   β”œβ”€β”€ Sensor markers
    β”‚   β”œβ”€β”€ Threat zone circles
    β”‚   └── Legend overlay
    β”‚
    β”œβ”€β”€ VideoFeed.tsx             # Camera feed (right)
    β”‚   β”œβ”€β”€ Detection boxes
    β”‚   β”œβ”€β”€ Threat classification
    β”‚   └── Timestamp overlay
    β”‚
    β”œβ”€β”€ PredictionChart.tsx       # Forecast chart (left)
    β”‚   β”œβ”€β”€ 24-hour timeline
    β”‚   β”œβ”€β”€ Multi-sector lines
    β”‚   └── Risk threshold
    β”‚
    └── AlertsFeed.tsx            # Alerts list (right)
        β”œβ”€β”€ Priority coloring
        β”œβ”€β”€ Expandable details
        └── Acknowledge button

Key Files Explained

src/types/index.ts

Defines all TypeScript interfaces:

  • Threat - Threat classification result
  • Alert - Security notification
  • Sensor - Sensor device info
  • PredictionPoint - Forecast data

src/api/index.ts

Axios client for backend communication:

  • getThreats() - Fetch active threats
  • getAlerts() - Fetch alerts (paginated)
  • getSensors() - Fetch sensor status
  • getPredictions() - Fetch 24hr forecast

src/hooks/useAlerts.ts

Custom hook for alert management:

  • Demo mode with simulated alerts
  • Real-time updates (every 20s)
  • Acknowledge functionality

tailwind.config.js

Custom military theme:

  • command colors (dark slate)
  • alert colors (reds)
  • status colors (green/yellow/red)
  • Custom animations (pulse, radar-sweep)

βš™οΈ Backend Guide

Express Server Structure

server.ts
β”œβ”€β”€ Middleware
β”‚   β”œβ”€β”€ helmet (security headers)
β”‚   β”œβ”€β”€ cors (cross-origin)
β”‚   └── express.json (body parsing)
β”‚
β”œβ”€β”€ Routes
β”‚   β”œβ”€β”€ /api/health     β†’ health.ts
β”‚   β”œβ”€β”€ /api/threats    β†’ threats.ts
β”‚   β”œβ”€β”€ /api/alerts     β†’ alerts.ts
β”‚   β”œβ”€β”€ /api/sensors    β†’ sensors.ts
β”‚   β”œβ”€β”€ /api/predictions β†’ predictions.ts
β”‚   └── /api/status     β†’ status.ts
β”‚
β”œβ”€β”€ WebSocket (Socket.io)
β”‚   β”œβ”€β”€ 'connection' event
β”‚   β”œβ”€β”€ 'alert:new' broadcasts
β”‚   └── 'subscribe' for feeds
β”‚
└── Alert Simulator
    └── Generates demo alerts every 15-45s

Route Files

Each route file follows the pattern:

// routes/example.ts
import { Router } from 'express';
import { MOCK_DATA } from '../data/mockData.js';

const router = Router();

router.get('/', (req, res) => {
  res.json({
    success: true,
    data: MOCK_DATA,
    timestamp: new Date().toISOString(),
  });
});

export default router;

Mock Data (data/mockData.ts)

Contains all demo data:

  • MOCK_THREATS - 4 sample threats
  • MOCK_ALERTS - 5 sample alerts
  • MOCK_SENSORS - 12 sensors (cameras, radars, drones, etc.)
  • generatePredictions() - Creates 24hr forecast

πŸ”΄ TEAM TODO: Replace this file's exports with database queries.


πŸ€– ML/AI Integration

Planned Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    ML SERVICE (Python)                   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚              OBJECT DETECTION                    β”‚    β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚    β”‚
β”‚  β”‚  β”‚          YOLOv8 (ultralytics)           β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Input: Video frames (640Γ—640)        β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Output: Bounding boxes + labels      β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Classes: person, vehicle, animal     β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Target: <100ms inference             β”‚    β”‚    β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚                          β–Ό                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚            PATTERN RECOGNITION                   β”‚    β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚    β”‚
β”‚  β”‚  β”‚             LSTM Network                 β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Input: Time-series sensor data       β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Window: 48 hours historical          β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Output: 24hr threat probability      β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Per-sector predictions               β”‚    β”‚    β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚                          β–Ό                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚           THREAT CLASSIFICATION                  β”‚    β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚    β”‚
β”‚  β”‚  β”‚      Ensemble (CNN + LSTM + RF)         β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Combines detection + patterns        β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Output: Threat level 1-5             β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Confidence score 0-100%              β”‚    β”‚    β”‚
β”‚  β”‚  β”‚  - Target: 95% accuracy                 β”‚    β”‚    β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚                                                          β”‚
β”‚  API Endpoints (FastAPI):                                β”‚
β”‚  POST /detect     - Object detection on frame           β”‚
β”‚  POST /predict    - Pattern prediction                  β”‚
β”‚  POST /classify   - Threat classification               β”‚
β”‚                                                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Integration Points

1. Video Feed β†’ Object Detection

Frontend: VideoFeed.tsx
    ↓ (captures frame)
Backend: POST /api/ml/detect
    ↓ (forwards to ML service)
ML Service: YOLOv8 inference
    ↓ (returns detections)
Frontend: Renders bounding boxes

2. Sensor Data β†’ Pattern Recognition

Sensors: Motion, thermal, radar data
    ↓ (collected over 48hrs)
Backend: Aggregates time-series
    ↓ (sends to ML)
ML Service: LSTM prediction
    ↓ (24hr forecast)
Frontend: PredictionChart displays

3. Threat Classification

Detections + Patterns + Context
    ↓ (combined features)
ML Service: Ensemble classifier
    ↓ (threat level 1-5)
Backend: Creates alert if level β‰₯ 3
    ↓ (WebSocket broadcast)
Frontend: AlertsFeed updates

Where to Add ML Code

Create: ml/ directory at project root:

mkdir -p ml/{models,inference,training}
touch ml/requirements.txt
touch ml/Dockerfile
touch ml/inference/object_detection.py
touch ml/inference/pattern_recognition.py
touch ml/inference/threat_classifier.py

Recommended ML requirements.txt:

torch>=2.0.0
ultralytics>=8.0.0  # YOLOv8
tensorflow>=2.13.0  # LSTM
scikit-learn>=1.3.0 # Random Forest
fastapi>=0.100.0    # API server
uvicorn>=0.23.0     # ASGI server
opencv-python>=4.8.0
numpy>=1.24.0

πŸ”„ Data Flow

Real-time Alert Flow

1. Sensor detects anomaly
   β”‚
2. ML classifies threat (Level 1-5)
   β”‚
3. Backend creates Alert object
   β”‚
4. WebSocket broadcasts 'alert:new'
   β”‚
5. Frontend useAlerts hook receives
   β”‚
6. AlertsFeed re-renders with new alert
   β”‚
7. Operator acknowledges via UI
   β”‚
8. PATCH /api/alerts/:id/acknowledge
   β”‚
9. Alert status updated to 'acknowledged'

Dashboard Refresh Cycle

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Every 5 seconds                   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1. Dashboard.tsx useEffect triggers        β”‚
β”‚ 2. Simulated stats fluctuation (demo)      β”‚
β”‚ 3. StatsCards re-render with new values    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Every 20 seconds                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1. useAlerts hook generates demo alert     β”‚
β”‚ 2. AlertsFeed prepends new alert           β”‚
β”‚ 3. Notification count updates              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           WebSocket (real-time)             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1. Backend alertSimulator fires            β”‚
β”‚ 2. Socket.io emits 'alert:new'             β”‚
β”‚ 3. All connected clients receive           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“Š Current Progress

βœ… Completed

Component Description Files
Project Structure Monorepo with frontend/backend All directories
Frontend Core Vite + React + TypeScript package.json, configs
Tailwind Theme Custom military dark theme tailwind.config.js
Navbar Top navigation with clock, status Navbar.tsx
Sidebar Collapsible nav with system status Sidebar.tsx
Dashboard Main layout composing all widgets Dashboard.tsx
Stats Cards 4 metric cards with animations StatsCard.tsx
Threat Map Leaflet map with sensors/threats ThreatMap.tsx
Video Feed Simulated camera with detections VideoFeed.tsx
Alerts Feed Real-time alert list AlertsFeed.tsx
Prediction Chart 24-hour forecast chart PredictionChart.tsx
Type Definitions All TypeScript interfaces types/index.ts
API Client Axios with interceptors api/index.ts
Alerts Hook Real-time alert state hooks/useAlerts.ts
Backend Server Express with Socket.io server.ts
API Routes All 6 endpoints routes/*.ts
Mock Data Demo data for all entities data/mockData.ts
Alert Simulator WebSocket demo broadcaster realtime/alertSimulator.ts
Docker Setup Frontend + Backend containers Dockerfile Γ— 2
Docker Compose Orchestration config docker-compose.yml
Documentation This handbook README.md

❌ Not Started (Team TODO)

Component Description Priority
Authentication JWT login system πŸ”΄ High
Database PostgreSQL + Prisma πŸ”΄ High
ML Service Python + YOLOv8 πŸ”΄ High
Real Sensors Actual data sources πŸ”΄ High
Pattern LSTM Time-series prediction 🟑 Medium
Ensemble Classifier Threat level model 🟑 Medium
User Management Roles and permissions 🟑 Medium
Audit Logging Action tracking 🟑 Medium
Additional Pages Threats, Operations, etc. 🟒 Low
Mobile Responsive Tablet/phone layouts 🟒 Low

πŸš€ Getting Started

Prerequisites

  • Node.js 20+ (LTS recommended)
  • npm 9+ or yarn
  • Docker (for containerized deployment)
  • Python 3.10+ (for ML, when implemented)

Development Setup

1. Clone Repository

git clone <repository-url>
cd vigilance-dashboard

2. Install Dependencies

# Frontend
cd frontend
npm install

# Backend (new terminal)
cd ../backend
npm install

3. Start Development Servers

Terminal 1 - Backend:

cd backend
npm run dev
# βœ… Running at http://localhost:3001

Terminal 2 - Frontend:

cd frontend
npm run dev
# βœ… Running at http://localhost:5173

4. Open Dashboard

Navigate to http://localhost:5173 in your browser.


🐳 Deployment

Docker Compose (Recommended)

# Build and start all services
docker-compose up --build

# Access:
# - Frontend: http://localhost:3000
# - Backend:  http://localhost:3001

Manual Docker Build

# Build frontend
cd frontend
docker build -t vigilance-frontend .

# Build backend
cd ../backend
docker build -t vigilance-backend .

# Run
docker run -p 3000:80 vigilance-frontend
docker run -p 3001:3001 vigilance-backend

Environment Variables

Copy .env.example to .env:

# Backend
PORT=3001
NODE_ENV=production
CORS_ORIGIN=http://localhost:3000

# Database (TODO)
# DATABASE_URL=postgresql://...

# Auth (TODO)
# JWT_SECRET=your-secret

πŸ“‘ API Reference

Base URL

  • Development: http://localhost:3001/api
  • Production: Configure via environment

Endpoints

Health Check

GET /api/health
Response: { success: true, data: { status: "healthy" } }

Threats

GET /api/threats
GET /api/threats/active
GET /api/threats/:id
Response: { success: true, data: Threat[] }

Alerts

GET /api/alerts?page=1&limit=20
GET /api/alerts/:id
PATCH /api/alerts/:id/acknowledge
Response: { success: true, data: Alert[], pagination: {...} }

Sensors

GET /api/sensors
GET /api/sensors/:id
GET /api/sensors/sector/:sector
GET /api/sensors/stats
Response: { success: true, data: Sensor[] }

Predictions

GET /api/predictions
GET /api/predictions/sector/:sector
Response: { success: true, data: SectorPrediction[] }

System Status

GET /api/status
Response: { success: true, data: SystemStatus }

WebSocket Events

// Client connection
socket.on('connected', (msg) => console.log(msg));

// New alert broadcast
socket.on('alert:new', (alert) => {
  // Update UI with new alert
});

// Subscribe to specific feed
socket.emit('subscribe', 'alerts');

πŸ“ Code Conventions

File Naming

  • Components: PascalCase.tsx (e.g., AlertsFeed.tsx)
  • Hooks: camelCase.ts with use prefix (e.g., useAlerts.ts)
  • Routes: lowercase.ts (e.g., alerts.ts)
  • Types: index.ts in types/ directory

Component Structure

/**
 * =============================================================================
 * VIGILANCE DASHBOARD - Component Name
 * =============================================================================
 * 
 * Description of what this component does.
 * 
 * Props:
 * - propName: description
 * 
 * TODO: Future improvements
 * =============================================================================
 */

import React from 'react';

interface ComponentProps {
  // Props interface
}

const Component: React.FC<ComponentProps> = (props) => {
  // Implementation
};

export default Component;

TODO Markers

Use these markers for team handoff:

// TODO: Description of what needs to be done
// TODO: Replace mock data with real API
// TODO: Integrate YOLOv8 classification

πŸ”§ Troubleshooting

Common Issues

Frontend won't start

# Clear node_modules and reinstall
rm -rf node_modules package-lock.json
npm install

Backend port already in use

# Find and kill process on port 3001
lsof -i :3001
kill -9 <PID>

Docker build fails

# Clean Docker cache
docker system prune -a
docker-compose build --no-cache

TypeScript errors after editing types

# Restart TypeScript server in VS Code
Cmd+Shift+P β†’ "TypeScript: Restart TS Server"

πŸ“ž Team Contacts

Role Responsibility
Frontend Lead Dashboard UI, React components
Backend Lead API routes, WebSocket, database
ML Engineer YOLOv8, LSTM, classification models
DevOps Docker, deployment, CI/CD

πŸ“„ License

Internal Project - Not for Public Distribution


Built for the Vigilance Team πŸ›‘οΈ

About

A comprehensive command center dashboard for defense intelligence and border surveillance operations

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 91.9%
  • CSS 3.4%
  • JavaScript 2.3%
  • Dockerfile 1.6%
  • HTML 0.8%