# sohanyadav20/sichai_app architecture

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

- Interactive diagram: https://gitdiagram.com/sohanyadav20/sichai_app
- Repository: https://github.com/sohanyadav20/sichai_app

## Overview

This is a MERN irrigation-register application for tracking farmers, irrigation work, payments, and outstanding dues. Admins manage farmer records and enter or edit irrigation and payment data; farmers can look up their own record by phone. The React app calls the API client, which sends requests to the Express routes; those routes validate and calculate costs, summaries, and dashboard totals while using Mongoose models backed by MongoDB. The README documents the main capabilities; some UI and API implementation details are inferred from the available excerpts.

Main entry points: [`backend/routes/api.js`](https://github.com/sohanyadav20/sichai_app/blob/main/backend/routes/api.js) (Register API), [`frontend/src/App.jsx`](https://github.com/sohanyadav20/sichai_app/blob/main/frontend/src/App.jsx) (Register UI), [`backend/server.js`](https://github.com/sohanyadav20/sichai_app/blob/main/backend/server.js) (Express server), [`frontend/src/api.js`](https://github.com/sohanyadav20/sichai_app/blob/main/frontend/src/api.js) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web app"]
  node_app["Register UI<br/>[App.jsx]"]
  node_client["API client<br/>[api.js]"]
end

subgraph group_api["Backend API"]
  node_server["Express server<br/>[server.js]"]
  node_routes["Register API<br/>[api.js]"]
end

subgraph group_records["Domain records"]
  node_farmer_model["Farmer model<br/>[Farmer.js]"]
  node_entry_model["Irrigation entry<br/>[Entry.js]"]
  node_payment_model["Payment record<br/>[Payment.js]"]
end

subgraph group_storage["Persistence"]
  node_mongo[("MongoDB")]
end

node_admin(("Admin"))
node_farmer(("Farmer"))
node_whatsapp(("WhatsApp"))

node_admin -->|"manages records"| node_app
node_farmer -->|"looks up record"| node_app
node_app -->|"requests data"| node_client
node_client -->|"sends API requests"| node_routes
node_server -->|"mounts routes"| node_routes
node_server -->|"connects"| node_mongo
node_routes -->|"reads and writes"| node_farmer_model
node_routes -->|"reads and writes"| node_entry_model
node_routes -->|"reads and writes"| node_payment_model
node_farmer_model -->|"persists records"| node_mongo
node_entry_model -->|"persists entries"| node_mongo
node_payment_model -->|"persists payments"| node_mongo
node_app -.->|"opens due reminder"| node_whatsapp

click node_app "https://github.com/sohanyadav20/sichai_app/blob/main/frontend/src/App.jsx"
click node_client "https://github.com/sohanyadav20/sichai_app/blob/main/frontend/src/api.js"
click node_server "https://github.com/sohanyadav20/sichai_app/blob/main/backend/server.js"
click node_routes "https://github.com/sohanyadav20/sichai_app/blob/main/backend/routes/api.js"
click node_farmer_model "https://github.com/sohanyadav20/sichai_app/blob/main/backend/models/Farmer.js"
click node_entry_model "https://github.com/sohanyadav20/sichai_app/blob/main/backend/models/Entry.js"
click node_payment_model "https://github.com/sohanyadav20/sichai_app/blob/main/backend/models/Payment.js"

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_app,node_client toneBlue
class node_server,node_routes toneAmber
class node_farmer_model,node_entry_model,node_payment_model toneMint
class node_mongo toneRose
class node_admin,node_farmer,node_whatsapp toneIndigo
```

## Components

### Web app

- [Register UI](https://github.com/sohanyadav20/sichai_app/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [API client](https://github.com/sohanyadav20/sichai_app/blob/main/frontend/src/api.js): `frontend/src/api.js`

### Backend API

- [Express server](https://github.com/sohanyadav20/sichai_app/blob/main/backend/server.js): `backend/server.js`
- [Register API](https://github.com/sohanyadav20/sichai_app/blob/main/backend/routes/api.js): `backend/routes/api.js`

### Domain records

- [Farmer model](https://github.com/sohanyadav20/sichai_app/blob/main/backend/models/Farmer.js): `backend/models/Farmer.js`
- [Irrigation entry](https://github.com/sohanyadav20/sichai_app/blob/main/backend/models/Entry.js): `backend/models/Entry.js`
- [Payment record](https://github.com/sohanyadav20/sichai_app/blob/main/backend/models/Payment.js): `backend/models/Payment.js`

### Persistence

- **MongoDB**

### Other components

- **Admin**
- **Farmer**
- **WhatsApp**

## Connections

- Admin → Register UI: manages records
- Farmer → Register UI: looks up record
- Register UI → API client: requests data
- API client → Register API: sends API requests
- Express server → Register API: mounts routes
- Express server → MongoDB: connects
- Register API → Farmer model: reads and writes
- Register API → Irrigation entry: reads and writes
- Register API → Payment record: reads and writes
- Farmer model → MongoDB: persists records
- Irrigation entry → MongoDB: persists entries
- Payment record → MongoDB: persists payments
- Register UI → WhatsApp: opens due reminder
