# vishh-t/graminsaathi architecture

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

## Overview

GraminSaathi is a rural-business planning and government-financing application. Applicants use the frontend to explore local opportunities, submit a business profile for viability and financing analysis, compare or match schemes, simulate outcomes, and save or export reports. Authentication protects the application, while reference data supports discovery and analysis. The tree and excerpts establish the main capabilities; several controllers and service implementations were not sampled, so their internal wiring is represented conservatively.

Main entry points: [`sih_frontend/src/services/api.js`](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/services/api.js) (API client), [`sih_frontend/src/App.jsx`](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/App.jsx) (App routes), [`GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/AnalysisController.java`](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/AnalysisController.java) (Analysis API), [`GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/ReportController.java`](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/ReportController.java) (Report API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Applicant experience"]
  node_routes["App routes<br/>[App.jsx]"]
  node_discovery["Opportunity discovery<br/>[DiscoveryPage.jsx]"]
  node_analysis["Business analysis<br/>[AnalysisPage.jsx]"]
  node_goal["Goal seeking<br/>[GoalSeekPage.jsx]"]
  node_simulator["Outcome simulation<br/>[SimulatorPage.jsx]"]
  node_schemes["Scheme browsing<br/>[SchemesPage.jsx]"]
  node_reports["Saved reports<br/>[ReportsPage.jsx]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_api["Backend API"]
  node_auth_api["Authentication API"]
  node_discovery_api["Discovery API"]
  node_analysis_api["Analysis API"]
  node_goal_api["Goal seek API"]
  node_simulation_api["Simulation API"]
  node_scheme_api["Scheme APIs"]
  node_reference_api["Reference data API"]
  node_report_api["Report API"]
end

subgraph group_domain["Planning services"]
  node_analysis_services["Analysis calculations"]
  node_discovery_service["Opportunity ranking"]
  node_scheme_matching["Scheme matching"]
  node_scheme_data["Scheme catalog"]
  node_pdf["PDF generation"]
end

subgraph group_state["Identity and records"]
  node_auth_service["Identity service<br/>[AuthService.java]"]
  node_users[("User records")]
  node_saved_reports[("Saved report records")]
end

node_applicant(("Applicant"))

node_applicant -->|"uses"| node_routes
node_routes -->|"routes to"| node_discovery
node_routes -->|"routes to"| node_analysis
node_routes -->|"routes to"| node_goal
node_routes -->|"routes to"| node_simulator
node_routes -->|"routes to"| node_schemes
node_routes -->|"routes to"| node_reports
node_discovery -->|"requests data"| node_api_client
node_analysis -->|"submits profile"| node_api_client
node_goal -->|"submits target"| node_api_client
node_simulator -->|"submits scenario"| node_api_client
node_schemes -->|"requests matches"| node_api_client
node_reports -->|"requests reports"| node_api_client
node_api_client -->|"calls"| node_discovery_api
node_api_client -->|"calls"| node_analysis_api
node_api_client -->|"calls"| node_goal_api
node_api_client -->|"calls"| node_simulation_api
node_api_client -->|"calls"| node_scheme_api
node_api_client -->|"calls"| node_reference_api
node_api_client -->|"calls"| node_report_api
node_api_client -->|"calls"| node_auth_api
node_analysis_api -->|"calculates"| node_analysis_services
node_discovery_api -->|"discovers"| node_discovery_service
node_scheme_api -->|"matches schemes"| node_scheme_matching
node_scheme_matching -->|"reads catalog"| node_scheme_data
node_reference_api -->|"reads catalog"| node_scheme_data
node_analysis_api -->|"returns analysis"| node_analysis
node_auth_api -->|"delegates auth"| node_auth_service
node_auth_service -->|"reads and writes"| node_users
node_report_api -->|"stores reports"| node_saved_reports
node_report_api -->|"generates PDF"| node_pdf

click node_routes "https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/App.jsx"
click node_discovery "https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/DiscoveryPage.jsx"
click node_analysis "https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/AnalysisPage.jsx"
click node_goal "https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/GoalSeekPage.jsx"
click node_simulator "https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/SimulatorPage.jsx"
click node_schemes "https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/SchemesPage.jsx"
click node_reports "https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/ReportsPage.jsx"
click node_api_client "https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/services/api.js"
click node_auth_api "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/AuthController.java"
click node_discovery_api "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/DiscoveryController.java"
click node_analysis_api "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/AnalysisController.java"
click node_goal_api "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/GoalSeekController.java"
click node_simulation_api "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/SimulationController.java"
click node_scheme_api "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/SchemesController.java"
click node_reference_api "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/ReferenceDataController.java"
click node_report_api "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/ReportController.java"
click node_analysis_services "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/FinancialCalculatorService.java"
click node_discovery_service "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/DiscoveryService.java"
click node_scheme_matching "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/SchemeMatchingService.java"
click node_scheme_data "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/SchemeDataService.java"
click node_pdf "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/PdfGeneratorService.java"
click node_auth_service "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/AuthService.java"
click node_users "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/repository/UserRepository.java"
click node_saved_reports "https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/repository/SavedReportRepository.java"

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_routes,node_discovery,node_analysis,node_goal,node_simulator,node_schemes,node_reports,node_api_client toneBlue
class node_auth_api,node_discovery_api,node_analysis_api,node_goal_api,node_simulation_api,node_scheme_api,node_reference_api,node_report_api toneAmber
class node_analysis_services,node_discovery_service,node_scheme_matching,node_scheme_data,node_pdf toneMint
class node_auth_service,node_users,node_saved_reports toneRose
class node_applicant toneIndigo
```

## Components

### Applicant experience

- [App routes](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/App.jsx): `sih_frontend/src/App.jsx`
- [Opportunity discovery](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/DiscoveryPage.jsx): `sih_frontend/src/pages/DiscoveryPage.jsx`
- [Business analysis](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/AnalysisPage.jsx): `sih_frontend/src/pages/AnalysisPage.jsx`
- [Goal seeking](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/GoalSeekPage.jsx): `sih_frontend/src/pages/GoalSeekPage.jsx`
- [Outcome simulation](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/SimulatorPage.jsx): `sih_frontend/src/pages/SimulatorPage.jsx`
- [Scheme browsing](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/SchemesPage.jsx): `sih_frontend/src/pages/SchemesPage.jsx`
- [Saved reports](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/pages/ReportsPage.jsx): `sih_frontend/src/pages/ReportsPage.jsx`
- [API client](https://github.com/vishh-t/graminsaathi/blob/main/sih_frontend/src/services/api.js): `sih_frontend/src/services/api.js`

### Backend API

- [Authentication API](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/AuthController.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/AuthController.java`
- [Discovery API](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/DiscoveryController.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/DiscoveryController.java`
- [Analysis API](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/AnalysisController.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/AnalysisController.java`
- [Goal seek API](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/GoalSeekController.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/GoalSeekController.java`
- [Simulation API](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/SimulationController.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/SimulationController.java`
- [Scheme APIs](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/SchemesController.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/SchemesController.java`
- [Reference data API](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/ReferenceDataController.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/ReferenceDataController.java`
- [Report API](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/ReportController.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/controller/ReportController.java`

### Planning services

- [Analysis calculations](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/FinancialCalculatorService.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/service/FinancialCalculatorService.java`
- [Opportunity ranking](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/DiscoveryService.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/service/DiscoveryService.java`
- [Scheme matching](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/SchemeMatchingService.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/service/SchemeMatchingService.java`
- [Scheme catalog](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/SchemeDataService.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/service/SchemeDataService.java`
- [PDF generation](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/PdfGeneratorService.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/service/PdfGeneratorService.java`

### Identity and records

- [Identity service](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/service/AuthService.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/service/AuthService.java`
- [User records](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/repository/UserRepository.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/repository/UserRepository.java`
- [Saved report records](https://github.com/vishh-t/graminsaathi/blob/main/GraminSaathi_Backend/src/main/java/com/graminsaathi/repository/SavedReportRepository.java): `GraminSaathi_Backend/src/main/java/com/graminsaathi/repository/SavedReportRepository.java`

### Other components

- **Applicant**

## Connections

- Applicant → App routes: uses
- App routes → Opportunity discovery: routes to
- App routes → Business analysis: routes to
- App routes → Goal seeking: routes to
- App routes → Outcome simulation: routes to
- App routes → Scheme browsing: routes to
- App routes → Saved reports: routes to
- Opportunity discovery → API client: requests data
- Business analysis → API client: submits profile
- Goal seeking → API client: submits target
- Outcome simulation → API client: submits scenario
- Scheme browsing → API client: requests matches
- Saved reports → API client: requests reports
- API client → Discovery API: calls
- API client → Analysis API: calls
- API client → Goal seek API: calls
- API client → Simulation API: calls
- API client → Scheme APIs: calls
- API client → Reference data API: calls
- API client → Report API: calls
- API client → Authentication API: calls
- Analysis API → Analysis calculations: calculates
- Discovery API → Opportunity ranking: discovers
- Scheme APIs → Scheme matching: matches schemes
- Scheme matching → Scheme catalog: reads catalog
- Reference data API → Scheme catalog: reads catalog
- Analysis API → Business analysis: returns analysis
- Authentication API → Identity service: delegates auth
- Identity service → User records: reads and writes
- Report API → Saved report records: stores reports
- Report API → PDF generation: generates PDF
