# manojadithyareddy/agrifusion-ai architecture

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

## Overview

AgriFusion AI is a farmer-facing agriculture intelligence product with a separate administrator experience. Farmers use the web app to request crop recommendations, yield and market outlooks, weather information, scheme guidance, crop-health diagnosis, and agricultural assistance; administrators manage users, datasets, models, predictions, analytics, audit logs, and settings. The tree and excerpts establish the application routing, backend router registration, local prediction and vision engines, and RAG persistence. Most individual router-to-service wiring is not shown, so those links are omitted.

Main entry points: [`backend/app/main.py`](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/main.py) (FastAPI app), [`frontend/src/routes/AppRoutes.tsx`](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/routes/AppRoutes.tsx) (App routes), [`frontend/src/App.tsx`](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/App.tsx) (Web app), [`backend/app/nlp/rag_service.py`](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/nlp/rag_service.py) (RAG service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["Web app<br/>[App.tsx]"]
  node_routes["App routes<br/>[AppRoutes.tsx]"]
  node_farmer_pages["Farmer pages"]
  node_admin_pages["Admin pages"]
  node_auth_context["Auth context<br/>[AuthContext.tsx]"]
  node_api_client["API client<br/>[client.ts]"]
end

subgraph group_api["API and domain"]
  node_backend["FastAPI app<br/>[main.py]"]
  node_prediction_routes["Prediction routes<br/>[predictions.py]"]
  node_vision_routes["Vision routes<br/>[vision.py]"]
  node_assistant_routes["Assistant routes<br/>[assistant.py]"]
  node_auth_routes["Auth routes<br/>[auth.py]"]
  node_weather_routes["Weather routes<br/>[weather.py]"]
  node_schemes_routes["Schemes routes<br/>[schemes.py]"]
  node_geography_routes["Geography routes<br/>[geography.py]"]
  node_soil_routes["Soil health routes<br/>[soil_health.py]"]
end

subgraph group_intelligence["Agriculture intelligence"]
  node_crop_recs["Crop recommendation"]
  node_prediction_service["Prediction service<br/>[prediction.py]"]
  node_vision_service["Vision service<br/>[vision.py]"]
  node_cnn["CV engine<br/>[cnn_engine.py]"]
  node_assistant_vision["Assistant CV"]
  node_rag["RAG service<br/>[rag_service.py]"]
  node_assistant_agent["Assistant agent"]
  node_weather_service["Weather service<br/>[weather.py]"]
  node_schemes_service["Schemes service<br/>[schemes.py]"]
  node_soil_service["Soil health service<br/>[soil_health.py]"]
end

subgraph group_state["Persistence"]
  node_db[("Relational database<br/>[database.py]")]
  node_rag_models["RAG records<br/>[rag.py]"]
  node_vector_store[("pgvector store")]
end

node_farmer(("Farmer"))
node_admin(("Administrator"))

node_farmer -->|"uses"| node_app
node_admin -->|"uses"| node_app
node_app -->|"renders"| node_routes
node_app -->|"provides auth"| node_auth_context
node_routes -->|"routes to"| node_farmer_pages
node_routes -->|"routes to"| node_admin_pages
node_routes -->|"checks access"| node_auth_context
node_backend -->|"registers"| node_prediction_routes
node_backend -->|"registers"| node_vision_routes
node_backend -->|"registers"| node_assistant_routes
node_backend -->|"registers"| node_auth_routes
node_backend -->|"registers"| node_weather_routes
node_backend -->|"registers"| node_schemes_routes
node_backend -->|"registers"| node_geography_routes
node_backend -->|"registers"| node_soil_routes
node_rag -->|"persists records"| node_db
node_rag -->|"indexes chunks"| node_vector_store
node_rag -->|"retrieves context"| node_vector_store

click node_app "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/App.tsx"
click node_routes "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/routes/AppRoutes.tsx"
click node_farmer_pages "https://github.com/manojadithyareddy/agrifusion-ai/tree/main/frontend/src/pages"
click node_admin_pages "https://github.com/manojadithyareddy/agrifusion-ai/tree/main/frontend/src/pages/admin"
click node_auth_context "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/context/AuthContext.tsx"
click node_api_client "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/api/client.ts"
click node_backend "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/main.py"
click node_prediction_routes "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/predictions.py"
click node_vision_routes "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/vision.py"
click node_assistant_routes "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/assistant.py"
click node_auth_routes "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/auth.py"
click node_weather_routes "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/weather.py"
click node_schemes_routes "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/schemes.py"
click node_geography_routes "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/geography.py"
click node_soil_routes "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/soil_health.py"
click node_crop_recs "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/ml/inference/crop_recommendation.py"
click node_prediction_service "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/prediction.py"
click node_vision_service "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/vision.py"
click node_cnn "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/cv/cnn_engine.py"
click node_assistant_vision "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/assistant_vision_engine.py"
click node_rag "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/nlp/rag_service.py"
click node_assistant_agent "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/nlp/assistant_ai_agent.py"
click node_weather_service "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/weather.py"
click node_schemes_service "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/schemes.py"
click node_soil_service "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/soil_health.py"
click node_db "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/database.py"
click node_rag_models "https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/models/rag.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_app,node_routes,node_farmer_pages,node_admin_pages,node_auth_context,node_api_client toneBlue
class node_backend,node_prediction_routes,node_vision_routes,node_assistant_routes,node_auth_routes,node_weather_routes,node_schemes_routes,node_geography_routes,node_soil_routes toneAmber
class node_crop_recs,node_prediction_service,node_vision_service,node_cnn,node_assistant_vision,node_rag,node_assistant_agent,node_weather_service,node_schemes_service,node_soil_service toneMint
class node_db,node_rag_models,node_vector_store toneRose
class node_farmer,node_admin toneIndigo
```

## Components

### Web application

- [Web app](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [App routes](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/routes/AppRoutes.tsx): `frontend/src/routes/AppRoutes.tsx`
- [Farmer pages](https://github.com/manojadithyareddy/agrifusion-ai/tree/main/frontend/src/pages): `frontend/src/pages`
- [Admin pages](https://github.com/manojadithyareddy/agrifusion-ai/tree/main/frontend/src/pages/admin): `frontend/src/pages/admin`
- [Auth context](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/context/AuthContext.tsx): `frontend/src/context/AuthContext.tsx`
- [API client](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`

### API and domain

- [FastAPI app](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/main.py): `backend/app/main.py`
- [Prediction routes](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/predictions.py): `backend/app/routers/v1/predictions.py`
- [Vision routes](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/vision.py): `backend/app/routers/v1/vision.py`
- [Assistant routes](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/assistant.py): `backend/app/routers/v1/assistant.py`
- [Auth routes](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/auth.py): `backend/app/routers/v1/auth.py`
- [Weather routes](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/weather.py): `backend/app/routers/v1/weather.py`
- [Schemes routes](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/schemes.py): `backend/app/routers/v1/schemes.py`
- [Geography routes](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/geography.py): `backend/app/routers/v1/geography.py`
- [Soil health routes](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/routers/v1/soil_health.py): `backend/app/routers/v1/soil_health.py`

### Agriculture intelligence

- [Crop recommendation](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/ml/inference/crop_recommendation.py): `backend/app/ml/inference/crop_recommendation.py`
- [Prediction service](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/prediction.py): `backend/app/services/prediction.py`
- [Vision service](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/vision.py): `backend/app/services/vision.py`
- [CV engine](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/cv/cnn_engine.py): `backend/app/cv/cnn_engine.py`
- [Assistant CV](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/assistant_vision_engine.py): `backend/app/services/assistant_vision_engine.py`
- [RAG service](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/nlp/rag_service.py): `backend/app/nlp/rag_service.py`
- [Assistant agent](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/nlp/assistant_ai_agent.py): `backend/app/nlp/assistant_ai_agent.py`
- [Weather service](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/weather.py): `backend/app/services/weather.py`
- [Schemes service](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/schemes.py): `backend/app/services/schemes.py`
- [Soil health service](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/services/soil_health.py): `backend/app/services/soil_health.py`

### Persistence

- [Relational database](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/database.py): `backend/app/database.py`
- [RAG records](https://github.com/manojadithyareddy/agrifusion-ai/blob/main/backend/app/models/rag.py): `backend/app/models/rag.py`
- **pgvector store**

### Other components

- **Farmer**
- **Administrator**

## Connections

- Farmer → Web app: uses
- Administrator → Web app: uses
- Web app → App routes: renders
- Web app → Auth context: provides auth
- App routes → Farmer pages: routes to
- App routes → Admin pages: routes to
- App routes → Auth context: checks access
- FastAPI app → Prediction routes: registers
- FastAPI app → Vision routes: registers
- FastAPI app → Assistant routes: registers
- FastAPI app → Auth routes: registers
- FastAPI app → Weather routes: registers
- FastAPI app → Schemes routes: registers
- FastAPI app → Geography routes: registers
- FastAPI app → Soil health routes: registers
- RAG service → Relational database: persists records
- RAG service → pgvector store: indexes chunks
- RAG service → pgvector store: retrieves context
