# rzmy7/hotel-and-restaurant-review-management-system architecture

> Architecture diagram of the GitHub repository rzmy7/hotel-and-restaurant-review-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rzmy7/hotel-and-restaurant-review-management-system
- Repository: https://github.com/rzmy7/hotel-and-restaurant-review-management-system

## Overview

This is a multi-tenant hospitality review intelligence platform with tenant and administrator portals, a modular FastAPI backend, and dedicated scraper and embedding services. The principal workflow is collecting platform reviews, ingesting and analyzing them, indexing them for semantic search, and presenting results and reply tools to tenants. The README documents the overall service topology; sampled source confirms review ingestion and embedding calls. Several capabilities are documented but their implementation was not sampled, so those links reflect README evidence rather than inspected call paths.

Main entry points: [`backend/app/modules/reviews/services/review_service.py`](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/reviews/services/review_service.py) (Review ingestion), [`backend/app/main.py`](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/main.py) (Backend API), [`frontend/src/App.tsx`](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/frontend/src/App.tsx) (Tenant portal), [`frontend/src/services/reviewsService.ts`](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/frontend/src/services/reviewsService.ts) (Review workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_tenant["Tenant experience"]
  node_tenant_portal["Tenant portal<br/>[App.tsx]"]
  node_review_ui["Review workspace<br/>[reviewsService.ts]"]
  node_review_types["Review data types<br/>[reviews.ts]"]
end

subgraph group_review["Review intelligence"]
  node_review_ingestion["Review ingestion<br/>[review_service.py]"]
  node_review_processing["Review analysis<br/>[processor.py]"]
  node_source_management["Source management<br/>[source_service.py]"]
  node_embedding_client["Embedding client"]
  node_dashboard["Review analytics<br/>[metrics_service.py]"]
  node_competitor_intelligence["Competitor intelligence"]
end

subgraph group_platform["Platform services"]
  node_backend_api["Backend API<br/>[main.py]"]
  node_scraper["Scraper engine<br/>[main.py]"]
  node_broker["Message broker"]
  node_embedding_service["Embedding service<br/>[embedding.py]"]
  node_vector_store[("Vector database")]
  node_llm_gateway["LLM gateway<br/>[llm_gateway.py]"]
  node_relational_db[("Relational database<br/>[db_utils.py]")]
  node_user_models["User and notification models<br/>[__init__.py]"]
  node_notifications["Notifications"]
  node_email_service["Email delivery<br/>[email_service.py]"]
  node_app_config["Backend configuration<br/>[config.py]"]
  node_db_session["Database sessions<br/>[session.py]"]
  node_pyodbc["SQL connection utilities"]
end

subgraph group_admin["Administration"]
  node_admin_portal["Admin portal<br/>[App.tsx]"]
  node_admin_api_client["Admin API client<br/>[client.ts]"]
  node_admin_controls["Admin controls"]
  node_system_settings["System settings"]
  node_subscription_service["Subscriptions"]
end

node_tenant_user(("Tenant user"))
node_review_platforms(("Review platforms"))

node_tenant_user -->|"uses"| node_tenant_portal
node_tenant_portal -->|"opens reviews"| node_review_ui
node_review_ui -->|"requests reviews"| node_backend_api
node_review_ui -->|"uses types"| node_review_types
node_backend_api -.->|"routes review work"| node_review_ingestion
node_review_platforms -->|"provides reviews"| node_scraper
node_scraper -->|"queues scrape jobs"| node_broker
node_backend_api -->|"publishes jobs"| node_broker
node_review_ingestion -->|"fetches review batches"| node_scraper
node_review_ingestion -->|"invokes processing"| node_review_processing
node_review_ingestion -->|"stores reviews"| node_relational_db
node_review_ingestion -->|"uses source data"| node_source_management
node_review_ingestion -->|"triggers embedding"| node_embedding_client
node_embedding_client -->|"sends review text"| node_embedding_service
node_embedding_service -->|"indexes vectors"| node_vector_store
node_tenant_portal -->|"views analytics"| node_dashboard
node_competitor_intelligence -->|"requests analysis"| node_llm_gateway
node_admin_portal -->|"uses client"| node_admin_api_client
node_admin_api_client -->|"calls API"| node_backend_api
node_admin_controls -->|"reads and writes"| node_system_settings
node_admin_controls -->|"configures models"| node_llm_gateway
node_review_processing -->|"uses language models"| node_llm_gateway
node_review_ingestion -->|"checks review limits"| node_subscription_service
node_subscription_service -.->|"notifies limits"| node_notifications
node_notifications -->|"creates notifications"| node_user_models
node_notifications -->|"sends email"| node_email_service
node_app_config -->|"configures services"| node_backend_api
node_db_session -->|"reads database URL"| node_app_config
node_pyodbc -->|"reads connection settings"| node_app_config

click node_tenant_portal "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/frontend/src/App.tsx"
click node_review_ui "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/frontend/src/services/reviewsService.ts"
click node_review_types "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/frontend/src/types/reviews.ts"
click node_backend_api "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/main.py"
click node_review_ingestion "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/reviews/services/review_service.py"
click node_review_processing "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/reviews/services/processor.py"
click node_scraper "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/microservices/scraper_engine/api/main.py"
click node_source_management "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/source/services/source_service.py"
click node_embedding_client "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/source/services/embedding_client.py"
click node_embedding_service "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/microservices/embedding-service/app/embedding.py"
click node_dashboard "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/dashboard/services/metrics_service.py"
click node_competitor_intelligence "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/competitors/services/scraping_pipeline.py"
click node_llm_gateway "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/services/llm_gateway.py"
click node_relational_db "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/core/db_utils.py"
click node_admin_portal "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/admin-frontend/src/App.tsx"
click node_admin_api_client "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/admin-frontend/src/api/client.ts"
click node_admin_controls "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/admin/routes/llm_model_routes.py"
click node_system_settings "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/admin/services/system_settings_service.py"
click node_subscription_service "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/admin/services/subscription_service.py"
click node_user_models "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/auth/models/__init__.py"
click node_notifications "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/services/notification_helpers.py"
click node_email_service "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/auth/services/email_service.py"
click node_app_config "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/core/config.py"
click node_db_session "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/database/session.py"
click node_pyodbc "https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/core/pyodbc_connection.py"

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_tenant_portal,node_review_ui,node_review_types,node_tenant_user,node_review_platforms toneBlue
class node_review_ingestion,node_review_processing,node_source_management,node_embedding_client,node_dashboard,node_competitor_intelligence toneAmber
class node_backend_api,node_scraper,node_broker,node_embedding_service,node_vector_store,node_llm_gateway,node_relational_db,node_user_models,node_notifications,node_email_service,node_app_config,node_db_session,node_pyodbc toneMint
class node_admin_portal,node_admin_api_client,node_admin_controls,node_system_settings,node_subscription_service toneRose
```

## Components

### Tenant experience

- [Tenant portal](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Review workspace](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/frontend/src/services/reviewsService.ts): `frontend/src/services/reviewsService.ts`
- [Review data types](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/frontend/src/types/reviews.ts): `frontend/src/types/reviews.ts`

### Review intelligence

- [Review ingestion](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/reviews/services/review_service.py): `backend/app/modules/reviews/services/review_service.py`
- [Review analysis](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/reviews/services/processor.py): `backend/app/modules/reviews/services/processor.py`
- [Source management](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/source/services/source_service.py): `backend/app/modules/source/services/source_service.py`
- [Embedding client](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/source/services/embedding_client.py): `backend/app/modules/source/services/embedding_client.py`
- [Review analytics](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/dashboard/services/metrics_service.py): `backend/app/modules/dashboard/services/metrics_service.py`
- [Competitor intelligence](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/competitors/services/scraping_pipeline.py): `backend/app/modules/competitors/services/scraping_pipeline.py`

### Platform services

- [Backend API](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/main.py): `backend/app/main.py`
- [Scraper engine](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/microservices/scraper_engine/api/main.py): `microservices/scraper_engine/api/main.py`
- **Message broker**
- [Embedding service](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/microservices/embedding-service/app/embedding.py): `microservices/embedding-service/app/embedding.py`
- **Vector database**
- [LLM gateway](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/services/llm_gateway.py): `backend/app/services/llm_gateway.py`
- [Relational database](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/core/db_utils.py): `backend/app/core/db_utils.py`
- [User and notification models](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/auth/models/__init__.py): `backend/app/modules/auth/models/__init__.py`
- [Notifications](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/services/notification_helpers.py): `backend/app/services/notification_helpers.py`
- [Email delivery](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/auth/services/email_service.py): `backend/app/modules/auth/services/email_service.py`
- [Backend configuration](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/core/config.py): `backend/app/core/config.py`
- [Database sessions](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/database/session.py): `backend/app/database/session.py`
- [SQL connection utilities](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/core/pyodbc_connection.py): `backend/app/core/pyodbc_connection.py`

### Administration

- [Admin portal](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/admin-frontend/src/App.tsx): `admin-frontend/src/App.tsx`
- [Admin API client](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/admin-frontend/src/api/client.ts): `admin-frontend/src/api/client.ts`
- [Admin controls](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/admin/routes/llm_model_routes.py): `backend/app/modules/admin/routes/llm_model_routes.py`
- [System settings](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/admin/services/system_settings_service.py): `backend/app/modules/admin/services/system_settings_service.py`
- [Subscriptions](https://github.com/rzmy7/hotel-and-restaurant-review-management-system/blob/main/backend/app/modules/admin/services/subscription_service.py): `backend/app/modules/admin/services/subscription_service.py`

### Other components

- **Tenant user**
- **Review platforms**

## Connections

- Tenant user → Tenant portal: uses (evidence: `README.md`)
- Tenant portal → Review workspace: opens reviews (evidence: `frontend/src/App.tsx`)
- Review workspace → Backend API: requests reviews (evidence: `frontend/src/services/reviewsService.ts`)
- Review workspace → Review data types: uses types (evidence: `frontend/src/services/reviewsService.ts`)
- Backend API → Review ingestion: routes review work
- Review platforms → Scraper engine: provides reviews (evidence: `README.md`)
- Scraper engine → Message broker: queues scrape jobs (evidence: `README.md`)
- Backend API → Message broker: publishes jobs (evidence: `README.md`)
- Review ingestion → Scraper engine: fetches review batches (evidence: `backend/app/modules/reviews/services/review_service.py`)
- Review ingestion → Review analysis: invokes processing (evidence: `backend/app/modules/reviews/services/review_service.py`)
- Review ingestion → Relational database: stores reviews (evidence: `backend/app/modules/reviews/services/review_service.py`)
- Review ingestion → Source management: uses source data (evidence: `backend/app/modules/reviews/services/review_service.py`)
- Review ingestion → Embedding client: triggers embedding (evidence: `backend/app/modules/reviews/services/review_service.py`)
- Embedding client → Embedding service: sends review text (evidence: `backend/app/modules/source/services/embedding_client.py`)
- Embedding service → Vector database: indexes vectors (evidence: `README.md`)
- Tenant portal → Review analytics: views analytics (evidence: `README.md`)
- Competitor intelligence → LLM gateway: requests analysis (evidence: `backend/app/modules/competitors/services/scraping_pipeline.py`)
- Admin portal → Admin API client: uses client (evidence: `admin-frontend/src/App.tsx`)
- Admin API client → Backend API: calls API (evidence: `README.md`)
- Admin controls → System settings: reads and writes (evidence: `backend/app/modules/admin/routes/llm_model_routes.py`)
- Admin controls → LLM gateway: configures models (evidence: `backend/app/modules/admin/routes/llm_model_routes.py`)
- Review analysis → LLM gateway: uses language models (evidence: `README.md`)
- Review ingestion → Subscriptions: checks review limits (evidence: `backend/app/modules/reviews/services/review_service.py`)
- Subscriptions → Notifications: notifies limits
- Notifications → User and notification models: creates notifications (evidence: `backend/app/services/notification_helpers.py`)
- Notifications → Email delivery: sends email (evidence: `backend/app/services/notification_helpers.py`)
- Backend configuration → Backend API: configures services (evidence: `backend/app/core/config.py`)
- Database sessions → Backend configuration: reads database URL (evidence: `backend/app/database/session.py`)
- SQL connection utilities → Backend configuration: reads connection settings (evidence: `backend/app/core/pyodbc_connection.py`)
