Veermata Jijabai Technological Institute (VJTI)
EcoWatch is an AI-powered municipal & campus waste intelligence system engineered for Veermata Jijabai Technological Institute (VJTI). It transitions campus environmental stewardship from reactive, uncoordinated collections to an automated, data-driven closed-loop workflow.
By pairing Google Gemini Multimodal Vision, Supabase Realtime WebSockets, 3D Spatial GIS (MapLibre GL), and Human-Computer Interaction (HCI) best practices, EcoWatch provides:
- Automated Verification: Zero-shot AI visual inspection of bin fill levels and after-cleaning proof-of-work.
- Student Identity Gatekeeper: OCR-based validation of official VJTI Student ID cards and
@vjti.ac.indomain verification. - Explainable Spatial Intelligence: Maximum coverage optimization with 3D ghost pins, explainability cards, and direct-manipulation what-if simulation sliders.
- Inclusive Worker Ergonomics: Hands-free bilingual push-to-talk voice assistant (English & เคนเคฟเคเคฆเฅ) and color-blind safe triple-redundancy markers.
- Official VJTI Email Validation: Client and server-side verification enforcing
@vjti.ac.inor departmental subdomains (@it.vjti.ac.in). - 3-Step Registration Pipeline:
- Account Information: Name, official email, and credentials.
- Live ID Card Scan: WebRTC camera stream with visual framing guides (or photo upload).
- AI Diagnostic Review ("Is this you?"): Gemini Vision OCR extracts the 9-digit roll number (e.g.
241080023), degree (B. Tech), department (Information Technology), DOB, and validity year (2028), checking against institutional markers (ESTD 1887, vertical redVJTIbanner).
- Role Isolation: Only students register publicly; sanitation staff and facility administrators are provisioned via administrative invitation.
-
Unbiasing Campus Demand Data:
- "Report Bin Fill": Standard visual fill inspection of existing bins.
- "Overflow Outside": Flags capacity strain when garbage spills outside the container.
- "Request Bin Here": Enables students to drop a GPS pin in unserviced areas, signaling demand hotspots where no bin currently exists.
-
Explainable Ghost Pins on 3D Map:
- The campus is discretized into
$20\text{m} \times 20\text{m}$ grid cells scored with recency decay:$$D_k = \sum (\text{fill} \times W_{\text{decay}}) + W_{\text{prior}} + N_{\text{requests}} \times 2.0$$ - Proposed bin locations appear as pulsing ghost pins with plain-language explainability rationale:
"Add 2 bins near Cafeteria: 16 overflow reports in last 10 days, peak 12:30โ2:15 PM, nearest bin is 82m away."
- The campus is discretized into
-
Direct-Manipulation What-If Simulator:
- Facility managers can adjust Bin Budget (
$1 \leftrightarrow 5$ bins) and Walk Radius ($30\text{m} \leftrightarrow 70\text{m}$ ) sliders to view real-time coverage projections ($62% - 98%$ ). - One-click "Approve & Deploy" commits the proposed bin directly into production.
- Facility managers can adjust Bin Budget (
- Situational Impairment Design: Field sanitation workers wear heavy gloves, carry tools, and operate under bright outdoor sunlight.
- Push-to-Talk Ergonomics: A large full-screen button avoids false triggers in noisy environments.
-
Bimodal Speech Recognition & Synthesis:
- Recognizes commands in English and Hindi (
hi-IN/en-IN):-
"เค
เคเคฒเคพ เคธเฅเคเฅเคช" / "Next stop"
$\rightarrow$ Announces nearest receptacle, location, and fill percentage. -
"เคเคพเคฎ เคถเฅเคฐเฅ เคเคฐเฅ" / "Start task"
$\rightarrow$ Commences active cleaning. -
"เคธเคซเคพเค เคนเฅ เคเค" / "Verify cleaning"
$\rightarrow$ Automatically triggers the verification camera. -
"เคเคฟเคคเคจเฅ เคเคพเคฎ เคฌเคพเคเฅ เคนเฅเค" / "How many tasks"
$\rightarrow$ Reads aloud pending tasks in queue.
-
"เค
เคเคฒเคพ เคธเฅเคเฅเคช" / "Next stop"
- Generates spoken voice responses via browser
speechSynthesis.
- Recognizes commands in English and Hindi (
- Replaced ambiguous shades of green with high-contrast, color-blind safe Viridis/Tol semantics with geometric shape redundancy:
- ๐ข Low / Normal Severity: Smooth Circle (
โ) in Forest Green (#15803d). - ๐ก Medium Urgency: Warning Diamond / Triangle (
โ) in Amber Orange (#d97706). - ๐ด Critical Overflow: Urgent Octagon with exclamation mark (
๐ !) in Crimson Red (#dc2626). - ๐ฃ AI Proposed Site: Pulsing Dashed Marker (
๐) in Indigo (#6366f1).
- ๐ข Low / Normal Severity: Smooth Circle (
-
Entry Gate: Gemini Vision estimates fill percentage (
$0% - 100%$ ) and classifies waste type (Plastic, Food Waste, Mixed). If$< 30%$ , the report is rejected to prevent spam. -
Exit Gate: Upon cleaning, workers must submit an after-cleaning photo. Gemini inspects the image; if residual waste exceeds
$30%$ , the task completion is blocked with actionable feedback ("Bin is 45% full. Must be less than 30% to be considered clean").
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PRESENTATION LAYER โ
โ React 18 โข Vite โข Tailwind CSS (Editorial Theme) โข Lucide Icons โ
โ MapLibre GL (3D Campus Twin) โข Recharts (Velocity & Sector Trends) โ
โ Bilingual Engine (English & เคนเคฟเคเคฆเฅ) โข LanguageToggle Component โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ APPLICATION LOGIC โ
โ โข AuthContext (Role-Based Access: user, worker, admin) โ
โ โข LanguageContext (Persistence, Translations & Speech Synthesis) โ
โ โข aiService.js (Gemini 3.5 Flash Lite OCR & Cleanliness Audit) โ
โ โข predictionEngine.js (Temporal Pattern Grouping & Fill Forecasting) โ
โ โข routeOptimizer.js (Haversine & Priority-Weighted TSP Heuristic) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ BACKEND-AS-A-SERVICE (SUPABASE) โ
โ โข PostgreSQL DB with PostGIS extensions & UUIDs โ
โ โข Row-Level Security (RLS) policies โ
โ โข Realtime WebSocket Channels (live task & report push) โ
โ โข Object Storage (waste-images bucket for evidence images) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
EcoWatch/
โโโ public/ # Static assets
โโโ src/
โ โโโ components/ # Reusable UI modules
โ โ โโโ LanguageToggle.jsx # EN | เคนเคฟเคเคฆเฅ switch pill
โ โ โโโ ProtectedRoute.jsx # Role-based route guard
โ โโโ contexts/ # Global reactive state
โ โ โโโ AuthContext.jsx # Supabase authentication & user profile
โ โ โโโ LanguageContext.jsx # Bilingual translations & speech engine
โ โโโ lib/ # Computational engines
โ โ โโโ aiService.js # Google Gemini Vision OCR & verification
โ โ โโโ predictionEngine.js # Linear regression & demand patterns
โ โ โโโ routeOptimizer.js # Haversine distance & TSP heuristics
โ โ โโโ supabase.js # Supabase client initialization
โ โโโ pages/ # Role dashboards & views
โ โ โโโ AdminDashboard.jsx # Command Center & 3D Spatial Simulator
โ โ โโโ Landing.jsx # Public platform homepage
โ โ โโโ Login.jsx # Account authentication
โ โ โโโ Register.jsx # 3-step VJTI ID card registration
โ โ โโโ UserDashboard.jsx # Citizen reporter interface
โ โ โโโ WorkerDashboard.jsx # Field worker itinerary & voice assistant
โ โโโ App.jsx # Router definition & providers
โ โโโ index.css # Tailwind custom editorial theme styles
โ โโโ main.jsx # React root mount
โโโ .env.example # Environment template
โโโ package.json # Node dependencies & build scripts
โโโ supabase_schema.sql # PostgreSQL database schema & triggers
โโโ historical_data.sql # Seed data for campus demonstration
โโโ vite.config.js # Vite build configuration
- Node.js (v18.0 or higher)
- npm or yarn
- Active Supabase project
- Google AI Studio API Key (Gemini)
git clone https://github.com/your-username/EcoWatch.git
cd EcoWatchnpm installCreate a .env file in the project root:
# Supabase Configuration
VITE_SUPABASE_URL=https://your-project-id.supabase.co
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
# Google Gemini API Key
VITE_GEMINI_API_KEY=your_gemini_api_key
# VJTI Campus Coordinates (Defaults to VJTI Matunga)
VITE_CAMPUS_CENTER_LAT=19.0222
VITE_CAMPUS_CENTER_LNG=72.8561- In your Supabase Dashboard, open the SQL Editor.
- Run the contents of
supabase_schema.sqlto provision tables, triggers, and Row-Level Security (RLS) policies. - (Optional) Run
historical_data.sqlto populate sample VJTI bins and 5-day historical report records. - Create a public storage bucket named
waste-imagesunder Storage.
npm run devOpen your browser and navigate to http://localhost:3000/.
npm run build| Persona | Primary Role | Accessible Routes | Key Actions |
|---|---|---|---|
| Student / Citizen Reporter | Campus Community | /user |
โข Upload photo for AI fill inspection โข Report overflow outside container โข Drop GPS pin to request a new bin โข Track personal report log |
| Field Sanitation Worker | Housekeeping Staff | /worker |
โข View priority-ordered route sequence (Stops 1, 2...) โข Use hands-free push-to-talk voice assistant (en/hi) โข Accept, start, and finalize tasks โข Submit photo for strict AI cleaning verification |
| Facility Administrator | Sustainability Director | /admin |
โข Inspect 3D campus digital twin with severity pins โข Adjust What-If sliders (Budget & Walk Radius) โข Review explainable AI ghost pins & deploy new bins โข Formulate and batch-dispatch daily cleaning schedules |
EcoWatch was designed from the ground up incorporating foundational HCI laws and usability heuristics:
-
Nielsen's 10 Usability Heuristics:
-
Visibility of System Status: Real-time spinners, animated fill level meters, live GPS coordinates, and status chips (
SYS_OK,Live Grid). - Match Between System & Real World: Physical campus terminology ("Field Operations", "Stop 1", "Cafeteria", "Library") and real-world 3D spatial alignment.
- User Control & Freedom: Clear emergency exits (Cancel / Retake buttons) at every stage of image capture and multi-parameter sorting dropdowns.
-
Error Prevention: Client-side file size constraints (
$< 5\text{MB}$ ), automatic GPS fallback to campus center, and duplicate task guards. - Recognition over Recall: Automatic nearest bin identification via GPS distance calculations; side-by-side photographic review.
-
Visibility of System Status: Real-time spinners, animated fill level meters, live GPS coordinates, and status chips (
-
Fitts's Law ($T = a + b \log_2(2D/W)$):
- Maximized touch target widths for mobile field staff buttons ("Hold to Speak", "Capture Image", "Commence Work").
-
Hick-Hyman Law ($T = b \log_2(n + 1)$):
- Role-partitioned dashboards reduce decision fatigue by showing only immediate relevant actions per user type.
-
Norman's Design Principles:
- Clear affordances on buttons, natural mapping of 3D campus vectors, and closed-loop auditory/visual feedback.
This project is developed for educational and academic research purposes at Veermata Jijabai Technological Institute (VJTI). Distributed under the MIT License.