# ashishkrgupta/sanatansanskar-ui architecture

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

- Interactive diagram: https://gitdiagram.com/ashishkrgupta/sanatansanskar-ui
- Repository: https://github.com/ashishkrgupta/sanatansanskar-ui

## Overview

SanatanSanskar is a React frontend for discovering Hindu rituals and related cultural information, then booking a service. The main user path runs from the service catalog to service details and the protected booking flow. Separate branches cover authentication, priests, temples, festivals, sanskar education, panchang, knowledge, search, notifications, and role-based administration. The sampled source confirms routing, service-detail retrieval, authentication, and search over mock records; other page-to-service wiring is inferred from module names and routes, so those connections are left out.

Main entry points: [`src/routes/index.tsx`](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/routes/index.tsx) (Route map), [`src/pages/BookingFlow.tsx`](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/BookingFlow.tsx) (Booking flow), [`src/App.tsx`](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/App.tsx) (App entry), [`src/pages/ServiceDetails.tsx`](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/ServiceDetails.tsx) (Service details)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App shell"]
  node_app["App entry<br/>[App.tsx]"]
  node_providers["App providers<br/>[AppProviders.tsx]"]
  node_routes["Route map<br/>[index.tsx]"]
  node_layout["App layout<br/>[AppLayout.tsx]"]
end

subgraph group_booking["Ritual booking"]
  node_service_catalog["Service catalog<br/>[Services.tsx]"]
  node_service_details["Service details<br/>[ServiceDetails.tsx]"]
  node_service_api["Service access<br/>[index.ts]"]
  node_service_data["Service records<br/>[services.ts]"]
  node_booking_flow["Booking flow<br/>[BookingFlow.tsx]"]
  node_booking_api["Booking operations<br/>[bookingService.ts]"]
  node_booking_state["Booking state<br/>[bookingStore.ts]"]
end

subgraph group_discovery["Cultural discovery"]
  node_search_page["Search page<br/>[Search.tsx]"]
  node_search_api["Search service<br/>[searchService.ts]"]
  node_mock_data["Mock content<br/>[index.ts]"]
  node_culture_pages["Culture pages<br/>[Sanskar.tsx]"]
  node_festival_pages["Festival pages<br/>[Festivals.tsx]"]
  node_temple_pages["Temple pages<br/>[Temples.tsx]"]
  node_priest_pages["Priest pages<br/>[Priests.tsx]"]
  node_panchang_page["Panchang<br/>[Panchang.tsx]"]
  node_knowledge_pages["Knowledge pages<br/>[Knowledge.tsx]"]
end

