How dhanush-10-1/spdrha works
SPDRHA is a road-hazard detection product: a phone gathers motion and GPS data, classifies sensor windows on-device, stores non-normal detections, and synchronizes them to a FastAPI backend. The backend also exposes anomaly and health APIs and has a separate model-training workflow. The README identifies the root app as active; sampled runtime excerpts are chiefly from the parallel irads-mobile app, so unsampled root-app and backend internals are represented only where the README or SOURCE INDEX supports them.
Main entry points: aiService.ts Inference and policy · main.py FastAPI application · anomalies.py Anomaly API · syncService.ts Upload and retry
Components 27
Mobile collection
- Active mobile app
App.tsx - Motion and GPS capture
src/sensors/SensorManager.ts - Sensor reading types
src/sensors/types.ts
On-device detection
- Window builder
src/ai/windowManager.ts - Inference and policy
src/ai/aiService.ts - TFLite inference
src/ai/tflite_inference.ts - Input normalization
src/ai/normalization.ts - Inference lifecycle
src/ai/inferenceLifecycle.ts - Persistence policy
src/ai/anomalyPersistencePolicy.ts
Persistence and sync
- Anomaly event store
src/storage/database.ts - Device identity
src/storage/deviceIdentity.ts - Upload and retry
src/storage/syncService.ts
Backend services
- FastAPI application
irads-backend/backend/main.py - Anomaly API
irads-backend/backend/routers/anomalies.py - Health API
irads-backend/backend/routers/health.py - Development auth
irads-backend/backend/routers/dev_auth.py - Backend database connection
irads-backend/backend/db/connection.py - Kafka producer
irads-backend/backend/kafka/producer.py - Anomaly consumer
irads-backend/consumer/anomaly_consumer.py - Consumer DB writer
irads-backend/consumer/db_writer.py
Model development
- Training preprocessing
irads-backend/ml/preprocessing - Training dataset
irads-backend/ml/training/dataset.py - Model training
irads-backend/ml/training/train.py - Training model
irads-backend/ml/training/model.py
Other components
- Phone user
- Phone sensors and GPS
- Backend HTTP API
Connections 26
- Phone user → Active mobile app: uses
README.md - Phone sensors and GPS → Motion and GPS capture: provides readings
README.md - Motion and GPS capture → Active mobile app: collects data for
App.tsx - Active mobile app → Inference and policy: submits readings
- Inference and policy → Window builder: builds windows
src/ai/aiService.ts - Inference and policy → TFLite inference: predicts with
src/ai/aiService.ts - TFLite inference → Input normalization: normalizes input
src/ai/tflite_inference.ts - Inference and policy → Inference lifecycle: manages inference
src/ai/aiService.ts - Inference and policy → Persistence policy: checks persistence
src/ai/aiService.ts - Inference and policy → Anomaly event store: saves hazards
src/ai/aiService.ts - Inference and policy → Device identity: gets device ID
src/ai/aiService.ts - Inference and policy → Upload and retry: starts sync
src/ai/aiService.ts - Upload and retry → Anomaly event store: reads and marks
src/storage/syncService.ts - Upload and retry → Backend HTTP API: posts events
src/storage/syncService.ts - Backend HTTP API → Anomaly API: sends events
README.md - FastAPI application → Anomaly API: registers router
irads-backend/backend/main.py - FastAPI application → Health API: registers router
irads-backend/backend/main.py - FastAPI application → Development auth: registers router
irads-backend/backend/main.py - FastAPI application → Backend database connection: opens and closes
irads-backend/backend/main.py - FastAPI application → Kafka producer: starts and stops
irads-backend/backend/main.py - Anomaly API → Backend database connection: accesses database
irads-backend/backend/routers/anomalies.py - Anomaly API → Kafka producer: uses producer
irads-backend/backend/routers/anomalies.py - Anomaly consumer → Consumer DB writer: delegates writes
- Training preprocessing → Training dataset: prepares data for
irads-backend/ml/training/dataset.py - Model training → Training dataset: uses dataset
irads-backend/ml/training/train.py - Model training → Training model: uses model
irads-backend/ml/training/train.py