# phanindra798/cloud-service-recommendation architecture

> Architecture diagram of the GitHub repository phanindra798/cloud-service-recommendation, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/phanindra798/cloud-service-recommendation
- Repository: https://github.com/phanindra798/cloud-service-recommendation

## Overview

Cloud Service Recommendation Platform turns a user's plain-English application requirements into an AWS architecture recommendation, cross-cloud Azure/GCP equivalents and monthly cost comparisons, reasoning, and a Mermaid diagram. The main flow runs from the React UI through the authenticated recommendation endpoint, rate limiting, Gemini planning, deterministic pricing, and per-user history; users can later reload history. Separate branches handle registration and login. Azure live pricing and optional GCP CSV pricing are documented capabilities. Some links and UI details are based on README descriptions because their implementing source was not sampled.

Main entry points: [`backend/src/main/java/com/cloudrec/controller/RecommendationController.java`](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/controller/RecommendationController.java) (Recommendation endpoint), [`frontend/src/pages`](https://github.com/phanindra798/cloud-service-recommendation/tree/main/frontend/src/pages) (Prompt and account pages), [`backend/src/main/java/com/cloudrec/service/pricing/CostService.java`](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/pricing/CostService.java) (Cost comparison), [`frontend/src/lib/api.js`](https://github.com/phanindra798/cloud-service-recommendation/blob/main/frontend/src/lib/api.js) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["React interface"]
  node_app["Routes and access<br/>[App.js]"]
  node_pages["Prompt and account pages"]
  node_api_client["API client<br/>[api.js]"]
  node_auth_client["Auth helpers<br/>[auth.js]"]
  node_results["Results and diagram"]
  node_history_ui["History panel<br/>[HistoryPanel.js]"]
end

subgraph group_api["Backend API"]
  node_security["JWT security filter<br/>[JwtAuthFilter.java]"]
  node_recommend_controller["Recommendation endpoint"]
  node_rate_limit["Rate limiter"]
end

subgraph group_recommendation["Recommendation and pricing"]
  node_recommend_service["Recommendation orchestration"]
  node_gemini["Structured AI planner<br/>[GeminiService.java]"]
  node_cost["Cost comparison<br/>[CostService.java]"]
  node_catalog["Service catalog"]
  node_azure_pricing["Azure price client"]
  node_gcp_pricing["GCP CSV pricing<br/>[GcpCsvPricing.java]"]
end

subgraph group_identity["Identity and history"]
  node_auth_controller["Auth endpoints"]
  node_auth_service["Account verification<br/>[AuthService.java]"]
  node_jwt["JWT tokens<br/>[JwtService.java]"]
  node_user_repo["User repository"]
  node_history_repo["History repository"]
end

node_user(("User"))
node_gemini_api{{"Google Gemini"}}
node_azure_api{{"Azure Retail Prices API"}}
node_gcp_csv["Optional GCP price CSV"]
node_postgres[("PostgreSQL")]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_pages
node_pages -->|"submits requests"| node_api_client
node_pages -->|"uses auth"| node_auth_client
node_pages -->|"shows results"| node_results
node_pages -->|"loads history"| node_history_ui
node_api_client -->|"calls auth"| node_auth_controller
node_api_client -->|"calls API"| node_recommend_controller
node_auth_controller -->|"registers and verifies"| node_auth_service
node_auth_controller -->|"issues token"| node_jwt
node_auth_service -->|"reads and writes"| node_user_repo
node_security -->|"validates token"| node_jwt
node_recommend_controller -->|"requires authentication"| node_security
node_recommend_controller -->|"checks quota"| node_rate_limit
node_recommend_controller -->|"requests plan"| node_recommend_service
node_recommend_service -->|"gets architecture"| node_gemini
node_gemini -.->|"requests structured plan"| node_gemini_api
node_recommend_service -->|"prices services"| node_cost
node_cost -->|"maps services and baselines"| node_catalog
node_cost -->|"gets live prices"| node_azure_pricing
node_azure_pricing -.->|"fetches prices"| node_azure_api
node_cost -->|"gets CSV prices"| node_gcp_pricing
node_gcp_pricing -.->|"reads"| node_gcp_csv
node_recommend_controller -->|"saves recommendation"| node_history_repo
node_recommend_controller -->|"loads user history"| node_history_repo
node_history_repo -->|"persists records"| node_postgres
node_user_repo -->|"persists accounts"| node_postgres

click node_app "https://github.com/phanindra798/cloud-service-recommendation/blob/main/frontend/src/App.js"
click node_pages "https://github.com/phanindra798/cloud-service-recommendation/tree/main/frontend/src/pages"
click node_api_client "https://github.com/phanindra798/cloud-service-recommendation/blob/main/frontend/src/lib/api.js"
click node_auth_client "https://github.com/phanindra798/cloud-service-recommendation/blob/main/frontend/src/lib/auth.js"
click node_results "https://github.com/phanindra798/cloud-service-recommendation/tree/main/frontend/src/components"
click node_history_ui "https://github.com/phanindra798/cloud-service-recommendation/blob/main/frontend/src/components/HistoryPanel.js"
click node_auth_controller "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/controller/AuthController.java"
click node_auth_service "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/AuthService.java"
click node_jwt "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/JwtService.java"
click node_user_repo "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/repository/UserRepository.java"
click node_security "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/config/JwtAuthFilter.java"
click node_recommend_controller "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/controller/RecommendationController.java"
click node_rate_limit "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/RateLimiterService.java"
click node_recommend_service "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/RecommendationService.java"
click node_gemini "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/GeminiService.java"
click node_cost "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/pricing/CostService.java"
click node_catalog "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/pricing/ServiceCatalog.java"
click node_azure_pricing "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/pricing/AzurePricingClient.java"
click node_gcp_pricing "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/pricing/GcpCsvPricing.java"
click node_history_repo "https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/repository/RecommendationHistoryRepository.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_app,node_pages,node_api_client,node_auth_client,node_results,node_history_ui,node_user toneBlue
class node_security,node_recommend_controller,node_rate_limit,node_postgres toneAmber
class node_recommend_service,node_gemini,node_cost,node_catalog,node_azure_pricing,node_gcp_pricing,node_azure_api toneMint
class node_auth_controller,node_auth_service,node_jwt,node_user_repo,node_history_repo toneRose
class node_gemini_api,node_gcp_csv toneIndigo
```

## Components

### React interface

- [Routes and access](https://github.com/phanindra798/cloud-service-recommendation/blob/main/frontend/src/App.js): `frontend/src/App.js`
- [Prompt and account pages](https://github.com/phanindra798/cloud-service-recommendation/tree/main/frontend/src/pages): `frontend/src/pages`
- [API client](https://github.com/phanindra798/cloud-service-recommendation/blob/main/frontend/src/lib/api.js): `frontend/src/lib/api.js`
- [Auth helpers](https://github.com/phanindra798/cloud-service-recommendation/blob/main/frontend/src/lib/auth.js): `frontend/src/lib/auth.js`
- [Results and diagram](https://github.com/phanindra798/cloud-service-recommendation/tree/main/frontend/src/components): `frontend/src/components`
- [History panel](https://github.com/phanindra798/cloud-service-recommendation/blob/main/frontend/src/components/HistoryPanel.js): `frontend/src/components/HistoryPanel.js`

### Backend API

- [JWT security filter](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/config/JwtAuthFilter.java): `backend/src/main/java/com/cloudrec/config/JwtAuthFilter.java`
- [Recommendation endpoint](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/controller/RecommendationController.java): `backend/src/main/java/com/cloudrec/controller/RecommendationController.java`
- [Rate limiter](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/RateLimiterService.java): `backend/src/main/java/com/cloudrec/service/RateLimiterService.java`

### Recommendation and pricing

- [Recommendation orchestration](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/RecommendationService.java): `backend/src/main/java/com/cloudrec/service/RecommendationService.java`
- [Structured AI planner](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/GeminiService.java): `backend/src/main/java/com/cloudrec/service/GeminiService.java`
- [Cost comparison](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/pricing/CostService.java): `backend/src/main/java/com/cloudrec/service/pricing/CostService.java`
- [Service catalog](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/pricing/ServiceCatalog.java): `backend/src/main/java/com/cloudrec/service/pricing/ServiceCatalog.java`
- [Azure price client](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/pricing/AzurePricingClient.java): `backend/src/main/java/com/cloudrec/service/pricing/AzurePricingClient.java`
- [GCP CSV pricing](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/pricing/GcpCsvPricing.java): `backend/src/main/java/com/cloudrec/service/pricing/GcpCsvPricing.java`

### Identity and history

- [Auth endpoints](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/controller/AuthController.java): `backend/src/main/java/com/cloudrec/controller/AuthController.java`
- [Account verification](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/AuthService.java): `backend/src/main/java/com/cloudrec/service/AuthService.java`
- [JWT tokens](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/service/JwtService.java): `backend/src/main/java/com/cloudrec/service/JwtService.java`
- [User repository](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/repository/UserRepository.java): `backend/src/main/java/com/cloudrec/repository/UserRepository.java`
- [History repository](https://github.com/phanindra798/cloud-service-recommendation/blob/main/backend/src/main/java/com/cloudrec/repository/RecommendationHistoryRepository.java): `backend/src/main/java/com/cloudrec/repository/RecommendationHistoryRepository.java`

### Other components

- **User**
- **Google Gemini**
- **Azure Retail Prices API**
- **Optional GCP price CSV**
- **PostgreSQL**

## Connections

- User → Routes and access: uses
- Routes and access → Prompt and account pages: routes to
- Prompt and account pages → API client: submits requests
- Prompt and account pages → Auth helpers: uses auth
- Prompt and account pages → Results and diagram: shows results
- Prompt and account pages → History panel: loads history
- API client → Auth endpoints: calls auth
- API client → Recommendation endpoint: calls API
- Auth endpoints → Account verification: registers and verifies
- Auth endpoints → JWT tokens: issues token
- Account verification → User repository: reads and writes
- JWT security filter → JWT tokens: validates token
- Recommendation endpoint → JWT security filter: requires authentication
- Recommendation endpoint → Rate limiter: checks quota
- Recommendation endpoint → Recommendation orchestration: requests plan
- Recommendation orchestration → Structured AI planner: gets architecture
- Structured AI planner → Google Gemini: requests structured plan
- Recommendation orchestration → Cost comparison: prices services
- Cost comparison → Service catalog: maps services and baselines
- Cost comparison → Azure price client: gets live prices
- Azure price client → Azure Retail Prices API: fetches prices
- Cost comparison → GCP CSV pricing: gets CSV prices
- GCP CSV pricing → Optional GCP price CSV: reads
- Recommendation endpoint → History repository: saves recommendation
- Recommendation endpoint → History repository: loads user history
- History repository → PostgreSQL: persists records
- User repository → PostgreSQL: persists accounts