subgraph group_accounts["Accounts and operations"]
  node_auth_pages["Login and register<br/>[Login.tsx]"]
  node_auth_api["Authentication<br/>[authService.ts]"]
  node_auth_state["Auth state<br/>[authStore.ts]"]
  node_protected["Role protection<br/>[ProtectedRoute.tsx]"]
  node_admin["Admin console<br/>[Bookings.tsx]"]
  node_priest_dashboard["Priest dashboard<br/>[Dashboard.tsx]"]
  node_notifications["Notifications<br/>[Notifications.tsx]"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens"| node_app
node_app -->|"wraps"| node_providers
node_app -->|"mounts router"| node_routes
node_routes -->|"renders routes"| node_layout
node_routes -->|"routes to"| node_service_catalog
node_routes -->|"routes to"| node_service_details
node_routes -->|"routes to"| node_booking_flow
node_routes -->|"routes to"| node_auth_pages
node_routes -->|"routes to"| node_search_page
node_routes -->|"routes to"| node_culture_pages
node_routes -->|"routes to"| node_festival_pages
node_routes -->|"routes to"| node_temple_pages
node_routes -->|"routes to"| node_priest_pages
node_routes -->|"routes to"| node_panchang_page
node_routes -->|"routes to"| node_knowledge_pages
node_routes -->|"routes to"| node_notifications
node_routes -->|"routes to"| node_admin
node_routes -->|"routes to"| node_priest_dashboard
node_routes -->|"guards routes"| node_protected
node_service_details -->|"requests service"| node_service_api
node_service_api -->|"reads records"| node_service_data
node_service_details -->|"links to book"| node_booking_flow
node_booking_flow -->|"submits booking"| node_booking_api
node_booking_flow -->|"updates draft"| node_booking_state
node_auth_pages -->|"requests auth"| node_auth_api
node_auth_pages -->|"updates session"| node_auth_state
node_protected -->|"checks role"| node_auth_state
node_search_page -->|"searches"| node_search_api
node_search_api -->|"searches records"| node_mock_data

click node_app "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/App.tsx"
click node_providers "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/providers/AppProviders.tsx"
click node_routes "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/routes/index.tsx"
click node_layout "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/components/layout/AppLayout.tsx"
click node_service_catalog "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Services.tsx"
click node_service_details "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/ServiceDetails.tsx"
click node_service_api "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/services/index.ts"
click node_service_data "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/data/mock/services.ts"
click node_booking_flow "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/BookingFlow.tsx"
click node_booking_api "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/services/bookingService.ts"
click node_booking_state "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/store/bookingStore.ts"
click node_auth_pages "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Login.tsx"
click node_auth_api "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/services/authService.ts"
click node_auth_state "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/store/authStore.ts"
click node_protected "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/components/layout/ProtectedRoute.tsx"
click node_admin "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/admin/Bookings.tsx"
click node_priest_dashboard "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/priest/Dashboard.tsx"
click node_search_page "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Search.tsx"
click node_search_api "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/services/searchService.ts"
click node_mock_data "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/data/mock/index.ts"
click node_culture_pages "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Sanskar.tsx"
click node_festival_pages "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Festivals.tsx"
click node_temple_pages "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Temples.tsx"
click node_priest_pages "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Priests.tsx"
click node_panchang_page "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Panchang.tsx"
click node_knowledge_pages "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Knowledge.tsx"
click node_notifications "https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Notifications.tsx"

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_providers,node_routes,node_layout toneBlue
class node_service_catalog,node_service_details,node_service_api,node_service_data,node_booking_flow,node_booking_api,node_booking_state toneAmber
class node_search_page,node_search_api,node_mock_data,node_culture_pages,node_festival_pages,node_temple_pages,node_priest_pages,node_panchang_page,node_knowledge_pages toneMint
class node_auth_pages,node_auth_api,node_auth_state,node_protected,node_admin,node_priest_dashboard,node_notifications toneRose
class node_visitor toneIndigo
```

## Components

### App shell

- [App entry](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/App.tsx): `src/App.tsx`
- [App providers](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/providers/AppProviders.tsx): `src/providers/AppProviders.tsx`
- [Route map](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/routes/index.tsx): `src/routes/index.tsx`
- [App layout](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/components/layout/AppLayout.tsx): `src/components/layout/AppLayout.tsx`

### Ritual booking

- [Service catalog](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Services.tsx): `src/pages/Services.tsx`
- [Service details](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/ServiceDetails.tsx): `src/pages/ServiceDetails.tsx`
- [Service access](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/services/index.ts): `src/services/index.ts`
- [Service records](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/data/mock/services.ts): `src/data/mock/services.ts`
- [Booking flow](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/BookingFlow.tsx): `src/pages/BookingFlow.tsx`
- [Booking operations](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/services/bookingService.ts): `src/services/bookingService.ts`
- [Booking state](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/store/bookingStore.ts): `src/store/bookingStore.ts`

### Cultural discovery

- [Search page](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Search.tsx): `src/pages/Search.tsx`
- [Search service](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/services/searchService.ts): `src/services/searchService.ts`
- [Mock content](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/data/mock/index.ts): `src/data/mock/index.ts`
- [Culture pages](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Sanskar.tsx): `src/pages/Sanskar.tsx`
- [Festival pages](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Festivals.tsx): `src/pages/Festivals.tsx`
- [Temple pages](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Temples.tsx): `src/pages/Temples.tsx`
- [Priest pages](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Priests.tsx): `src/pages/Priests.tsx`
- [Panchang](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Panchang.tsx): `src/pages/Panchang.tsx`
- [Knowledge pages](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Knowledge.tsx): `src/pages/Knowledge.tsx`

### Accounts and operations

- [Login and register](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Login.tsx): `src/pages/Login.tsx`
- [Authentication](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/services/authService.ts): `src/services/authService.ts`
- [Auth state](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/store/authStore.ts): `src/store/authStore.ts`
- [Role protection](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/components/layout/ProtectedRoute.tsx): `src/components/layout/ProtectedRoute.tsx`
- [Admin console](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/admin/Bookings.tsx): `src/pages/admin/Bookings.tsx`
- [Priest dashboard](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/priest/Dashboard.tsx): `src/pages/priest/Dashboard.tsx`
- [Notifications](https://github.com/ashishkrgupta/sanatansanskar-ui/blob/main/src/pages/Notifications.tsx): `src/pages/Notifications.tsx`

### Other components

- **Visitor**

## Connections

- Visitor → App entry: opens
- App entry → App providers: wraps
- App entry → Route map: mounts router
- Route map → App layout: renders routes
- Route map → Service catalog: routes to
- Route map → Service details: routes to
- Route map → Booking flow: routes to
- Route map → Login and register: routes to
- Route map → Search page: routes to
- Route map → Culture pages: routes to
- Route map → Festival pages: routes to
- Route map → Temple pages: routes to
- Route map → Priest pages: routes to
- Route map → Panchang: routes to
- Route map → Knowledge pages: routes to
- Route map → Notifications: routes to
- Route map → Admin console: routes to
- Route map → Priest dashboard: routes to
- Route map → Role protection: guards routes
- Service details → Service access: requests service
- Service access → Service records: reads records
- Service details → Booking flow: links to book
- Booking flow → Booking operations: submits booking
- Booking flow → Booking state: updates draft
- Login and register → Authentication: requests auth
- Login and register → Auth state: updates session
- Role protection → Auth state: checks role
- Search page → Search service: searches
- Search service → Mock content: searches records
