# priyadharshinik15/itineraai architecture

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

- Interactive diagram: https://gitdiagram.com/priyadharshinik15/itineraai
- Repository: https://github.com/priyadharshinik15/itineraai

## Overview

ItineraAI is an AI travel-planning product with a React/FastAPI application and a separate CrewAI/Streamlit planner. The main workflow is trip entry, report generation, image enrichment, saved trip history, and PDF download; authentication gates planning and saved reports. The newer backend’s travel router explicitly orchestrates AI, image, database, and PDF services. The README documents search, multilingual plans, and image providers, but sampled code does not establish all their runtime connections; those links are omitted or marked unverified.

Main entry points: [`itineraai/backend/routers/travel.py`](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/routers/travel.py) (Travel routes), [`itineraai/frontend/src/App.jsx`](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/App.jsx) (Application routes), [`folder/TravelAgents.py`](https://github.com/priyadharshinik15/itineraai/blob/main/folder/TravelAgents.py) (Travel agents), [`frontend/streamlit/streamlit.py`](https://github.com/priyadharshinik15/itineraai/blob/main/frontend/streamlit/streamlit.py) (Streamlit interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_app["Application routes<br/>[App.jsx]"]
  node_trip_ui["Trip entry<br/>[InputPage.jsx]"]
  node_report_ui["Trip reports<br/>[ReportPage.jsx]"]
end

subgraph group_identity["Identity and profiles"]
  node_profile_ui["User profile<br/>[ProfilePage.jsx]"]
  node_auth_ui["Auth state<br/>[AuthContext.jsx]"]
  node_auth_api["Auth routes<br/>[auth.py]"]
end

subgraph group_planning["Trip planning"]
  node_travel_api["Travel routes<br/>[travel.py]"]
  node_ai["Report generation<br/>[ai_service.py]"]
  node_images["City images<br/>[image_service.py]"]
  node_api["FastAPI application<br/>[main.py]"]
end

subgraph group_data["Persistence and reports"]
  node_db[("SQLite database<br/>[database.py]")]
  node_pdf["PDF generation<br/>[pdf_service.py]"]
end

subgraph group_crew["CrewAI planner"]
  node_streamlit["Streamlit interface<br/>[streamlit.py]"]
  node_tasks["Planning tasks<br/>[TravelTasks.py]"]
  node_agents["Travel agents<br/>[TravelAgents.py]"]
  node_search_tool["Web search tool<br/>[TravelTools.py]"]
end

node_traveler(("Traveler"))
node_llm{{"LLM provider"}}
node_image_providers{{"Image providers"}}
node_crew_llm{{"CrewAI LLM"}}

node_traveler -->|"uses"| node_app
node_app -->|"routes to"| node_trip_ui
node_app -->|"routes to"| node_report_ui
node_app -->|"routes to"| node_profile_ui
node_app -->|"uses auth"| node_auth_ui
node_auth_ui -->|"calls"| node_auth_api
node_api -->|"registers"| node_auth_api
node_api -->|"registers"| node_travel_api
node_travel_api -->|"generates reports"| node_ai
node_travel_api -->|"fetches images"| node_images
node_travel_api -->|"stores and reads"| node_db
node_travel_api -->|"creates PDF"| node_pdf
node_ai -->|"requests completion"| node_llm
node_images -.->|"fetches images"| node_image_providers
node_trip_ui -.->|"submits trip"| node_travel_api
node_report_ui -.->|"requests report"| node_travel_api
node_profile_ui -.->|"updates profile"| node_auth_api
node_traveler -->|"enters trip"| node_streamlit
node_streamlit -->|"creates tasks"| node_tasks
node_streamlit -->|"runs crew"| node_agents
node_tasks -->|"assigns tasks"| node_agents
node_agents -->|"uses tool"| node_search_tool
node_agents -->|"uses model"| node_crew_llm

click node_app "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/App.jsx"
click node_trip_ui "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/pages/InputPage.jsx"
click node_report_ui "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/pages/ReportPage.jsx"
click node_profile_ui "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/pages/ProfilePage.jsx"
click node_auth_ui "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/context/AuthContext.jsx"
click node_auth_api "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/routers/auth.py"
click node_travel_api "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/routers/travel.py"
click node_ai "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/services/ai_service.py"
click node_images "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/services/image_service.py"
click node_db "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/database.py"
click node_pdf "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/services/pdf_service.py"
click node_api "https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/main.py"
click node_streamlit "https://github.com/priyadharshinik15/itineraai/blob/main/frontend/streamlit/streamlit.py"
click node_tasks "https://github.com/priyadharshinik15/itineraai/blob/main/folder/TravelTasks.py"
click node_agents "https://github.com/priyadharshinik15/itineraai/blob/main/folder/TravelAgents.py"
click node_search_tool "https://github.com/priyadharshinik15/itineraai/blob/main/folder/TravelTools.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_trip_ui,node_report_ui toneBlue
class node_profile_ui,node_auth_ui,node_auth_api toneAmber
class node_travel_api,node_ai,node_images,node_api toneMint
class node_db,node_pdf toneRose
class node_streamlit,node_tasks,node_agents,node_search_tool,node_traveler,node_llm,node_image_providers,node_crew_llm toneIndigo
```

## Components

### Web experience

- [Application routes](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/App.jsx): `itineraai/frontend/src/App.jsx`
- [Trip entry](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/pages/InputPage.jsx): `itineraai/frontend/src/pages/InputPage.jsx`
- [Trip reports](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/pages/ReportPage.jsx): `itineraai/frontend/src/pages/ReportPage.jsx`

### Identity and profiles

- [User profile](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/pages/ProfilePage.jsx): `itineraai/frontend/src/pages/ProfilePage.jsx`
- [Auth state](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/frontend/src/context/AuthContext.jsx): `itineraai/frontend/src/context/AuthContext.jsx`
- [Auth routes](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/routers/auth.py): `itineraai/backend/routers/auth.py`

### Trip planning

- [Travel routes](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/routers/travel.py): `itineraai/backend/routers/travel.py`
- [Report generation](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/services/ai_service.py): `itineraai/backend/services/ai_service.py`
- [City images](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/services/image_service.py): `itineraai/backend/services/image_service.py`
- [FastAPI application](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/main.py): `itineraai/backend/main.py`

### Persistence and reports

- [SQLite database](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/database.py): `itineraai/backend/database.py`
- [PDF generation](https://github.com/priyadharshinik15/itineraai/blob/main/itineraai/backend/services/pdf_service.py): `itineraai/backend/services/pdf_service.py`

### CrewAI planner

- [Streamlit interface](https://github.com/priyadharshinik15/itineraai/blob/main/frontend/streamlit/streamlit.py): `frontend/streamlit/streamlit.py`
- [Planning tasks](https://github.com/priyadharshinik15/itineraai/blob/main/folder/TravelTasks.py): `folder/TravelTasks.py`
- [Travel agents](https://github.com/priyadharshinik15/itineraai/blob/main/folder/TravelAgents.py): `folder/TravelAgents.py`
- [Web search tool](https://github.com/priyadharshinik15/itineraai/blob/main/folder/TravelTools.py): `folder/TravelTools.py`

### Other components

- **Traveler**
- **LLM provider**
- **Image providers**
- **CrewAI LLM**

## Connections

- Traveler → Application routes: uses (evidence: `itineraai/frontend/src/App.jsx`)
- Application routes → Trip entry: routes to (evidence: `itineraai/frontend/src/App.jsx`)
- Application routes → Trip reports: routes to (evidence: `itineraai/frontend/src/App.jsx`)
- Application routes → User profile: routes to (evidence: `itineraai/frontend/src/App.jsx`)
- Application routes → Auth state: uses auth (evidence: `itineraai/frontend/src/App.jsx`)
- Auth state → Auth routes: calls (evidence: `itineraai/frontend/src/context/AuthContext.jsx`)
- FastAPI application → Auth routes: registers (evidence: `itineraai/backend/main.py`)
- FastAPI application → Travel routes: registers (evidence: `itineraai/backend/main.py`)
- Travel routes → Report generation: generates reports (evidence: `itineraai/backend/routers/travel.py`)
- Travel routes → City images: fetches images (evidence: `itineraai/backend/routers/travel.py`)
- Travel routes → SQLite database: stores and reads (evidence: `itineraai/backend/routers/travel.py`)
- Travel routes → PDF generation: creates PDF (evidence: `itineraai/backend/routers/travel.py`)
- Report generation → LLM provider: requests completion (evidence: `itineraai/backend/services/ai_service.py`)
- City images → Image providers: fetches images (evidence: `README.md`)
- Trip entry → Travel routes: submits trip
- Trip reports → Travel routes: requests report
- User profile → Auth routes: updates profile
- Traveler → Streamlit interface: enters trip (evidence: `frontend/streamlit/streamlit.py`)
- Streamlit interface → Planning tasks: creates tasks (evidence: `frontend/streamlit/streamlit.py`)
- Streamlit interface → Travel agents: runs crew (evidence: `frontend/streamlit/streamlit.py`)
- Planning tasks → Travel agents: assigns tasks (evidence: `folder/TravelTasks.py`)
- Travel agents → Web search tool: uses tool (evidence: `folder/TravelAgents.py`)
- Travel agents → CrewAI LLM: uses model (evidence: `folder/TravelAgents.py`)
