# siddheshbhole/heritage-and-cultural-preservation architecture

> Architecture diagram of the GitHub repository siddheshbhole/heritage-and-cultural-preservation, 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/siddheshbhole/heritage-and-cultural-preservation
- Repository: https://github.com/siddheshbhole/heritage-and-cultural-preservation

## Overview

This is a Ministry of Culture heritage-and-culture discovery platform: visitors browse places, heritage, cultural resources, media and documents, or search and ask an assistant for guidance; contributors and guides can participate, while administrators manage records. The frontend routes these experiences and calls a FastAPI backend, whose routers are registered in `backend/app/main.py`; persistence is provided through SQLAlchemy. The sampled files establish routing, search UI, authentication and database setup. Several feature implementations were not sampled, so their internal handoffs are not inferred.

Main entry points: [`backend/app/main.py`](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/main.py) (FastAPI application), [`frontend/src/App.tsx`](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/App.tsx) (Web application), [`frontend/src/pages/Search.tsx`](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/Search.tsx) (Search experience), [`backend/app/database.py`](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/database.py) (Database access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Visitor experience"]
  node_app["Web application<br/>[App.tsx]"]
  node_discovery["Place and heritage pages<br/>[Heritage.tsx]"]
  node_searchui["Search experience<br/>[Search.tsx]"]
  node_assistantui["Assistant experience<br/>[AssistantPage.tsx]"]
  node_mediaui["Media experience<br/>[MediaLayout.tsx]"]
  node_documentsui["Document experience<br/>[DocumentsHome.tsx]"]
  node_adminui["Admin experience<br/>[Admin.tsx]"]
  node_client["API client<br/>[client.ts]"]
end

subgraph group_api["Platform API"]
  node_backend["FastAPI application<br/>[main.py]"]
  node_geo["Geography routes<br/>[geo.py]"]
  node_heritage["Heritage routes<br/>[heritage.py]"]
  node_content["Culture content routes<br/>[content.py]"]
  node_search["Search routes<br/>[search.py]"]
  node_searchengine["Search engine<br/>[search_engine.py]"]
  node_assistant["Assistant routes<br/>[assistant.py]"]
  node_media["Media routes<br/>[media.py]"]
  node_documents["Document routes<br/>[documents.py]"]
end

subgraph group_identity["Identity and participation"]
  node_community["Community routes<br/>[community.py]"]
  node_guideauth["Guide authentication<br/>[guide_auth.py]"]
  node_guides["Heritage guide routes<br/>[heritage_guides.py]"]
  node_authcontext["Website authentication<br/>[AuthContext.tsx]"]
end

subgraph group_operations["Administration"]
  node_adminroutes["Admin routes<br/>[admin.py]"]
  node_admincrud["Admin record routes<br/>[admin_crud.py]"]
  node_audit["Audit routes<br/>[admin_audit.py]"]
end

subgraph group_data["Persistence"]
  node_database["Database access<br/>[database.py]"]
  node_models["Domain models<br/>[models.py]"]
  node_store[("SQLite or PostgreSQL")]
end

node_visitor(("Visitor"))
node_supabase["Supabase Auth"]

node_visitor -->|"browses"| node_app
node_app -->|"routes to"| node_discovery
node_app -->|"routes to"| node_searchui
node_app -->|"routes to"| node_assistantui
node_app -->|"routes to"| node_mediaui
node_app -->|"routes to"| node_documentsui
node_app -->|"routes to"| node_adminui
node_searchui -->|"imports"| node_client
node_searchui -->|"fetches search"| node_backend
node_backend -->|"registers router"| node_geo
node_backend -->|"registers router"| node_heritage
node_backend -->|"registers router"| node_content
node_backend -->|"registers router"| node_search
node_backend -->|"registers router"| node_assistant
node_backend -->|"registers router"| node_media
node_backend -->|"registers router"| node_documents
node_backend -->|"registers router"| node_community
node_backend -->|"registers router"| node_guideauth
node_backend -->|"registers router"| node_guides
node_backend -->|"registers router"| node_adminroutes
node_backend -->|"registers router"| node_admincrud
node_backend -->|"registers router"| node_audit
node_search -->|"retrieval logic"| node_searchengine
node_backend -->|"creates tables"| node_database
node_database -->|"connects to"| node_store
node_database -->|"provides base"| node_models
node_authcontext -.->|"auth requests"| node_supabase

click node_app "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/App.tsx"
click node_discovery "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/Heritage.tsx"
click node_searchui "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/Search.tsx"
click node_assistantui "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/AssistantPage.tsx"
click node_mediaui "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/media/MediaLayout.tsx"
click node_documentsui "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/documents/DocumentsHome.tsx"
click node_adminui "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/Admin.tsx"
click node_client "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/api/client.ts"
click node_backend "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/main.py"
click node_geo "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/geo.py"
click node_heritage "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/heritage.py"
click node_content "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/content.py"
click node_search "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/search.py"
click node_searchengine "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/search_engine.py"
click node_assistant "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/assistant.py"
click node_media "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/media.py"
click node_documents "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/documents.py"
click node_community "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/community.py"
click node_guideauth "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/guide_auth.py"
click node_guides "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/heritage_guides.py"
click node_authcontext "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/context/AuthContext.tsx"
click node_adminroutes "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/admin.py"
click node_admincrud "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/admin_crud.py"
click node_audit "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/admin_audit.py"
click node_database "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/database.py"
click node_models "https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/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_discovery,node_searchui,node_assistantui,node_mediaui,node_documentsui,node_adminui,node_client toneBlue
class node_backend,node_geo,node_heritage,node_content,node_search,node_searchengine,node_assistant,node_media,node_documents toneAmber
class node_community,node_guideauth,node_guides,node_authcontext toneMint
class node_adminroutes,node_admincrud,node_audit toneRose
class node_database,node_models,node_store,node_visitor,node_supabase toneIndigo
```

## Components

### Visitor experience

- [Web application](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Place and heritage pages](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/Heritage.tsx): `frontend/src/pages/Heritage.tsx`
- [Search experience](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/Search.tsx): `frontend/src/pages/Search.tsx`
- [Assistant experience](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/AssistantPage.tsx): `frontend/src/pages/AssistantPage.tsx`
- [Media experience](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/media/MediaLayout.tsx): `frontend/src/pages/media/MediaLayout.tsx`
- [Document experience](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/documents/DocumentsHome.tsx): `frontend/src/pages/documents/DocumentsHome.tsx`
- [Admin experience](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/pages/Admin.tsx): `frontend/src/pages/Admin.tsx`
- [API client](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`

### Platform API

- [FastAPI application](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/main.py): `backend/app/main.py`
- [Geography routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/geo.py): `backend/app/routes/geo.py`
- [Heritage routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/heritage.py): `backend/app/routes/heritage.py`
- [Culture content routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/content.py): `backend/app/routes/content.py`
- [Search routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/search.py): `backend/app/routes/search.py`
- [Search engine](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/search_engine.py): `backend/app/search_engine.py`
- [Assistant routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/assistant.py): `backend/app/routes/assistant.py`
- [Media routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/media.py): `backend/app/routes/media.py`
- [Document routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/documents.py): `backend/app/routes/documents.py`

### Identity and participation

- [Community routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/community.py): `backend/app/routes/community.py`
- [Guide authentication](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/guide_auth.py): `backend/app/routes/guide_auth.py`
- [Heritage guide routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/heritage_guides.py): `backend/app/routes/heritage_guides.py`
- [Website authentication](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/frontend/src/context/AuthContext.tsx): `frontend/src/context/AuthContext.tsx`

### Administration

- [Admin routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/admin.py): `backend/app/routes/admin.py`
- [Admin record routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/admin_crud.py): `backend/app/routes/admin_crud.py`
- [Audit routes](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/routes/admin_audit.py): `backend/app/routes/admin_audit.py`

### Persistence

- [Database access](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/database.py): `backend/app/database.py`
- [Domain models](https://github.com/siddheshbhole/heritage-and-cultural-preservation/blob/main/backend/app/models.py): `backend/app/models.py`
- **SQLite or PostgreSQL**

### Other components

- **Visitor**
- **Supabase Auth**

## Connections

- Visitor → Web application: browses
- Web application → Place and heritage pages: routes to
- Web application → Search experience: routes to
- Web application → Assistant experience: routes to
- Web application → Media experience: routes to
- Web application → Document experience: routes to
- Web application → Admin experience: routes to
- Search experience → API client: imports
- Search experience → FastAPI application: fetches search
- FastAPI application → Geography routes: registers router
- FastAPI application → Heritage routes: registers router
- FastAPI application → Culture content routes: registers router
- FastAPI application → Search routes: registers router
- FastAPI application → Assistant routes: registers router
- FastAPI application → Media routes: registers router
- FastAPI application → Document routes: registers router
- FastAPI application → Community routes: registers router
- FastAPI application → Guide authentication: registers router
- FastAPI application → Heritage guide routes: registers router
- FastAPI application → Admin routes: registers router
- FastAPI application → Admin record routes: registers router
- FastAPI application → Audit routes: registers router
- Search routes → Search engine: retrieval logic
- FastAPI application → Database access: creates tables
- Database access → SQLite or PostgreSQL: connects to
- Database access → Domain models: provides base
- Website authentication → Supabase Auth: auth requests
