# phuong1274/hangout-smart-travel-system architecture

> Architecture diagram of the GitHub repository phuong1274/hangout-smart-travel-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/phuong1274/hangout-smart-travel-system
- Repository: https://github.com/phuong1274/hangout-smart-travel-system

## Overview

HSTS is a smart-travel platform backend for discovering destinations, generating itineraries, and managing shared trips, with supporting accounts, reviews, and administration. The principal workflow is a traveler requesting an itinerary through the API; the itinerary query reads trip history and builds day-by-day activities and transport options, including intercity searches. The tree also shows catalog, expense, invitation, and moderation capabilities. Evidence is strongest for API dispatch, itinerary logic, review endpoints, and selected frontend hooks; many feature-to-handler and frontend-to-backend links are not shown in the sampled source.

Main entry points: [`HSTS.BE/HSTS.Infrastructure/Persistence/AppDbContext.cs`](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Infrastructure/Persistence/AppDbContext.cs) (Application database), [`HSTS.BE/HSTS.Application/Reviews/Commands/CreateReviewCommand.cs`](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Reviews/Commands/CreateReviewCommand.cs) (Reviews and reports), [`HSTS.BE/HSTS.Application/Itineraries/Queries/GenerateItineraryQuery.cs`](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Itineraries/Queries/GenerateItineraryQuery.cs) (Itinerary generation), [`HSTS.FE/src/routes/RouteShell.jsx`](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.FE/src/routes/RouteShell.jsx) (Web client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and access"]
  node_web["Web client<br/>[RouteShell.jsx]"]
  node_api_host["API host<br/>[Program.cs]"]
  node_reviews_api["Review endpoints"]
  node_moderation_api["Moderation endpoints"]
end

subgraph group_planning["Travel planning"]
  node_itinerary["Itinerary generation"]
  node_transport_search["Sandbox transport search"]
  node_fixed_transport["Intercity transport"]
end

subgraph group_tripops["Trip operations"]
  node_trips_api["Trip endpoints<br/>[TripsController.cs]"]
  node_trip_features["Trips and members<br/>[SaveTripCommand.cs]"]
  node_expenses["Expenses and budgets<br/>[ExpenseQueries.cs]"]
  node_invitations["Trip invitations"]
end

subgraph group_catalog["Destination catalog"]
  node_locations["Location discovery"]
  node_submissions["Location submissions"]
  node_reviews["Reviews and reports"]
end

subgraph group_platform["Accounts and platform"]
  node_auth["Authentication<br/>[useAuth.js]"]
  node_token_storage["Token storage<br/>[storage.js]"]
  node_nominatim["Place search"]
  node_database[("Application database<br/>[AppDbContext.cs]")]
end

node_traveler(("Traveler"))
node_nominatim_service["Nominatim"]

node_traveler -->|"uses"| node_web
node_web -->|"sends requests"| node_api_host
node_api_host -->|"maps controllers"| node_reviews_api
node_reviews_api -->|"dispatches queries"| node_reviews
node_moderation_api -->|"dispatches commands"| node_reviews
node_itinerary -->|"reads trip history"| node_database
node_itinerary -->|"searches routes"| node_fixed_transport
node_trips_api -->|"handles trip operations"| node_trip_features
node_trip_features -->|"persists trips"| node_database
node_expenses -->|"reads and writes"| node_database
node_invitations -->|"reads and writes"| node_database
node_locations -->|"reads locations"| node_database
node_submissions -->|"reads and writes"| node_database
node_reviews -->|"reads and writes"| node_database
node_auth -->|"stores redirects"| node_token_storage
node_nominatim -->|"searches places"| node_nominatim_service

click node_web "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.FE/src/routes/RouteShell.jsx"
click node_api_host "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.API/Program.cs"
click node_reviews_api "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.API/Controllers/ReviewsController.cs"
click node_moderation_api "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.API/Controllers/AdminReviewModerationController.cs"
click node_itinerary "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Itineraries/Queries/GenerateItineraryQuery.cs"
click node_transport_search "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Infrastructure/Services/SandboxTravelSearchService.cs"
click node_fixed_transport "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Interfaces/IFixedIntercityTransportService.cs"
click node_trips_api "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.API/Controllers/TripsController.cs"
click node_trip_features "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Trips/Commands/SaveTripCommand.cs"
click node_expenses "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Expenses/Queries/ExpenseQueries.cs"
click node_invitations "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Invitations/Commands/InvitationCommands.cs"
click node_locations "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Locations/Queries/GetPublicLocationsQuery.cs"
click node_submissions "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/LocationSubmissions/Commands/ReviewLocationSubmissionCommand.cs"
click node_reviews "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Reviews/Commands/CreateReviewCommand.cs"
click node_auth "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.FE/src/features/auth/hooks/useAuth.js"
click node_token_storage "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.FE/src/utils/storage.js"
click node_nominatim "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.FE/src/hooks/useNominatimSearch.js"
click node_database "https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Infrastructure/Persistence/AppDbContext.cs"

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_web,node_api_host,node_reviews_api,node_moderation_api toneBlue
class node_itinerary,node_transport_search,node_fixed_transport toneAmber
class node_trips_api,node_trip_features,node_expenses,node_invitations toneMint
class node_locations,node_submissions,node_reviews toneRose
class node_auth,node_token_storage,node_nominatim,node_database,node_traveler,node_nominatim_service toneIndigo
```

## Components

### API and access

- [Web client](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.FE/src/routes/RouteShell.jsx): `HSTS.FE/src/routes/RouteShell.jsx`
- [API host](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.API/Program.cs): `HSTS.BE/HSTS.API/Program.cs`
- [Review endpoints](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.API/Controllers/ReviewsController.cs): `HSTS.BE/HSTS.API/Controllers/ReviewsController.cs`
- [Moderation endpoints](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.API/Controllers/AdminReviewModerationController.cs): `HSTS.BE/HSTS.API/Controllers/AdminReviewModerationController.cs`

### Travel planning

- [Itinerary generation](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Itineraries/Queries/GenerateItineraryQuery.cs): `HSTS.BE/HSTS.Application/Itineraries/Queries/GenerateItineraryQuery.cs`
- [Sandbox transport search](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Infrastructure/Services/SandboxTravelSearchService.cs): `HSTS.BE/HSTS.Infrastructure/Services/SandboxTravelSearchService.cs`
- [Intercity transport](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Interfaces/IFixedIntercityTransportService.cs): `HSTS.BE/HSTS.Application/Interfaces/IFixedIntercityTransportService.cs`

### Trip operations

- [Trip endpoints](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.API/Controllers/TripsController.cs): `HSTS.BE/HSTS.API/Controllers/TripsController.cs`
- [Trips and members](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Trips/Commands/SaveTripCommand.cs): `HSTS.BE/HSTS.Application/Trips/Commands/SaveTripCommand.cs`
- [Expenses and budgets](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Expenses/Queries/ExpenseQueries.cs): `HSTS.BE/HSTS.Application/Expenses/Queries/ExpenseQueries.cs`
- [Trip invitations](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Invitations/Commands/InvitationCommands.cs): `HSTS.BE/HSTS.Application/Invitations/Commands/InvitationCommands.cs`

### Destination catalog

- [Location discovery](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Locations/Queries/GetPublicLocationsQuery.cs): `HSTS.BE/HSTS.Application/Locations/Queries/GetPublicLocationsQuery.cs`
- [Location submissions](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/LocationSubmissions/Commands/ReviewLocationSubmissionCommand.cs): `HSTS.BE/HSTS.Application/LocationSubmissions/Commands/ReviewLocationSubmissionCommand.cs`
- [Reviews and reports](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Application/Reviews/Commands/CreateReviewCommand.cs): `HSTS.BE/HSTS.Application/Reviews/Commands/CreateReviewCommand.cs`

### Accounts and platform

- [Authentication](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.FE/src/features/auth/hooks/useAuth.js): `HSTS.FE/src/features/auth/hooks/useAuth.js`
- [Token storage](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.FE/src/utils/storage.js): `HSTS.FE/src/utils/storage.js`
- [Place search](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.FE/src/hooks/useNominatimSearch.js): `HSTS.FE/src/hooks/useNominatimSearch.js`
- [Application database](https://github.com/phuong1274/hangout-smart-travel-system/blob/main/HSTS.BE/HSTS.Infrastructure/Persistence/AppDbContext.cs): `HSTS.BE/HSTS.Infrastructure/Persistence/AppDbContext.cs`

### Other components

- **Traveler**
- **Nominatim**

## Connections

- Traveler → Web client: uses
- Web client → API host: sends requests
- API host → Review endpoints: maps controllers
- Review endpoints → Reviews and reports: dispatches queries
- Moderation endpoints → Reviews and reports: dispatches commands
- Itinerary generation → Application database: reads trip history
- Itinerary generation → Intercity transport: searches routes
- Trip endpoints → Trips and members: handles trip operations
- Trips and members → Application database: persists trips
- Expenses and budgets → Application database: reads and writes
- Trip invitations → Application database: reads and writes
- Location discovery → Application database: reads locations
- Location submissions → Application database: reads and writes
- Reviews and reports → Application database: reads and writes
- Authentication → Token storage: stores redirects
- Place search → Nominatim: searches places
