# foridul35962/agrilink architecture

> Architecture diagram of the GitHub repository foridul35962/agrilink, 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/foridul35962/agrilink
- Repository: https://github.com/foridul35962/agrilink

## Overview

AgriLink is a bilingual agriculture marketplace connecting farmers, aratdars and retailers, with an admin moderation layer. Its main trading journey runs from a farmer’s product listing and auction, through aratdar bidding and order fulfillment, to aratdar inventory and retailer orders. Separate capabilities include member approval, crop recommendations, dashboards, reports and live notifications. The graph preserves these documented product areas; detailed wiring is shown only where the sampled source supports it.

Main entry points: [`server/src/app.js`](https://github.com/foridul35962/agrilink/blob/main/server/src/app.js) (Express API), [`server/src/controllers/product.controller.js`](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/product.controller.js) (Products and auctions), [`server/src/controllers/dashboard.controller.js`](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/dashboard.controller.js) (Role analytics), [`server/src/controllers/auth.controller.js`](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/auth.controller.js) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_users["Platform users"]
  node_farmer(("Farmer"))
  node_aratdar(("Aratdar"))
  node_retailer(("Retailer"))
  node_admin(("Admin"))
end

subgraph group_client["Web client"]
  node_authui["Sign in and registration"]
  node_farmerui["Farmer workflows"]
  node_aratdarui["Aratdar workflows"]
  node_retailerui["Retailer workflows"]
  node_adminui["Admin workflows"]
  node_cropui["Crop library"]
  node_marketui["Product marketplace"]
  node_inventoryui["Inventory marketplace"]
  node_notifyui["Notification centre"]
  node_authstate["Auth API client<br/>[authSlice.ts]"]
end

subgraph group_services["Marketplace services"]
  node_api["Express API<br/>[app.js]"]
  node_authroute["Auth routes<br/>[auth.route.js]"]
  node_authctrl["Authentication<br/>[auth.controller.js]"]
  node_productctrl["Products and auctions"]
  node_orderctrl["Order lifecycle"]
  node_inventoryctrl["Inventory"]
  node_cropctrl["Crop recommendations<br/>[crop.controller.js]"]
  node_adminctrl["Member approval"]
  node_reportctrl["Reports and moderation"]
  node_dashboardctrl["Role analytics"]
  node_notificationctrl["Notifications"]
end

subgraph group_state["Data and integrations"]
  node_usersdb[("User records<br/>[Users.model.js]")]
  node_requestsdb[("Pending registrations")]
  node_productsdb[("Product records<br/>[Product.model.js]")]
  node_auctiondb[("Auction and bids<br/>[auctions.model.js]")]
  node_ordersdb[("Order records<br/>[Order.model.js]")]
  node_inventorydb[("Inventory records<br/>[Inventory.model.js]")]
  node_cropsdb[("Crop rules<br/>[Crop.model.js]")]
  node_recommenddb[("Recommendation rules")]
  node_redis[("Redis cache and OTP<br/>[redis.js]")]
end

node_farmer -->|"uses"| node_farmerui
node_aratdar -->|"uses"| node_aratdarui
node_retailer -->|"uses"| node_retailerui
node_admin -->|"uses"| node_adminui
node_farmer -->|"lists products"| node_marketui
node_aratdar -->|"places bids"| node_marketui
node_retailer -->|"places orders"| node_inventoryui
node_admin -->|"manages crops"| node_cropui
node_admin -->|"approves members"| node_adminui
node_authui -->|"submits credentials"| node_authstate
node_authstate -->|"HTTP requests"| node_api
node_api -->|"mounts"| node_authroute
node_authroute -->|"dispatches"| node_authctrl
node_authctrl -->|"reads and writes"| node_usersdb
node_authctrl -->|"creates requests"| node_requestsdb
node_authctrl -->|"stores OTP state"| node_redis
node_api --> node_adminctrl
node_api --> node_reportctrl
node_api --> node_productctrl
node_api --> node_orderctrl
node_api --> node_cropctrl
node_api --> node_inventoryctrl
node_api --> node_dashboardctrl
node_api --> node_notificationctrl
node_productctrl -->|"reads and writes"| node_productsdb
node_productctrl -->|"uses auctions"| node_auctiondb
node_productctrl -->|"creates orders"| node_ordersdb
node_productctrl -->|"reads cache"| node_redis
node_orderctrl -->|"reads and writes"| node_ordersdb
node_orderctrl -->|"updates stock"| node_inventorydb
node_inventoryctrl -->|"reads and writes"| node_inventorydb
node_inventoryctrl -->|"creates orders"| node_ordersdb
node_cropctrl -->|"reads and writes"| node_cropsdb
node_cropctrl -->|"reads rules"| node_recommenddb
node_cropctrl -->|"caches weather"| node_redis
node_dashboardctrl -->|"reads cache"| node_redis
node_dashboardctrl -->|"queries stats"| node_productsdb
node_dashboardctrl -->|"queries stats"| node_auctiondb
node_dashboardctrl -->|"queries stats"| node_ordersdb

click node_authui "https://github.com/foridul35962/agrilink/tree/main/client/src/app/(auth)"
click node_farmerui "https://github.com/foridul35962/agrilink/tree/main/client/src/app/(farmer)"
click node_aratdarui "https://github.com/foridul35962/agrilink/tree/main/client/src/app/aratdar"
click node_retailerui "https://github.com/foridul35962/agrilink/tree/main/client/src/app/retailer"
click node_adminui "https://github.com/foridul35962/agrilink/tree/main/client/src/app/admin"
click node_cropui "https://github.com/foridul35962/agrilink/tree/main/client/src/app/crop"
click node_marketui "https://github.com/foridul35962/agrilink/tree/main/client/src/app/products"
click node_inventoryui "https://github.com/foridul35962/agrilink/tree/main/client/src/app/inventory"
click node_notifyui "https://github.com/foridul35962/agrilink/tree/main/client/src/app/notifications"
click node_authstate "https://github.com/foridul35962/agrilink/blob/main/client/src/store/slice/authSlice.ts"
click node_api "https://github.com/foridul35962/agrilink/blob/main/server/src/app.js"
click node_authroute "https://github.com/foridul35962/agrilink/blob/main/server/src/routes/auth.route.js"
click node_authctrl "https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/auth.controller.js"
click node_productctrl "https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/product.controller.js"
click node_orderctrl "https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/order.controller.js"
click node_inventoryctrl "https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/inventory.controller.js"
click node_cropctrl "https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/crop.controller.js"
click node_adminctrl "https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/admin.controller.js"
click node_reportctrl "https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/report.controller.js"
click node_dashboardctrl "https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/dashboard.controller.js"
click node_notificationctrl "https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/notification.controller.js"
click node_usersdb "https://github.com/foridul35962/agrilink/blob/main/server/src/models/Users.model.js"
click node_requestsdb "https://github.com/foridul35962/agrilink/blob/main/server/src/models/RequestUsers.model.js"
click node_productsdb "https://github.com/foridul35962/agrilink/blob/main/server/src/models/Product.model.js"
click node_auctiondb "https://github.com/foridul35962/agrilink/blob/main/server/src/models/auctions.model.js"
click node_ordersdb "https://github.com/foridul35962/agrilink/blob/main/server/src/models/Order.model.js"
click node_inventorydb "https://github.com/foridul35962/agrilink/blob/main/server/src/models/Inventory.model.js"
click node_cropsdb "https://github.com/foridul35962/agrilink/blob/main/server/src/models/Crop.model.js"
click node_recommenddb "https://github.com/foridul35962/agrilink/blob/main/server/src/models/CropRecommendation.model.js"
click node_redis "https://github.com/foridul35962/agrilink/blob/main/server/src/config/redis.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_farmer,node_aratdar,node_retailer,node_admin toneBlue
class node_authui,node_farmerui,node_aratdarui,node_retailerui,node_adminui,node_cropui,node_marketui,node_inventoryui,node_notifyui,node_authstate toneAmber
class node_api,node_authroute,node_authctrl,node_productctrl,node_orderctrl,node_inventoryctrl,node_cropctrl,node_adminctrl,node_reportctrl,node_dashboardctrl,node_notificationctrl toneMint
class node_usersdb,node_requestsdb,node_productsdb,node_auctiondb,node_ordersdb,node_inventorydb,node_cropsdb,node_recommenddb,node_redis toneRose
```

## Components

### Platform users

- **Farmer**
- **Aratdar**
- **Retailer**
- **Admin**

### Web client

- [Sign in and registration](https://github.com/foridul35962/agrilink/tree/main/client/src/app/(auth)): `client/src/app/(auth)`
- [Farmer workflows](https://github.com/foridul35962/agrilink/tree/main/client/src/app/(farmer)): `client/src/app/(farmer)`
- [Aratdar workflows](https://github.com/foridul35962/agrilink/tree/main/client/src/app/aratdar): `client/src/app/aratdar`
- [Retailer workflows](https://github.com/foridul35962/agrilink/tree/main/client/src/app/retailer): `client/src/app/retailer`
- [Admin workflows](https://github.com/foridul35962/agrilink/tree/main/client/src/app/admin): `client/src/app/admin`
- [Crop library](https://github.com/foridul35962/agrilink/tree/main/client/src/app/crop): `client/src/app/crop`
- [Product marketplace](https://github.com/foridul35962/agrilink/tree/main/client/src/app/products): `client/src/app/products`
- [Inventory marketplace](https://github.com/foridul35962/agrilink/tree/main/client/src/app/inventory): `client/src/app/inventory`
- [Notification centre](https://github.com/foridul35962/agrilink/tree/main/client/src/app/notifications): `client/src/app/notifications`
- [Auth API client](https://github.com/foridul35962/agrilink/blob/main/client/src/store/slice/authSlice.ts): `client/src/store/slice/authSlice.ts`

### Marketplace services

- [Express API](https://github.com/foridul35962/agrilink/blob/main/server/src/app.js): `server/src/app.js`
- [Auth routes](https://github.com/foridul35962/agrilink/blob/main/server/src/routes/auth.route.js): `server/src/routes/auth.route.js`
- [Authentication](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/auth.controller.js): `server/src/controllers/auth.controller.js`
- [Products and auctions](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/product.controller.js): `server/src/controllers/product.controller.js`
- [Order lifecycle](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/order.controller.js): `server/src/controllers/order.controller.js`
- [Inventory](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/inventory.controller.js): `server/src/controllers/inventory.controller.js`
- [Crop recommendations](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/crop.controller.js): `server/src/controllers/crop.controller.js`
- [Member approval](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/admin.controller.js): `server/src/controllers/admin.controller.js`
- [Reports and moderation](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/report.controller.js): `server/src/controllers/report.controller.js`
- [Role analytics](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/dashboard.controller.js): `server/src/controllers/dashboard.controller.js`
- [Notifications](https://github.com/foridul35962/agrilink/blob/main/server/src/controllers/notification.controller.js): `server/src/controllers/notification.controller.js`

### Data and integrations

- [User records](https://github.com/foridul35962/agrilink/blob/main/server/src/models/Users.model.js): `server/src/models/Users.model.js`
- [Pending registrations](https://github.com/foridul35962/agrilink/blob/main/server/src/models/RequestUsers.model.js): `server/src/models/RequestUsers.model.js`
- [Product records](https://github.com/foridul35962/agrilink/blob/main/server/src/models/Product.model.js): `server/src/models/Product.model.js`
- [Auction and bids](https://github.com/foridul35962/agrilink/blob/main/server/src/models/auctions.model.js): `server/src/models/auctions.model.js`
- [Order records](https://github.com/foridul35962/agrilink/blob/main/server/src/models/Order.model.js): `server/src/models/Order.model.js`
- [Inventory records](https://github.com/foridul35962/agrilink/blob/main/server/src/models/Inventory.model.js): `server/src/models/Inventory.model.js`
- [Crop rules](https://github.com/foridul35962/agrilink/blob/main/server/src/models/Crop.model.js): `server/src/models/Crop.model.js`
- [Recommendation rules](https://github.com/foridul35962/agrilink/blob/main/server/src/models/CropRecommendation.model.js): `server/src/models/CropRecommendation.model.js`
- [Redis cache and OTP](https://github.com/foridul35962/agrilink/blob/main/server/src/config/redis.js): `server/src/config/redis.js`

## Connections

- Farmer → Farmer workflows: uses
- Aratdar → Aratdar workflows: uses
- Retailer → Retailer workflows: uses
- Admin → Admin workflows: uses
- Farmer → Product marketplace: lists products
- Aratdar → Product marketplace: places bids
- Retailer → Inventory marketplace: places orders
- Admin → Crop library: manages crops
- Admin → Admin workflows: approves members
- Sign in and registration → Auth API client: submits credentials
- Auth API client → Express API: HTTP requests
- Express API → Auth routes: mounts
- Auth routes → Authentication: dispatches
- Authentication → User records: reads and writes
- Authentication → Pending registrations: creates requests
- Authentication → Redis cache and OTP: stores OTP state
- Express API → Member approval
- Express API → Reports and moderation
- Express API → Products and auctions
- Express API → Order lifecycle
- Express API → Crop recommendations
- Express API → Inventory
- Express API → Role analytics
- Express API → Notifications
- Products and auctions → Product records: reads and writes
- Products and auctions → Auction and bids: uses auctions
- Products and auctions → Order records: creates orders
- Products and auctions → Redis cache and OTP: reads cache
- Order lifecycle → Order records: reads and writes
- Order lifecycle → Inventory records: updates stock
- Inventory → Inventory records: reads and writes
- Inventory → Order records: creates orders
- Crop recommendations → Crop rules: reads and writes
- Crop recommendations → Recommendation rules: reads rules
- Crop recommendations → Redis cache and OTP: caches weather
- Role analytics → Redis cache and OTP: reads cache
- Role analytics → Product records: queries stats
- Role analytics → Auction and bids: queries stats
- Role analytics → Order records: queries stats
