# kareemmas3ud/new-valley-hub architecture

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

- Interactive diagram: https://gitdiagram.com/kareemmas3ud/new-valley-hub
- Repository: https://github.com/kareemmas3ud/new-valley-hub

## Overview

New Valley Hub is an AI-powered tourism platform for discovering and planning visits to Egypt’s New Valley. Visitors browse attractions, hotels, services and artisan products; plan trips; and use map, museum, souvenir and emergency features. The React app connects to Django APIs, with tourism-specific planning and chat modules and separate catalog domains. The README documents additional capabilities, but sampled source confirms only app routing, authentication persistence and service-catalog requests; uncertain backend wiring is therefore not drawn.

Main entry points: [`frontend/src/App.jsx`](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/App.jsx) (App routes), [`frontend/src/services/api.js`](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/services/api.js) (API client), [`backend/tourism/views.py`](https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/views.py) (Tourism handlers), [`frontend/src/pages/PlannerPage.jsx`](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/PlannerPage.jsx) (Trip planner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Visitor experience"]
  node_app["App routes<br/>[App.jsx]"]
  node_explore["Attractions"]
  node_map["Interactive map<br/>[MapPage.jsx]"]
  node_planner["Trip planner<br/>[PlannerPage.jsx]"]
  node_museum["Virtual museum"]
  node_souvenir["Souvenir maker<br/>[SouvenirPage.jsx]"]
  node_sos["Emergency SOS<br/>[SOSButton.jsx]"]
  node_chat["AI guide<br/>[ChatbotWidget.jsx]"]
end

subgraph group_identity["Identity and trips"]
  node_auth["Auth context<br/>[AuthContext.jsx]"]
  node_trips["My trips<br/>[MyTrips.jsx]"]
end

subgraph group_catalogs["Tourism catalogs"]
  node_hotels["Hotels<br/>[HotelsPage.jsx]"]
  node_services["Services<br/>[ServicesPage.jsx]"]
  node_marketplace["Marketplace"]
  node_search["Global search<br/>[SearchResults.jsx]"]
end

subgraph group_platform["API and intelligence"]
  node_api["API client<br/>[api.js]"]
  node_tourism["Tourism API<br/>[urls.py]"]
  node_tourism_views["Tourism handlers<br/>[views.py]"]
  node_planner_ai["AI trip planning<br/>[ai_planner.py]"]
  node_chat_handler["Chat handler<br/>[chat_view.py]"]
  node_hospitality["Hospitality API<br/>[urls.py]"]
  node_services_api["Services API<br/>[urls.py]"]
  node_market_api["Marketplace API<br/>[urls.py]"]
  node_database[("Platform database<br/>[models.py]")]
end

node_visitor(("Visitor"))
node_gemini{{"Google Gemini"}}

node_visitor -->|"uses"| node_app
node_app -->|"routes to"| node_explore
node_app -->|"routes to"| node_map
node_app -->|"routes to"| node_planner
node_app -->|"routes to"| node_museum
node_app -->|"routes to"| node_souvenir
node_app -->|"renders"| node_sos
node_app -->|"renders"| node_chat
node_app -->|"provides context"| node_auth
node_app -->|"routes to"| node_trips
node_app -->|"routes to"| node_hotels
node_app -->|"routes to"| node_services
node_app -->|"routes to"| node_marketplace
node_app -->|"routes to"| node_search
node_services -->|"requests services"| node_api
node_auth -->|"requests authentication"| node_api
node_planner -->|"requests plans"| node_api
node_chat -->|"requests answers"| node_api
node_api -->|"sends requests"| node_tourism
node_api -->|"sends requests"| node_hospitality
node_api -->|"sends requests"| node_services_api
node_api -->|"sends requests"| node_market_api
node_tourism -->|"dispatches"| node_tourism_views
node_tourism_views -->|"generates itinerary"| node_planner_ai
node_tourism_views -->|"handles chat"| node_chat_handler
node_chat_handler -.->|"queries"| node_gemini
node_planner_ai -.->|"queries"| node_gemini
node_tourism_views -->|"reads and writes"| node_database

click node_app "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/App.jsx"
click node_explore "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/AttractionsPage.jsx"
click node_map "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/MapPage.jsx"
click node_planner "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/PlannerPage.jsx"
click node_museum "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/VirtualMuseumPage.jsx"
click node_souvenir "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/SouvenirPage.jsx"
click node_sos "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/components/SOSButton.jsx"
click node_auth "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/context/AuthContext.jsx"
click node_trips "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/MyTrips.jsx"
click node_hotels "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/HotelsPage.jsx"
click node_services "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/ServicesPage.jsx"
click node_marketplace "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/MarketplacePage.jsx"
click node_search "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/SearchResults.jsx"
click node_chat "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/components/ChatbotWidget.jsx"
click node_api "https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/services/api.js"
click node_tourism "https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/urls.py"
click node_tourism_views "https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/views.py"
click node_planner_ai "https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/ai_planner.py"
click node_chat_handler "https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/chat_view.py"
click node_hospitality "https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/hospitality/urls.py"
click node_services_api "https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/services/urls.py"
click node_market_api "https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/marketplace/urls.py"
click node_database "https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/models.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_app,node_explore,node_map,node_planner,node_museum,node_souvenir,node_sos,node_chat toneBlue
class node_auth,node_trips toneAmber
class node_hotels,node_services,node_marketplace,node_search toneMint
class node_api,node_tourism,node_tourism_views,node_planner_ai,node_chat_handler,node_hospitality,node_services_api,node_market_api,node_database toneRose
class node_visitor,node_gemini toneIndigo
```

## Components

### Visitor experience

- [App routes](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Attractions](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/AttractionsPage.jsx): `frontend/src/pages/AttractionsPage.jsx`
- [Interactive map](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/MapPage.jsx): `frontend/src/pages/MapPage.jsx`
- [Trip planner](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/PlannerPage.jsx): `frontend/src/pages/PlannerPage.jsx`
- [Virtual museum](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/VirtualMuseumPage.jsx): `frontend/src/pages/VirtualMuseumPage.jsx`
- [Souvenir maker](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/SouvenirPage.jsx): `frontend/src/pages/SouvenirPage.jsx`
- [Emergency SOS](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/components/SOSButton.jsx): `frontend/src/components/SOSButton.jsx`
- [AI guide](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/components/ChatbotWidget.jsx): `frontend/src/components/ChatbotWidget.jsx`

### Identity and trips

- [Auth context](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [My trips](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/MyTrips.jsx): `frontend/src/pages/MyTrips.jsx`

### Tourism catalogs

- [Hotels](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/HotelsPage.jsx): `frontend/src/pages/HotelsPage.jsx`
- [Services](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/ServicesPage.jsx): `frontend/src/pages/ServicesPage.jsx`
- [Marketplace](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/MarketplacePage.jsx): `frontend/src/pages/MarketplacePage.jsx`
- [Global search](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/pages/SearchResults.jsx): `frontend/src/pages/SearchResults.jsx`

### API and intelligence

- [API client](https://github.com/kareemmas3ud/new-valley-hub/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [Tourism API](https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/urls.py): `backend/tourism/urls.py`
- [Tourism handlers](https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/views.py): `backend/tourism/views.py`
- [AI trip planning](https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/ai_planner.py): `backend/tourism/ai_planner.py`
- [Chat handler](https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/chat_view.py): `backend/tourism/chat_view.py`
- [Hospitality API](https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/hospitality/urls.py): `backend/hospitality/urls.py`
- [Services API](https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/services/urls.py): `backend/services/urls.py`
- [Marketplace API](https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/marketplace/urls.py): `backend/marketplace/urls.py`
- [Platform database](https://github.com/kareemmas3ud/new-valley-hub/blob/main/backend/tourism/models.py): `backend/tourism/models.py`

### Other components

- **Visitor**
- **Google Gemini**

## Connections

- Visitor → App routes: uses
- App routes → Attractions: routes to
- App routes → Interactive map: routes to
- App routes → Trip planner: routes to
- App routes → Virtual museum: routes to
- App routes → Souvenir maker: routes to
- App routes → Emergency SOS: renders
- App routes → AI guide: renders
- App routes → Auth context: provides context
- App routes → My trips: routes to
- App routes → Hotels: routes to
- App routes → Services: routes to
- App routes → Marketplace: routes to
- App routes → Global search: routes to
- Services → API client: requests services
- Auth context → API client: requests authentication
- Trip planner → API client: requests plans
- AI guide → API client: requests answers
- API client → Tourism API: sends requests
- API client → Hospitality API: sends requests
- API client → Services API: sends requests
- API client → Marketplace API: sends requests
- Tourism API → Tourism handlers: dispatches
- Tourism handlers → AI trip planning: generates itinerary
- Tourism handlers → Chat handler: handles chat
- Chat handler → Google Gemini: queries
- AI trip planning → Google Gemini: queries
- Tourism handlers → Platform database: reads and writes
