# dhanush-2027/pranadhanya architecture

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

## Overview

PranaDhanya is a role-based agricultural management portal: farmers submit disease images or recommendation inputs, receive AI results, and retain predictions as records; farmers and veterinary staff also manage appointments and diagnoses, while dashboards expose role-specific records and administration. The documented AI scope includes crop and livestock disease classification plus crop, yield, price, and fertilizer recommendations. Sampled code confirms API-to-AI calls, record persistence, appointment notifications, and dashboard reads. The frontend and database schema are not present in the supplied tree, and some capability wiring is documented only at a high level.

Main entry points: [`backend/src/main/java/com/agriportal/controller/PageController.java`](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/controller/PageController.java) (Role dashboards), [`backend/src/main/java/com/agriportal/controller/ApiController.java`](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/controller/ApiController.java) (REST workflows), [`backend/src/main/java/com/agriportal/repository`](https://github.com/dhanush-2027/pranadhanya/tree/main/backend/src/main/java/com/agriportal/repository) (JPA repositories), [`backend/src/main/java/com/agriportal/service/AppointmentService.java`](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/AppointmentService.java) (Appointment service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Identity and access"]
  node_auth["Authentication API"]
  node_user_service["User service<br/>[UserService.java]"]
  node_security["JWT security"]
end

subgraph group_portal["Portal workflows"]
  node_pages["Role dashboards"]
  node_api["REST workflows<br/>[ApiController.java]"]
  node_appointments["Appointment service"]
  node_notifications["Notification service"]
end

subgraph group_intelligence["AI services"]
  node_ai_client["AI client<br/>[AiService.java]"]
  node_ai_api["Prediction API<br/>[app.py]"]
  node_model_loader["Model loading<br/>[model_loader.py]"]
  node_classifier["Disease classification<br/>[app.py]"]
  node_recommendations["Agri predictions<br/>[app.py]"]
end

subgraph group_persistence["Records and state"]
  node_records["Record service<br/>[RecordService.java]"]
  node_repos["JPA repositories"]
  node_database[("PostgreSQL")]
  node_appointment_entity["Appointment data<br/>[Appointment.java]"]
  node_notification_entity["Notification data<br/>[Notification.java]"]
end

node_farmer(("Farmer"))
node_vet(("Veterinary staff"))
node_admin(("Administrator"))

node_farmer -->|"signs in"| node_auth
node_auth -->|"registers"| node_user_service
node_auth -->|"authenticates"| node_security
node_farmer -->|"submits inputs"| node_api
node_vet -->|"updates cases"| node_api
node_admin -->|"opens dashboard"| node_pages
node_farmer -->|"opens dashboard"| node_pages
node_vet -->|"opens dashboard"| node_pages
node_api -->|"requests predictions"| node_ai_client
node_ai_client -->|"HTTP requests"| node_ai_api
node_ai_api -->|"classifies images"| node_classifier
node_ai_api -->|"predicts inputs"| node_recommendations
node_api -->|"saves results"| node_records
node_api -->|"books or updates"| node_appointments
node_appointments -->|"creates alerts"| node_notifications
node_appointments -->|"reads and writes"| node_repos
node_notifications -->|"reads and writes"| node_repos
node_records -->|"reads and writes"| node_repos
node_user_service -->|"reads and writes"| node_repos
node_repos -->|"persists entities"| node_database
node_pages -->|"loads records"| node_records
node_pages -->|"loads appointments"| node_appointments
node_pages -->|"loads alerts"| node_notifications

click node_auth "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/controller/AuthController.java"
click node_user_service "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/UserService.java"
click node_security "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/security/WebSecurityConfig.java"
click node_pages "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/controller/PageController.java"
click node_api "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/controller/ApiController.java"
click node_appointments "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/AppointmentService.java"
click node_notifications "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/NotificationService.java"
click node_records "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/RecordService.java"
click node_repos "https://github.com/dhanush-2027/pranadhanya/tree/main/backend/src/main/java/com/agriportal/repository"
click node_ai_client "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/AiService.java"
click node_ai_api "https://github.com/dhanush-2027/pranadhanya/blob/main/ai_service/app.py"
click node_model_loader "https://github.com/dhanush-2027/pranadhanya/blob/main/ai_service/model_loader.py"
click node_classifier "https://github.com/dhanush-2027/pranadhanya/blob/main/ai_service/app.py"
click node_recommendations "https://github.com/dhanush-2027/pranadhanya/blob/main/ai_service/app.py"
click node_appointment_entity "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/entity/Appointment.java"
click node_notification_entity "https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/entity/Notification.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_auth,node_user_service,node_security toneBlue
class node_pages,node_api,node_appointments,node_notifications toneAmber
class node_ai_client,node_ai_api,node_model_loader,node_classifier,node_recommendations toneMint
class node_records,node_repos,node_database,node_appointment_entity,node_notification_entity toneRose
class node_farmer,node_vet,node_admin toneIndigo
```

## Components

### Identity and access

- [Authentication API](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/controller/AuthController.java): `backend/src/main/java/com/agriportal/controller/AuthController.java`
- [User service](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/UserService.java): `backend/src/main/java/com/agriportal/service/UserService.java`
- [JWT security](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/security/WebSecurityConfig.java): `backend/src/main/java/com/agriportal/security/WebSecurityConfig.java`

### Portal workflows

- [Role dashboards](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/controller/PageController.java): `backend/src/main/java/com/agriportal/controller/PageController.java`
- [REST workflows](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/controller/ApiController.java): `backend/src/main/java/com/agriportal/controller/ApiController.java`
- [Appointment service](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/AppointmentService.java): `backend/src/main/java/com/agriportal/service/AppointmentService.java`
- [Notification service](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/NotificationService.java): `backend/src/main/java/com/agriportal/service/NotificationService.java`

### AI services

- [AI client](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/AiService.java): `backend/src/main/java/com/agriportal/service/AiService.java`
- [Prediction API](https://github.com/dhanush-2027/pranadhanya/blob/main/ai_service/app.py): `ai_service/app.py`
- [Model loading](https://github.com/dhanush-2027/pranadhanya/blob/main/ai_service/model_loader.py): `ai_service/model_loader.py`
- [Disease classification](https://github.com/dhanush-2027/pranadhanya/blob/main/ai_service/app.py): `ai_service/app.py`
- [Agri predictions](https://github.com/dhanush-2027/pranadhanya/blob/main/ai_service/app.py): `ai_service/app.py`

### Records and state

- [Record service](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/service/RecordService.java): `backend/src/main/java/com/agriportal/service/RecordService.java`
- [JPA repositories](https://github.com/dhanush-2027/pranadhanya/tree/main/backend/src/main/java/com/agriportal/repository): `backend/src/main/java/com/agriportal/repository`
- **PostgreSQL**
- [Appointment data](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/entity/Appointment.java): `backend/src/main/java/com/agriportal/entity/Appointment.java`
- [Notification data](https://github.com/dhanush-2027/pranadhanya/blob/main/backend/src/main/java/com/agriportal/entity/Notification.java): `backend/src/main/java/com/agriportal/entity/Notification.java`

### Other components

- **Farmer**
- **Veterinary staff**
- **Administrator**

## Connections

- Farmer → Authentication API: signs in
- Authentication API → User service: registers
- Authentication API → JWT security: authenticates
- Farmer → REST workflows: submits inputs
- Veterinary staff → REST workflows: updates cases
- Administrator → Role dashboards: opens dashboard
- Farmer → Role dashboards: opens dashboard
- Veterinary staff → Role dashboards: opens dashboard
- REST workflows → AI client: requests predictions
- AI client → Prediction API: HTTP requests
- Prediction API → Disease classification: classifies images
- Prediction API → Agri predictions: predicts inputs
- REST workflows → Record service: saves results
- REST workflows → Appointment service: books or updates
- Appointment service → Notification service: creates alerts
- Appointment service → JPA repositories: reads and writes
- Notification service → JPA repositories: reads and writes
- Record service → JPA repositories: reads and writes
- User service → JPA repositories: reads and writes
- JPA repositories → PostgreSQL: persists entities
- Role dashboards → Record service: loads records
- Role dashboards → Appointment service: loads appointments
- Role dashboards → Notification service: loads alerts
