How vidya0110/sih_2026 works
MandiQ is an offline-first APMC procurement and yard-queue platform. Farmers and operators use the PWA to reserve slots, record gate arrival, assess crop quality, advance a perishability-aware queue, capture weights, and stage billing and DBT payouts. The client retains mutations in IndexedDB and syncs them to the FastAPI API when connectivity returns. The README documents further identity, USSD, administration, and external-system capabilities. Sampled excerpts are partial, so some subsystem links reflect documented responsibilities rather than inspected call sites.
Main entry points: main.py FastAPI application · session.py Relational records · App.tsx MandiQ PWA · syncWorker.ts WAL sync worker
Components 25
PWA client
- MandiQ PWA
frontend/src/App.tsx - Operational stations
frontend/src/components - Offline WAL
frontend/src/db/dexie.ts - WAL sync worker
frontend/src/services/syncWorker.ts
API and identity
- FastAPI application
backend/app/main.py - Authentication API
backend/app/routers/auth.py - Auth and RBAC
backend/app/services/auth_service.py - Mandi administration
backend/app/routers/admin.py
Yard operations
- Slot reservations
backend/app/routers/slots.py - Gate arrival
backend/app/routers/gate.py - Crop assessment
backend/app/routers/quality.py - Dynamic queue
backend/app/services/queue_manager.py - DCDQ scoring
backend/app/services/dcdq_engine.py - Weight capture
backend/app/routers/weighbridge.py
Settlement and sync
- J-form billing
backend/app/routers/billing.py - DBT payout staging
backend/app/routers/payout.py - WAL ingestion
backend/app/routers/sync.py - USSD access
backend/app/routers/ussd.py
State and integrations
- Relational records
backend/app/db/session.py - Redis queue and locks
- UIDAI identity service
- Identity adapter
backend/app/adapters/uidai_adapter.py - PFMS payout service
- Payout adapter
backend/app/adapters/pfms_adapter.py
Other components
- Farmers and operators
Connections 34
- Farmers and operators → MandiQ PWA: use
- MandiQ PWA → Operational stations: show stations
- MandiQ PWA → Offline WAL: record offline
- MandiQ PWA → WAL sync worker: trigger sync
- WAL sync worker → Offline WAL: read and update WAL
- WAL sync worker → FastAPI application: submit mutations
- FastAPI application → Authentication API: mount routes
- FastAPI application → Slot reservations: mount routes
- FastAPI application → Gate arrival: mount routes
- FastAPI application → Crop assessment: mount routes
- FastAPI application → Weight capture: mount routes
- FastAPI application → J-form billing: mount routes
- FastAPI application → DBT payout staging: mount routes
- FastAPI application → WAL ingestion: mount routes
- FastAPI application → USSD access: mount routes
- FastAPI application → Mandi administration: mount routes
- Authentication API → Auth and RBAC: authenticate
- Auth and RBAC → Relational records: read users
- Slot reservations → Relational records: read and write
- Gate arrival → Relational records: record arrivals
- Crop assessment → Relational records: record assessments
- Crop assessment → Dynamic queue: update admission
- Dynamic queue → DCDQ scoring: calculate priority
- Dynamic queue → Redis queue and locks: rank vehicles
- Weight capture → Relational records: record weights
- J-form billing → Relational records: read procurement
- DBT payout staging → Relational records: stage settlement
- WAL ingestion → Relational records: apply synced mutations
- Authentication API → Identity adapter: verify identity
- Identity adapter → UIDAI identity service: request verification
- DBT payout staging → Payout adapter: dispatch payout
- Payout adapter → PFMS payout service: submit settlement
- USSD access → Relational records: access procurement data
- Mandi administration → Relational records: manage operations