How phanindra798/cloud-service-recommendation works
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: RecommendationController.java Recommendation endpoint · pages Prompt and account pages · CostService.java Cost comparison · api.js API client
Components 25
React interface
- Routes and access
frontend/src/App.js - Prompt and account pages
frontend/src/pages - API client
frontend/src/lib/api.js - Auth helpers
frontend/src/lib/auth.js - Results and diagram
frontend/src/components - History panel
frontend/src/components/HistoryPanel.js
Backend API
- JWT security filter
backend/src/main/java/com/cloudrec/config/JwtAuthFilter.java - Recommendation endpoint
backend/src/main/java/com/cloudrec/controller/RecommendationController.java - Rate limiter
backend/src/main/java/com/cloudrec/service/RateLimiterService.java
Recommendation and pricing
- Recommendation orchestration
backend/src/main/java/com/cloudrec/service/RecommendationService.java - Structured AI planner
backend/src/main/java/com/cloudrec/service/GeminiService.java - Cost comparison
backend/src/main/java/com/cloudrec/service/pricing/CostService.java - Service catalog
backend/src/main/java/com/cloudrec/service/pricing/ServiceCatalog.java - Azure price client
backend/src/main/java/com/cloudrec/service/pricing/AzurePricingClient.java - GCP CSV pricing
backend/src/main/java/com/cloudrec/service/pricing/GcpCsvPricing.java
Identity and history
- Auth endpoints
backend/src/main/java/com/cloudrec/controller/AuthController.java - Account verification
backend/src/main/java/com/cloudrec/service/AuthService.java - JWT tokens
backend/src/main/java/com/cloudrec/service/JwtService.java - User repository
backend/src/main/java/com/cloudrec/repository/UserRepository.java - History repository
backend/src/main/java/com/cloudrec/repository/RecommendationHistoryRepository.java
Other components
- User
- Google Gemini
- Azure Retail Prices API
- Optional GCP price CSV
- PostgreSQL
Connections 27
- 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