# ayushhtiw/travel.it architecture

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

- Interactive diagram: https://gitdiagram.com/ayushhtiw/travel.it
- Repository: https://github.com/ayushhtiw/travel.it

## Overview

Travel.it is a full-stack trip-planning platform: users discover destinations and places, plan day-by-day itineraries, manage budgets, and can chat with an AI travel assistant. The frontend provides routed screens and API services; the Spring Boot backend exposes domain APIs and persists application data. The graph preserves the README’s major features. Some frontend-to-backend links are documented only at the architectural level; unsampled implementation details are not assumed.

Main entry points: [`backend/src/main/java/com/travelit/ai/service/AiService.java`](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/service/AiService.java) (AI conversation service), [`backend/src/main/java/com/travelit/place/service/PlaceService.java`](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/place/service/PlaceService.java) (Places and maps), [`frontend/src/main.tsx`](https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/main.tsx) (Travel.it UI), [`frontend/src/services/api.ts`](https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/services/api.ts) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_web["Travel.it UI<br/>[main.tsx]"]
  node_routes["Routed screens<br/>[routeTree.gen.ts]"]
  node_api["API client<br/>[api.ts]"]
  node_authui["Auth services<br/>[authService.ts]"]
  node_aiui["Trevvy chat UI<br/>[Trevvy.tsx]"]
end

subgraph group_identity["Identity"]
  node_authapi["Auth API"]
  node_authlogic["Auth service<br/>[AuthService.java]"]
  node_users[("User records<br/>[User.java]")]
end

subgraph group_discovery["Travel discovery"]
  node_destinations["Destinations"]
  node_places["Places and maps<br/>[PlaceService.java]"]
  node_reviews["Place reviews<br/>[ReviewService.java]"]
  node_nearby["Nearby discovery"]
end

subgraph group_planning["Trip planning"]
  node_trips[("Trips and days<br/>[Trip.java]")]
  node_itinerary["Itinerary items"]
  node_budgets["Trip budgets<br/>[BudgetService.java]"]
  node_weather["Trip weather"]
end

subgraph group_assist["AI assistance"]
  node_aicontroller["AI API<br/>[AiController.java]"]
  node_ai["AI conversation service<br/>[AiService.java]"]
  node_prompt["Prompt builder"]
  node_provider["AI provider<br/>[AiProvider.java]"]
  node_aihistory[("Conversation history")]
end

node_traveler(("Traveler"))
node_google["Google Places"]
node_groq["Groq AI"]

node_traveler -->|"uses"| node_web
node_web -->|"starts"| node_routes
node_traveler -->|"signs in"| node_authui
node_authui -->|"calls"| node_api
node_api -.->|"HTTP requests"| node_authapi
node_authapi -.->|"delegates"| node_authlogic
node_authlogic -->|"reads and saves"| node_users
node_traveler -->|"discovers"| node_destinations
node_traveler -->|"explores nearby"| node_nearby
node_places -->|"searches places"| node_google
node_reviews -->|"checks place"| node_places
node_traveler -->|"plans trips"| node_trips
node_traveler -->|"edits schedule"| node_itinerary
node_traveler -->|"tracks spending"| node_budgets
node_traveler -.->|"checks weather"| node_weather
node_traveler -->|"chats with"| node_aiui
node_aiui -.->|"sends messages"| node_aicontroller
node_aicontroller -.->|"delegates"| node_ai
node_ai -->|"builds prompts"| node_prompt
node_ai -->|"requests response"| node_provider
node_ai -->|"stores messages"| node_aihistory
node_ai -->|"gets nearby context"| node_places
node_provider -.->|"generates replies"| node_groq

