# abhijitk20/ananta architecture

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

- Interactive diagram: https://gitdiagram.com/abhijitk20/ananta
- Repository: https://github.com/abhijitk20/ananta

## Overview

Ananta is a local-experiences discovery prototype for Mumbai and Navi Mumbai. Travelers describe a need, explore ranked places and events, inspect feasibility and directions, then save places or draft a trip. Separate provider and operations workflows accept listings, availability updates, reports, and review decisions. The repository documents additional filters, event reachability, plan adaptation, and verified media; some implementations were not sampled, so those connections are limited to documented ownership. Demo records and user state are local-first, with OSRM routing as an external service.

Main entry points: [`app/explore/page.tsx`](https://github.com/abhijitk20/ananta/blob/main/app/explore/page.tsx) (Explore map), [`lib/plan.ts`](https://github.com/abhijitk20/ananta/blob/main/lib/plan.ts) (Local plan and saves), [`app/experience/[id]/page.tsx`](https://github.com/abhijitk20/ananta/blob/main/app/experience/%5Bid%5D/page.tsx) (Experience detail), [`app/admin/operations/page.tsx`](https://github.com/abhijitk20/ananta/blob/main/app/admin/operations/page.tsx) (Operations review)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Discovery"]
  node_home["Home discovery<br/>[page.tsx]"]
  node_search["Discovery search"]
  node_explore["Explore map<br/>[page.tsx]"]
  node_discovery_logic["Intent parsing<br/>[discovery.ts]"]
  node_ranking["Discovery ranking<br/>[recommendation.ts]"]
  node_events_page["Nearby events<br/>[page.tsx]"]
  node_events_logic["Event checks<br/>[events.ts]"]
  node_experience["Experience detail<br/>[page.tsx]"]
  node_map["Map display<br/>[map.tsx]"]
end

subgraph group_planning["Planning"]
  node_trips["Trip feasibility<br/>[page.tsx]"]
  node_routing["Route estimates<br/>[routing.ts]"]
end

subgraph group_engagement["Traveler tools"]
  node_saved_page["Saved shortlist<br/>[page.tsx]"]
  node_profile["Traveler profile<br/>[page.tsx]"]
  node_save_control["Save action<br/>[save-button.tsx]"]
  node_report_control["Report action<br/>[report-button.tsx]"]
end

subgraph group_operations["Provider and review"]
  node_provider_page["Provider workspace<br/>[page.tsx]"]
  node_admin["Operations review<br/>[page.tsx]"]
  node_availability["Availability signals<br/>[provider.ts]"]
  node_operations_state["Review records<br/>[operations.ts]"]
  node_reports_state["Traveler reports<br/>[reports.ts]"]
end

subgraph group_data["Data and state"]
  node_experiences_data["Place and media data<br/>[index.ts]"]
  node_local_state["Local plan and saves<br/>[plan.ts]"]
end

node_traveler(("Traveler"))
node_osrm["OSRM routing"]

node_traveler -->|"opens"| node_home
node_traveler -->|"explores"| node_explore
node_traveler -->|"checks events"| node_events_page
node_home -->|"offers search"| node_search
node_search -->|"builds query"| node_discovery_logic
node_explore -->|"parses intent"| node_discovery_logic
node_explore -->|"ranks results"| node_ranking
node_explore -->|"reads places"| node_experiences_data
node_explore -->|"displays markers"| node_map
node_explore -->|"reads availability"| node_availability
node_explore -->|"reads plan"| node_local_state
node_events_page -->|"checks changes"| node_events_logic
node_events_page -->|"offers reporting"| node_report_control
node_experience -->|"reads records"| node_experiences_data
node_experience -->|"offers saving"| node_save_control
node_experience -->|"offers reporting"| node_report_control
node_experience -->|"requests directions"| node_routing
node_routing -.->|"fetches route"| node_osrm
node_traveler -->|"plans trip"| node_trips
node_trips -->|"reads plan"| node_local_state
node_trips -->|"checks availability"| node_availability
node_traveler -->|"reviews saves"| node_saved_page
node_traveler -->|"views profile"| node_profile
node_saved_page -->|"reads saved IDs"| node_local_state
node_profile -->|"reads plan and saves"| node_local_state
node_save_control -->|"writes saves"| node_local_state
node_traveler -->|"submits listing"| node_provider_page
node_provider_page -->|"reads and writes"| node_availability
node_provider_page -->|"queues submission"| node_operations_state
node_provider_page -->|"reads demand signal"| node_local_state
node_admin -->|"reviews records"| node_operations_state
node_admin -->|"reads reports"| node_reports_state
node_admin -->|"checks event changes"| node_events_logic
node_admin -->|"derives gem candidates"| node_experiences_data
node_report_control -->|"writes reports"| node_reports_state

click node_home "https://github.com/abhijitk20/ananta/blob/main/app/page.tsx"
click node_search "https://github.com/abhijitk20/ananta/blob/main/components/discovery-search.tsx"
click node_explore "https://github.com/abhijitk20/ananta/blob/main/app/explore/page.tsx"
click node_discovery_logic "https://github.com/abhijitk20/ananta/blob/main/lib/discovery.ts"
click node_ranking "https://github.com/abhijitk20/ananta/blob/main/lib/recommendation.ts"
click node_events_page "https://github.com/abhijitk20/ananta/blob/main/app/events/page.tsx"
click node_events_logic "https://github.com/abhijitk20/ananta/blob/main/lib/events.ts"
click node_experience "https://github.com/abhijitk20/ananta/blob/main/app/experience/%5Bid%5D/page.tsx"
click node_map "https://github.com/abhijitk20/ananta/blob/main/components/map.tsx"
click node_trips "https://github.com/abhijitk20/ananta/blob/main/app/trips/page.tsx"
click node_routing "https://github.com/abhijitk20/ananta/blob/main/lib/routing.ts"
click node_saved_page "https://github.com/abhijitk20/ananta/blob/main/app/saved/page.tsx"
click node_profile "https://github.com/abhijitk20/ananta/blob/main/app/profile/page.tsx"
click node_save_control "https://github.com/abhijitk20/ananta/blob/main/components/save-button.tsx"
click node_report_control "https://github.com/abhijitk20/ananta/blob/main/components/report-button.tsx"
click node_provider_page "https://github.com/abhijitk20/ananta/blob/main/app/provider/page.tsx"
click node_admin "https://github.com/abhijitk20/ananta/blob/main/app/admin/operations/page.tsx"
click node_availability "https://github.com/abhijitk20/ananta/blob/main/lib/provider.ts"
click node_operations_state "https://github.com/abhijitk20/ananta/blob/main/lib/operations.ts"
click node_reports_state "https://github.com/abhijitk20/ananta/blob/main/lib/reports.ts"
click node_experiences_data "https://github.com/abhijitk20/ananta/blob/main/lib/data/index.ts"
click node_local_state "https://github.com/abhijitk20/ananta/blob/main/lib/plan.ts"

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_home,node_search,node_explore,node_discovery_logic,node_ranking,node_events_page,node_events_logic,node_experience,node_map toneBlue
class node_trips,node_routing toneAmber
class node_saved_page,node_profile,node_save_control,node_report_control toneMint
class node_provider_page,node_admin,node_availability,node_operations_state,node_reports_state toneRose
class node_experiences_data,node_local_state,node_traveler,node_osrm toneIndigo
```

## Components

### Discovery

- [Home discovery](https://github.com/abhijitk20/ananta/blob/main/app/page.tsx): `app/page.tsx`
- [Discovery search](https://github.com/abhijitk20/ananta/blob/main/components/discovery-search.tsx): `components/discovery-search.tsx`
- [Explore map](https://github.com/abhijitk20/ananta/blob/main/app/explore/page.tsx): `app/explore/page.tsx`
- [Intent parsing](https://github.com/abhijitk20/ananta/blob/main/lib/discovery.ts): `lib/discovery.ts`
- [Discovery ranking](https://github.com/abhijitk20/ananta/blob/main/lib/recommendation.ts): `lib/recommendation.ts`
- [Nearby events](https://github.com/abhijitk20/ananta/blob/main/app/events/page.tsx): `app/events/page.tsx`
- [Event checks](https://github.com/abhijitk20/ananta/blob/main/lib/events.ts): `lib/events.ts`
- [Experience detail](https://github.com/abhijitk20/ananta/blob/main/app/experience/%5Bid%5D/page.tsx): `app/experience/[id]/page.tsx`
- [Map display](https://github.com/abhijitk20/ananta/blob/main/components/map.tsx): `components/map.tsx`

### Planning

- [Trip feasibility](https://github.com/abhijitk20/ananta/blob/main/app/trips/page.tsx): `app/trips/page.tsx`
- [Route estimates](https://github.com/abhijitk20/ananta/blob/main/lib/routing.ts): `lib/routing.ts`

### Traveler tools

- [Saved shortlist](https://github.com/abhijitk20/ananta/blob/main/app/saved/page.tsx): `app/saved/page.tsx`
- [Traveler profile](https://github.com/abhijitk20/ananta/blob/main/app/profile/page.tsx): `app/profile/page.tsx`
- [Save action](https://github.com/abhijitk20/ananta/blob/main/components/save-button.tsx): `components/save-button.tsx`
- [Report action](https://github.com/abhijitk20/ananta/blob/main/components/report-button.tsx): `components/report-button.tsx`

### Provider and review

- [Provider workspace](https://github.com/abhijitk20/ananta/blob/main/app/provider/page.tsx): `app/provider/page.tsx`
- [Operations review](https://github.com/abhijitk20/ananta/blob/main/app/admin/operations/page.tsx): `app/admin/operations/page.tsx`
- [Availability signals](https://github.com/abhijitk20/ananta/blob/main/lib/provider.ts): `lib/provider.ts`
- [Review records](https://github.com/abhijitk20/ananta/blob/main/lib/operations.ts): `lib/operations.ts`
- [Traveler reports](https://github.com/abhijitk20/ananta/blob/main/lib/reports.ts): `lib/reports.ts`

### Data and state

- [Place and media data](https://github.com/abhijitk20/ananta/blob/main/lib/data/index.ts): `lib/data/index.ts`
- [Local plan and saves](https://github.com/abhijitk20/ananta/blob/main/lib/plan.ts): `lib/plan.ts`

### Other components

- **Traveler**
- **OSRM routing**

## Connections

- Traveler → Home discovery: opens
- Traveler → Explore map: explores
- Traveler → Nearby events: checks events
- Home discovery → Discovery search: offers search
- Discovery search → Intent parsing: builds query
- Explore map → Intent parsing: parses intent
- Explore map → Discovery ranking: ranks results
- Explore map → Place and media data: reads places
- Explore map → Map display: displays markers
- Explore map → Availability signals: reads availability
- Explore map → Local plan and saves: reads plan
- Nearby events → Event checks: checks changes
- Nearby events → Report action: offers reporting
- Experience detail → Place and media data: reads records
- Experience detail → Save action: offers saving
- Experience detail → Report action: offers reporting
- Experience detail → Route estimates: requests directions
- Route estimates → OSRM routing: fetches route
- Traveler → Trip feasibility: plans trip
- Trip feasibility → Local plan and saves: reads plan
- Trip feasibility → Availability signals: checks availability
- Traveler → Saved shortlist: reviews saves
- Traveler → Traveler profile: views profile
- Saved shortlist → Local plan and saves: reads saved IDs
- Traveler profile → Local plan and saves: reads plan and saves
- Save action → Local plan and saves: writes saves
- Traveler → Provider workspace: submits listing
- Provider workspace → Availability signals: reads and writes
- Provider workspace → Review records: queues submission
- Provider workspace → Local plan and saves: reads demand signal
- Operations review → Review records: reviews records
- Operations review → Traveler reports: reads reports
- Operations review → Event checks: checks event changes
- Operations review → Place and media data: derives gem candidates
- Report action → Traveler reports: writes reports
