# f3ur0n/crop-disease-reporting-and-advisory-network architecture

> Architecture diagram of the GitHub repository f3ur0n/crop-disease-reporting-and-advisory-network, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/f3ur0n/crop-disease-reporting-and-advisory-network
- Repository: https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network

## Overview

The repository is a Spring MVC crop-disease reporting and advisory application. Its implemented core workflow lets farmers register, submit crop cases with validated photos, and track case status and notifications; a separate seasonal-risk feature is also present. The README describes AI diagnosis and broader advisory, expert, outbreak, and community capabilities as planned or proposed, so these are distinguished from the evidenced runtime flow. Source excerpts show the case and registration paths; unsampled subsystems are not treated as inspected.

Main entry points: [`src/main/java/com/cdran/service/CaseService.java`](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/CaseService.java) (Case Workflow), [`src/main/java/com/cdran/repository/UserRepository.java`](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/repository/UserRepository.java) (User Accounts), [`src/main/java/com/cdran/ai/DiseaseClassifier.java`](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/ai/DiseaseClassifier.java) (AI Diagnosis Boundary), [`src/main/java/com/cdran/service/RegistrationService.java`](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/RegistrationService.java) (Registration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Accounts and Access"]
  node_registration["Registration"]
  node_auth_controller["Auth Controller"]
  node_user_details["User Authentication"]
end

subgraph group_casework["Case Reporting and Tracking"]
  node_case_controller["Case Controller"]
  node_case_service["Case Workflow<br/>[CaseService.java]"]
  node_image_validation["Photo Validation"]
  node_image_storage["Photo Files"]
  node_case_entity["Case Lifecycle<br/>[DiseaseCase.java]"]
  node_notification_service["Notifications"]
end

subgraph group_advisory["Risk and Diagnosis"]
  node_risk_controller["Risk Controller"]
  node_risk_service["Seasonal Risk"]
  node_ai_service["AI Diagnosis Boundary"]
end

subgraph group_persistence["Application Data"]
  node_user_repo[("User Accounts")]
  node_case_repository[("Disease Cases")]
  node_notification_repo[("Notification Records")]
  node_risk_repository[("Risk Records")]
end

node_farmer(("Farmer"))
node_web(("Web Application"))
node_llm{{"External LLM"}}
node_expert(("Agricultural Expert"))

node_farmer -->|"registers"| node_auth_controller
node_auth_controller -->|"submits registration"| node_registration
node_registration -->|"saves account"| node_user_repo
node_user_details -->|"loads account"| node_user_repo
node_farmer -->|"submits case"| node_case_controller
node_case_controller -->|"requests case workflow"| node_case_service
node_case_service -->|"checks photos"| node_image_validation
node_case_service -->|"stores photos"| node_image_storage
node_case_service -->|"saves and reads cases"| node_case_repository
node_case_service -->|"finds farmer"| node_user_repo
node_case_service -->|"transitions status"| node_case_entity
node_case_service -->|"notifies farmer"| node_notification_service
node_notification_service -->|"stores and reads"| node_notification_repo
node_web -.->|"requests risk view"| node_risk_controller
node_risk_controller -->|"requests forecast"| node_risk_service
node_risk_service -->|"reads risk data"| node_risk_repository
node_ai_service -.->|"calls API"| node_llm
node_ai_service -.->|"updates case status"| node_case_service
node_expert -.->|"reviews escalated case"| node_case_service

click node_registration "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/RegistrationService.java"
click node_auth_controller "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/controller/AuthController.java"
click node_user_details "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/CustomUserDetailsService.java"
click node_user_repo "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/repository/UserRepository.java"
click node_case_controller "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/controller/CaseController.java"
click node_case_service "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/CaseService.java"
click node_image_validation "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/ImageValidationService.java"
click node_image_storage "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/ImageStorageService.java"
click node_case_repository "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/repository/DiseaseCaseRepository.java"
click node_case_entity "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/model/entity/DiseaseCase.java"
click node_notification_service "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/NotificationService.java"
click node_notification_repo "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/repository/NotificationRepository.java"
click node_risk_controller "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/controller/SeasonalRiskController.java"
click node_risk_service "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/SeasonalRiskService.java"
click node_risk_repository "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/repository/SeasonalRiskRepository.java"
click node_ai_service "https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/ai/DiseaseClassifier.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_registration,node_auth_controller,node_user_details toneBlue
class node_case_controller,node_case_service,node_image_validation,node_image_storage,node_case_entity,node_notification_service toneAmber
class node_risk_controller,node_risk_service,node_ai_service toneMint
class node_user_repo,node_case_repository,node_notification_repo,node_risk_repository toneRose
class node_farmer,node_web,node_llm,node_expert toneIndigo
```

## Components

### Accounts and Access

- [Registration](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/RegistrationService.java): `src/main/java/com/cdran/service/RegistrationService.java`
- [Auth Controller](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/controller/AuthController.java): `src/main/java/com/cdran/controller/AuthController.java`
- [User Authentication](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/CustomUserDetailsService.java): `src/main/java/com/cdran/service/CustomUserDetailsService.java`

### Case Reporting and Tracking

- [Case Controller](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/controller/CaseController.java): `src/main/java/com/cdran/controller/CaseController.java`
- [Case Workflow](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/CaseService.java): `src/main/java/com/cdran/service/CaseService.java`
- [Photo Validation](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/ImageValidationService.java): `src/main/java/com/cdran/service/ImageValidationService.java`
- [Photo Files](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/ImageStorageService.java): `src/main/java/com/cdran/service/ImageStorageService.java`
- [Case Lifecycle](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/model/entity/DiseaseCase.java): `src/main/java/com/cdran/model/entity/DiseaseCase.java`
- [Notifications](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/NotificationService.java): `src/main/java/com/cdran/service/NotificationService.java`

### Risk and Diagnosis

- [Risk Controller](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/controller/SeasonalRiskController.java): `src/main/java/com/cdran/controller/SeasonalRiskController.java`
- [Seasonal Risk](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/service/SeasonalRiskService.java): `src/main/java/com/cdran/service/SeasonalRiskService.java`
- [AI Diagnosis Boundary](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/ai/DiseaseClassifier.java): `src/main/java/com/cdran/ai/DiseaseClassifier.java`

### Application Data

- [User Accounts](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/repository/UserRepository.java): `src/main/java/com/cdran/repository/UserRepository.java`
- [Disease Cases](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/repository/DiseaseCaseRepository.java): `src/main/java/com/cdran/repository/DiseaseCaseRepository.java`
- [Notification Records](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/repository/NotificationRepository.java): `src/main/java/com/cdran/repository/NotificationRepository.java`
- [Risk Records](https://github.com/f3ur0n/crop-disease-reporting-and-advisory-network/blob/main/src/main/java/com/cdran/repository/SeasonalRiskRepository.java): `src/main/java/com/cdran/repository/SeasonalRiskRepository.java`

### Other components

- **Farmer**
- **Web Application**
- **External LLM**
- **Agricultural Expert**

## Connections

- Farmer → Auth Controller: registers (evidence: `src/main/java/com/cdran/controller/AuthController.java`)
- Auth Controller → Registration: submits registration (evidence: `src/main/java/com/cdran/controller/AuthController.java`)
- Registration → User Accounts: saves account (evidence: `src/main/java/com/cdran/service/RegistrationService.java`)
- User Authentication → User Accounts: loads account (evidence: `src/main/java/com/cdran/service/CustomUserDetailsService.java`)
- Farmer → Case Controller: submits case (evidence: `src/main/java/com/cdran/controller/CaseController.java`)
- Case Controller → Case Workflow: requests case workflow (evidence: `src/main/java/com/cdran/controller/CaseController.java`)
- Case Workflow → Photo Validation: checks photos (evidence: `src/main/java/com/cdran/service/CaseService.java`)
- Case Workflow → Photo Files: stores photos (evidence: `src/main/java/com/cdran/service/CaseService.java`)
- Case Workflow → Disease Cases: saves and reads cases (evidence: `src/main/java/com/cdran/service/CaseService.java`)
- Case Workflow → User Accounts: finds farmer (evidence: `src/main/java/com/cdran/service/CaseService.java`)
- Case Workflow → Case Lifecycle: transitions status (evidence: `src/main/java/com/cdran/service/CaseService.java`)
- Case Workflow → Notifications: notifies farmer (evidence: `src/main/java/com/cdran/service/CaseService.java`)
- Notifications → Notification Records: stores and reads (evidence: `src/main/java/com/cdran/service/NotificationService.java`)
- Web Application → Risk Controller: requests risk view (evidence: `src/main/java/com/cdran/controller/SeasonalRiskController.java`)
- Risk Controller → Seasonal Risk: requests forecast (evidence: `src/main/java/com/cdran/controller/SeasonalRiskController.java`)
- Seasonal Risk → Risk Records: reads risk data (evidence: `src/main/java/com/cdran/service/SeasonalRiskService.java`)
- AI Diagnosis Boundary → External LLM: calls API (evidence: `README.md`)
- AI Diagnosis Boundary → Case Workflow: updates case status (evidence: `README.md`)
- Agricultural Expert → Case Workflow: reviews escalated case