click node_web "https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/main.tsx"
click node_routes "https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/routeTree.gen.ts"
click node_api "https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/services/api.ts"
click node_authui "https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/services/authService.ts"
click node_authapi "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/auth/controller/AuthController.java"
click node_authlogic "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/auth/service/AuthService.java"
click node_users "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/auth/entity/User.java"
click node_destinations "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/destination/service/DestinationService.java"
click node_places "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/place/service/PlaceService.java"
click node_reviews "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/review/service/ReviewService.java"
click node_nearby "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/explore/service/ExploreService.java"
click node_trips "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/trip/entity/Trip.java"
click node_itinerary "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/trip/service/ItineraryItemService.java"
click node_budgets "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/budget/service/BudgetService.java"
click node_weather "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/weather/service/WeatherService.java"
click node_aiui "https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/components/ai/Trevvy.tsx"
click node_aicontroller "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/controller/AiController.java"
click node_ai "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/service/AiService.java"
click node_prompt "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/prompt/AiPromptBuilder.java"
click node_provider "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/provider/AiProvider.java"
click node_aihistory "https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/entity/AiConversation.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_web,node_routes,node_api,node_authui,node_aiui toneBlue
class node_authapi,node_authlogic,node_users toneAmber
class node_destinations,node_places,node_reviews,node_nearby toneMint
class node_trips,node_itinerary,node_budgets,node_weather toneRose
class node_aicontroller,node_ai,node_prompt,node_provider,node_aihistory,node_traveler,node_google,node_groq toneIndigo
```

## Components

### Web client

- [Travel.it UI](https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/main.tsx): `frontend/src/main.tsx`
- [Routed screens](https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/routeTree.gen.ts): `frontend/src/routeTree.gen.ts`
- [API client](https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/services/api.ts): `frontend/src/services/api.ts`
- [Auth services](https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/services/authService.ts): `frontend/src/services/authService.ts`
- [Trevvy chat UI](https://github.com/ayushhtiw/travel.it/blob/main/frontend/src/components/ai/Trevvy.tsx): `frontend/src/components/ai/Trevvy.tsx`

### Identity

- [Auth API](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/auth/controller/AuthController.java): `backend/src/main/java/com/travelit/auth/controller/AuthController.java`
- [Auth service](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/auth/service/AuthService.java): `backend/src/main/java/com/travelit/auth/service/AuthService.java`
- [User records](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/auth/entity/User.java): `backend/src/main/java/com/travelit/auth/entity/User.java`

### Travel discovery

- [Destinations](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/destination/service/DestinationService.java): `backend/src/main/java/com/travelit/destination/service/DestinationService.java`
- [Places and maps](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/place/service/PlaceService.java): `backend/src/main/java/com/travelit/place/service/PlaceService.java`
- [Place reviews](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/review/service/ReviewService.java): `backend/src/main/java/com/travelit/review/service/ReviewService.java`
- [Nearby discovery](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/explore/service/ExploreService.java): `backend/src/main/java/com/travelit/explore/service/ExploreService.java`

### Trip planning

- [Trips and days](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/trip/entity/Trip.java): `backend/src/main/java/com/travelit/trip/entity/Trip.java`
- [Itinerary items](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/trip/service/ItineraryItemService.java): `backend/src/main/java/com/travelit/trip/service/ItineraryItemService.java`
- [Trip budgets](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/budget/service/BudgetService.java): `backend/src/main/java/com/travelit/budget/service/BudgetService.java`
- [Trip weather](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/weather/service/WeatherService.java): `backend/src/main/java/com/travelit/weather/service/WeatherService.java`

### AI assistance

- [AI API](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/controller/AiController.java): `backend/src/main/java/com/travelit/ai/controller/AiController.java`
- [AI conversation service](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/service/AiService.java): `backend/src/main/java/com/travelit/ai/service/AiService.java`
- [Prompt builder](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/prompt/AiPromptBuilder.java): `backend/src/main/java/com/travelit/ai/prompt/AiPromptBuilder.java`
- [AI provider](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/provider/AiProvider.java): `backend/src/main/java/com/travelit/ai/provider/AiProvider.java`
- [Conversation history](https://github.com/ayushhtiw/travel.it/blob/main/backend/src/main/java/com/travelit/ai/entity/AiConversation.java): `backend/src/main/java/com/travelit/ai/entity/AiConversation.java`

### Other components

- **Traveler**
- **Google Places**
- **Groq AI**

## Connections

- Traveler → Travel.it UI: uses (evidence: `README.md`)
- Travel.it UI → Routed screens: starts (evidence: `frontend/src/main.tsx`)
- Traveler → Auth services: signs in (evidence: `README.md`)
- Auth services → API client: calls (evidence: `frontend/src/services/authService.ts`)
- API client → Auth API: HTTP requests
- Auth API → Auth service: delegates
- Auth service → User records: reads and saves (evidence: `backend/src/main/java/com/travelit/auth/service/AuthService.java`)
- Traveler → Destinations: discovers (evidence: `README.md`)
- Traveler → Nearby discovery: explores nearby (evidence: `README.md`)
- Places and maps → Google Places: searches places (evidence: `backend/src/main/java/com/travelit/place/service/PlaceService.java`)
- Place reviews → Places and maps: checks place (evidence: `backend/src/main/java/com/travelit/review/service/ReviewService.java`)
- Traveler → Trips and days: plans trips (evidence: `README.md`)
- Traveler → Itinerary items: edits schedule (evidence: `README.md`)
- Traveler → Trip budgets: tracks spending (evidence: `README.md`)
- Traveler → Trip weather: checks weather
- Traveler → Trevvy chat UI: chats with (evidence: `README.md`)
- Trevvy chat UI → AI API: sends messages
- AI API → AI conversation service: delegates
- AI conversation service → Prompt builder: builds prompts (evidence: `backend/src/main/java/com/travelit/ai/service/AiService.java`)
- AI conversation service → AI provider: requests response (evidence: `backend/src/main/java/com/travelit/ai/service/AiService.java`)
- AI conversation service → Conversation history: stores messages (evidence: `backend/src/main/java/com/travelit/ai/service/AiService.java`)
- AI conversation service → Places and maps: gets nearby context (evidence: `backend/src/main/java/com/travelit/ai/service/AiService.java`)
- AI provider → Groq AI: generates replies
