How omkarchavan415/cleantrack works
This is a garbage-truck tracking application for administrators, drivers, and residents. A driver authenticates, joins their authorized truck channel, and streams GPS fixes; the server records positions, broadcasts map updates, and checks household geofences to send cooldown-limited resident alerts. Admin capabilities include managing drivers, trucks, and households and reviewing truck history and household alerts. The graph reflects the server and API flow shown in excerpts; frontend behavior is not sampled, so only static serving is shown. Also, the README supplied no capability documentation.
Main entry points: server.js Application server · repo.js Data repository · auth.js Authentication API · households.js Household API
Components 24
API and access
- Authentication API
backend/routes/auth.js - Household API
backend/routes/households.js - Truck API
backend/routes/trucks.js - Role authorization
backend/middleware/auth.js - JWT tokens
backend/utils/jwt.js - Async route wrapper
backend/utils/wrapasync.js
Live tracking
- Application server
backend/server.js
Geofences and alerts
- Geofence evaluation
backend/geofenceEngine.js - Distance calculation
backend/utils/geo.js
Persistence
- Data repository
backend/db/repo.js - Mongo connection
backend/db/index.js - MongoDB
- Truck records
backend/models/Truck.js - Position history
backend/models/TruckPosition.js - Household records
backend/models/Household.js - Alert records
backend/models/Alert.js - User records
backend/models/User.js
Web clients
- Admin interface
backend/public/admin.html - Driver interface
backend/public/driver.html - Resident interface
backend/public/resident.html - Public map interface
backend/public/index.html
Other components
- Administrator
- Driver
- Resident
Connections 31
- Application server → Authentication API: mounts routes
backend/server.js - Application server → Household API: mounts routes
backend/server.js - Application server → Truck API: mounts routes
backend/server.js - Application server → Mongo connection: connects database
backend/server.js - Application server → Data repository: sweeps offline
backend/server.js - Application server → Data repository: records positions
backend/server.js - Application server → Geofence evaluation: checks geofences
backend/server.js - Application server → JWT tokens: verifies socket token
backend/server.js - Application server → Admin interface: serves static files
backend/server.js - Application server → Driver interface: serves static files
backend/server.js - Application server → Resident interface: serves static files
backend/server.js - Application server → Public map interface: serves static files
backend/server.js - Authentication API → User records: looks up users
backend/routes/auth.js - Authentication API → Data repository: registers trucks
backend/routes/auth.js - Authentication API → JWT tokens: signs tokens
backend/routes/auth.js - Authentication API → Role authorization: protects routes
backend/routes/auth.js - Authentication API → Async route wrapper: wraps handlers
backend/routes/auth.js - Household API → Data repository: manages households
backend/routes/households.js - Household API → Role authorization: protects routes
backend/routes/households.js - Household API → Async route wrapper: wraps handlers
backend/routes/households.js - Truck API → Data repository: reads truck data
backend/routes/trucks.js - Truck API → Role authorization: protects routes
backend/routes/trucks.js - Truck API → Async route wrapper: wraps handlers
backend/routes/trucks.js - Role authorization → JWT tokens: verifies tokens
backend/middleware/auth.js - Geofence evaluation → Data repository: loads and records alerts
backend/geofenceEngine.js - Geofence evaluation → Distance calculation: measures distance
backend/geofenceEngine.js - Data repository → Truck records: queries and updates
backend/db/repo.js - Data repository → Position history: stores history
backend/db/repo.js - Data repository → Household records: queries households
backend/db/repo.js - Data repository → Alert records: stores alert records
backend/db/repo.js - Mongo connection → MongoDB: connects
backend/db/index.js