# vidya0110/sih_2026 architecture

> Architecture diagram of the GitHub repository vidya0110/sih_2026, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vidya0110/sih_2026
- Repository: https://github.com/vidya0110/sih_2026

## Overview

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: [`backend/app/main.py`](https://github.com/vidya0110/sih_2026/blob/main/backend/app/main.py) (FastAPI application), [`backend/app/db/session.py`](https://github.com/vidya0110/sih_2026/blob/main/backend/app/db/session.py) (Relational records), [`frontend/src/App.tsx`](https://github.com/vidya0110/sih_2026/blob/main/frontend/src/App.tsx) (MandiQ PWA), [`frontend/src/services/syncWorker.ts`](https://github.com/vidya0110/sih_2026/blob/main/frontend/src/services/syncWorker.ts) (WAL sync worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["PWA client"]
  node_pwa["MandiQ PWA<br/>[App.tsx]"]
  node_stations["Operational stations"]
  node_localdb[("Offline WAL<br/>[dexie.ts]")]
  node_syncworker["WAL sync worker<br/>[syncWorker.ts]"]
end

subgraph group_api["API and identity"]
  node_apiapp["FastAPI application<br/>[main.py]"]
  node_auth["Authentication API<br/>[auth.py]"]
  node_authservice["Auth and RBAC<br/>[auth_service.py]"]
  node_admin["Mandi administration<br/>[admin.py]"]
end

subgraph group_yard["Yard operations"]
  node_reservations["Slot reservations<br/>[slots.py]"]
  node_gate["Gate arrival<br/>[gate.py]"]
  node_quality["Crop assessment<br/>[quality.py]"]
  node_queue["Dynamic queue<br/>[queue_manager.py]"]
  node_dcdq["DCDQ scoring<br/>[dcdq_engine.py]"]
  node_weighbridge["Weight capture<br/>[weighbridge.py]"]
end

subgraph group_settlement["Settlement and sync"]
  node_billing["J-form billing<br/>[billing.py]"]
  node_payout["DBT payout staging<br/>[payout.py]"]
  node_walapi["WAL ingestion<br/>[sync.py]"]
  node_ussd["USSD access<br/>[ussd.py]"]
end

subgraph group_platform["State and integrations"]
  node_db[("Relational records<br/>[session.py]")]
  node_redis[("Redis queue and locks")]
  node_uidai["UIDAI identity service"]
  node_uidai_adapter["Identity adapter<br/>[uidai_adapter.py]"]
  node_pfms["PFMS payout service"]
  node_pfms_adapter["Payout adapter<br/>[pfms_adapter.py]"]
end

node_farmers(("Farmers and operators"))

node_farmers -->|"use"| node_pwa
node_pwa -->|"show stations"| node_stations
node_pwa -->|"record offline"| node_localdb
node_pwa -->|"trigger sync"| node_syncworker
node_syncworker -->|"read and update WAL"| node_localdb
node_syncworker -->|"submit mutations"| node_apiapp
node_apiapp -->|"mount routes"| node_auth
node_apiapp -->|"mount routes"| node_reservations
node_apiapp -->|"mount routes"| node_gate
node_apiapp -->|"mount routes"| node_quality
node_apiapp -->|"mount routes"| node_weighbridge
node_apiapp -->|"mount routes"| node_billing
node_apiapp -->|"mount routes"| node_payout
node_apiapp -->|"mount routes"| node_walapi
node_apiapp -->|"mount routes"| node_ussd
node_apiapp -->|"mount routes"| node_admin
node_auth -->|"authenticate"| node_authservice
node_authservice -->|"read users"| node_db
node_reservations -->|"read and write"| node_db
node_gate -->|"record arrivals"| node_db
node_quality -->|"record assessments"| node_db
node_quality -->|"update admission"| node_queue
node_queue -->|"calculate priority"| node_dcdq
node_queue -->|"rank vehicles"| node_redis
node_weighbridge -->|"record weights"| node_db
node_billing -->|"read procurement"| node_db
node_payout -->|"stage settlement"| node_db
node_walapi -->|"apply synced mutations"| node_db
node_auth -.->|"verify identity"| node_uidai_adapter
node_uidai_adapter -.->|"request verification"| node_uidai
node_payout -.->|"dispatch payout"| node_pfms_adapter
node_pfms_adapter -.->|"submit settlement"| node_pfms
node_ussd -->|"access procurement data"| node_db
node_admin -->|"manage operations"| node_db

click node_pwa "https://github.com/vidya0110/sih_2026/blob/main/frontend/src/App.tsx"
click node_stations "https://github.com/vidya0110/sih_2026/tree/main/frontend/src/components"
click node_localdb "https://github.com/vidya0110/sih_2026/blob/main/frontend/src/db/dexie.ts"
click node_syncworker "https://github.com/vidya0110/sih_2026/blob/main/frontend/src/services/syncWorker.ts"
click node_apiapp "https://github.com/vidya0110/sih_2026/blob/main/backend/app/main.py"
click node_auth "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/auth.py"
click node_authservice "https://github.com/vidya0110/sih_2026/blob/main/backend/app/services/auth_service.py"
click node_reservations "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/slots.py"
click node_gate "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/gate.py"
click node_quality "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/quality.py"
click node_queue "https://github.com/vidya0110/sih_2026/blob/main/backend/app/services/queue_manager.py"
click node_dcdq "https://github.com/vidya0110/sih_2026/blob/main/backend/app/services/dcdq_engine.py"
click node_weighbridge "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/weighbridge.py"
click node_billing "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/billing.py"
click node_payout "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/payout.py"
click node_walapi "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/sync.py"
click node_ussd "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/ussd.py"
click node_admin "https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/admin.py"
click node_db "https://github.com/vidya0110/sih_2026/blob/main/backend/app/db/session.py"
click node_uidai_adapter "https://github.com/vidya0110/sih_2026/blob/main/backend/app/adapters/uidai_adapter.py"
click node_pfms_adapter "https://github.com/vidya0110/sih_2026/blob/main/backend/app/adapters/pfms_adapter.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_pwa,node_stations,node_localdb,node_syncworker toneBlue
class node_apiapp,node_auth,node_authservice,node_admin toneAmber
class node_reservations,node_gate,node_quality,node_queue,node_dcdq,node_weighbridge toneMint
class node_billing,node_payout,node_walapi,node_ussd toneRose
class node_db,node_redis,node_uidai,node_uidai_adapter,node_pfms,node_pfms_adapter,node_farmers toneIndigo
```

## Components

### PWA client

- [MandiQ PWA](https://github.com/vidya0110/sih_2026/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Operational stations](https://github.com/vidya0110/sih_2026/tree/main/frontend/src/components): `frontend/src/components`
- [Offline WAL](https://github.com/vidya0110/sih_2026/blob/main/frontend/src/db/dexie.ts): `frontend/src/db/dexie.ts`
- [WAL sync worker](https://github.com/vidya0110/sih_2026/blob/main/frontend/src/services/syncWorker.ts): `frontend/src/services/syncWorker.ts`

### API and identity

- [FastAPI application](https://github.com/vidya0110/sih_2026/blob/main/backend/app/main.py): `backend/app/main.py`
- [Authentication API](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/auth.py): `backend/app/routers/auth.py`
- [Auth and RBAC](https://github.com/vidya0110/sih_2026/blob/main/backend/app/services/auth_service.py): `backend/app/services/auth_service.py`
- [Mandi administration](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/admin.py): `backend/app/routers/admin.py`

### Yard operations

- [Slot reservations](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/slots.py): `backend/app/routers/slots.py`
- [Gate arrival](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/gate.py): `backend/app/routers/gate.py`
- [Crop assessment](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/quality.py): `backend/app/routers/quality.py`
- [Dynamic queue](https://github.com/vidya0110/sih_2026/blob/main/backend/app/services/queue_manager.py): `backend/app/services/queue_manager.py`
- [DCDQ scoring](https://github.com/vidya0110/sih_2026/blob/main/backend/app/services/dcdq_engine.py): `backend/app/services/dcdq_engine.py`
- [Weight capture](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/weighbridge.py): `backend/app/routers/weighbridge.py`

### Settlement and sync

- [J-form billing](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/billing.py): `backend/app/routers/billing.py`
- [DBT payout staging](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/payout.py): `backend/app/routers/payout.py`
- [WAL ingestion](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/sync.py): `backend/app/routers/sync.py`
- [USSD access](https://github.com/vidya0110/sih_2026/blob/main/backend/app/routers/ussd.py): `backend/app/routers/ussd.py`

### State and integrations

- [Relational records](https://github.com/vidya0110/sih_2026/blob/main/backend/app/db/session.py): `backend/app/db/session.py`
- **Redis queue and locks**
- **UIDAI identity service**
- [Identity adapter](https://github.com/vidya0110/sih_2026/blob/main/backend/app/adapters/uidai_adapter.py): `backend/app/adapters/uidai_adapter.py`
- **PFMS payout service**
- [Payout adapter](https://github.com/vidya0110/sih_2026/blob/main/backend/app/adapters/pfms_adapter.py): `backend/app/adapters/pfms_adapter.py`

### Other components

- **Farmers and operators**

## Connections

- 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
