# abisheksap/jagadamba_plastics--public-web-demo- architecture

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

- Interactive diagram: https://gitdiagram.com/abisheksap/jagadamba_plastics--public-web-demo-
- Repository: https://github.com/abisheksap/jagadamba_plastics--public-web-demo-

## Overview

This is a public product-and-company website for a plastics manufacturer, paired with an administrative content and catalog panel. The main visitor journey is browsing products and company information, then sending an enquiry or review; staff manage products, content, gallery, reviews and enquiries through the admin routes. Data is exposed through a provider and can use either local browser persistence or Convex. The README is empty, so capabilities and links are based on the source index and shown excerpts; unsampled admin areas are included where routing is documented, without inferring their internal behavior.

Main entry points: [`src/App.tsx`](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/App.tsx) (App routing), [`src/data/SiteDataProvider.tsx`](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/SiteDataProvider.tsx) (Site data provider), [`src/data/backend.ts`](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/backend.ts) (Backend adapter), [`src/pages/Home.tsx`](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Home.tsx) (Home page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public website"]
  node_app["App routing<br/>[App.tsx]"]
  node_home["Home page<br/>[Home.tsx]"]
  node_products["Product pages<br/>[Products.tsx]"]
  node_about["About page<br/>[About.tsx]"]
  node_gallery["Gallery page<br/>[Gallery.tsx]"]
  node_chrome["Site chrome<br/>[SiteChrome.tsx]"]
  node_showcase["Product showcase"]
  node_process["Process journey<br/>[ProcessJourney.tsx]"]
  node_futureui["Company features<br/>[FutureUI.tsx]"]
end

subgraph group_engagement["Visitor engagement"]
  node_contact["Contact page<br/>[Contact.tsx]"]
  node_enquiryform["Enquiry form<br/>[EnquiryForm.tsx]"]
  node_reviews["Reviews page<br/>[Reviews.tsx]"]
  node_reviewform["Review form<br/>[ReviewForm.tsx]"]
  node_assistant["Company assistant"]
end

subgraph group_admin["Administration"]
  node_adminroute["Admin access<br/>[RequireAdmin.tsx]"]
  node_adminproducts["Product management<br/>[AdminProducts.tsx]"]
  node_adminarranger["Product arranger<br/>[AdminArranger.tsx]"]
  node_admincontent["Content management<br/>[AdminContent.tsx]"]
  node_admingallery["Gallery management<br/>[AdminGallery.tsx]"]
  node_adminreviews["Review moderation<br/>[AdminReviews.tsx]"]
  node_adminenquiries["Enquiry management<br/>[AdminEnquiries.tsx]"]
  node_adminsettings["Site settings<br/>[AdminSettings.tsx]"]
end

subgraph group_data["Data services"]
  node_provider["Site data provider"]
  node_backend["Backend adapter<br/>[backend.ts]"]
  node_localstore[("Local data store<br/>[store.ts]")]
  node_auth["Admin authentication<br/>[adminAuth.ts]"]
  node_convexclient["Convex client<br/>[convexClient.ts]"]
  node_convexsite["Convex site functions<br/>[site.ts]"]
end

node_visitor(("Visitor"))
node_convex[("Convex service")]

node_visitor -->|"opens site"| node_app
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_products
node_app -->|"routes to"| node_about
node_app -->|"routes to"| node_gallery
node_app -->|"wraps public routes"| node_chrome
node_home -->|"renders"| node_showcase
node_home -->|"renders"| node_process
node_home -->|"renders"| node_futureui
node_products -->|"renders"| node_enquiryform
node_about -->|"renders"| node_futureui
node_visitor -->|"visits"| node_contact
node_app -->|"routes to"| node_contact
node_contact -->|"renders"| node_enquiryform
node_visitor -->|"visits"| node_reviews
node_app -->|"routes to"| node_reviews
node_reviews -->|"renders"| node_reviewform
node_app -->|"renders"| node_assistant
node_app -->|"guards admin routes"| node_adminroute
node_app -->|"routes to"| node_adminproducts
node_app -->|"routes to"| node_adminarranger
node_app -->|"routes to"| node_admincontent
node_app -->|"routes to"| node_admingallery
node_app -->|"routes to"| node_adminreviews
node_app -->|"routes to"| node_adminenquiries
node_app -->|"routes to"| node_adminsettings
node_home -->|"reads site data"| node_provider
node_products -->|"reads site data"| node_provider
node_reviews -->|"reads reviews"| node_provider
node_enquiryform -->|"submits enquiry"| node_backend
node_reviewform -->|"submits review"| node_backend
node_adminproducts -->|"uses admin operations"| node_provider
node_adminarranger -->|"uses admin operations"| node_provider
node_admincontent -->|"uses admin operations"| node_provider
node_admingallery -->|"uses admin operations"| node_provider
node_adminreviews -->|"uses admin operations"| node_provider
node_adminsettings -->|"uses admin operations"| node_provider
node_provider -->|"subscribes to"| node_localstore
node_provider -->|"selects admin adapter"| node_backend
node_backend -->|"falls back to"| node_localstore
node_backend -->|"sends mutations"| node_convexclient
node_provider -->|"gets client"| node_convexclient
node_auth -->|"gets client"| node_convexclient
node_convexclient -.->|"connects to"| node_convex
node_backend -->|"calls site mutations"| node_convexsite
node_provider -->|"queries site data"| node_convexsite
node_convexsite -.->|"uses hosted data"| node_convex

click node_app "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/App.tsx"
click node_home "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Home.tsx"
click node_products "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Products.tsx"
click node_about "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/About.tsx"
click node_gallery "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Gallery.tsx"
click node_chrome "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/SiteChrome.tsx"
click node_showcase "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/ProductShowcase.tsx"
click node_process "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/ProcessJourney.tsx"
click node_futureui "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/FutureUI.tsx"
click node_contact "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Contact.tsx"
click node_enquiryform "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/EnquiryForm.tsx"
click node_reviews "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Reviews.tsx"
click node_reviewform "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/ReviewForm.tsx"
click node_assistant "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/CompanyAssistant.tsx"
click node_adminroute "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/RequireAdmin.tsx"
click node_adminproducts "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminProducts.tsx"
click node_adminarranger "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminArranger.tsx"
click node_admincontent "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminContent.tsx"
click node_admingallery "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminGallery.tsx"
click node_adminreviews "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminReviews.tsx"
click node_adminenquiries "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminEnquiries.tsx"
click node_adminsettings "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminSettings.tsx"
click node_provider "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/SiteDataProvider.tsx"
click node_backend "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/backend.ts"
click node_localstore "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/store.ts"
click node_auth "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/adminAuth.ts"
click node_convexclient "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/convexClient.ts"
click node_convexsite "https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/convex/site.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_app,node_home,node_products,node_about,node_gallery,node_chrome,node_showcase,node_process,node_futureui toneBlue
class node_contact,node_enquiryform,node_reviews,node_reviewform,node_assistant,node_convex toneAmber
class node_adminroute,node_adminproducts,node_adminarranger,node_admincontent,node_admingallery,node_adminreviews,node_adminenquiries,node_adminsettings toneMint
class node_provider,node_backend,node_localstore,node_auth,node_convexclient,node_convexsite toneRose
class node_visitor toneIndigo
```

## Components

### Public website

- [App routing](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/App.tsx): `src/App.tsx`
- [Home page](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Home.tsx): `src/pages/Home.tsx`
- [Product pages](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Products.tsx): `src/pages/Products.tsx`
- [About page](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/About.tsx): `src/pages/About.tsx`
- [Gallery page](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Gallery.tsx): `src/pages/Gallery.tsx`
- [Site chrome](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/SiteChrome.tsx): `src/components/SiteChrome.tsx`
- [Product showcase](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/ProductShowcase.tsx): `src/components/ProductShowcase.tsx`
- [Process journey](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/ProcessJourney.tsx): `src/components/ProcessJourney.tsx`
- [Company features](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/FutureUI.tsx): `src/components/FutureUI.tsx`

### Visitor engagement

- [Contact page](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Contact.tsx): `src/pages/Contact.tsx`
- [Enquiry form](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/EnquiryForm.tsx): `src/components/EnquiryForm.tsx`
- [Reviews page](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/pages/Reviews.tsx): `src/pages/Reviews.tsx`
- [Review form](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/ReviewForm.tsx): `src/components/ReviewForm.tsx`
- [Company assistant](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/components/CompanyAssistant.tsx): `src/components/CompanyAssistant.tsx`

### Administration

- [Admin access](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/RequireAdmin.tsx): `src/admin/RequireAdmin.tsx`
- [Product management](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminProducts.tsx): `src/admin/AdminProducts.tsx`
- [Product arranger](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminArranger.tsx): `src/admin/AdminArranger.tsx`
- [Content management](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminContent.tsx): `src/admin/AdminContent.tsx`
- [Gallery management](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminGallery.tsx): `src/admin/AdminGallery.tsx`
- [Review moderation](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminReviews.tsx): `src/admin/AdminReviews.tsx`
- [Enquiry management](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminEnquiries.tsx): `src/admin/AdminEnquiries.tsx`
- [Site settings](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/admin/AdminSettings.tsx): `src/admin/AdminSettings.tsx`

### Data services

- [Site data provider](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/SiteDataProvider.tsx): `src/data/SiteDataProvider.tsx`
- [Backend adapter](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/backend.ts): `src/data/backend.ts`
- [Local data store](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/store.ts): `src/data/store.ts`
- [Admin authentication](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/adminAuth.ts): `src/data/adminAuth.ts`
- [Convex client](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/data/convexClient.ts): `src/data/convexClient.ts`
- [Convex site functions](https://github.com/abisheksap/jagadamba_plastics--public-web-demo-/blob/main/src/convex/site.ts): `src/convex/site.ts`

### Other components

- **Visitor**
- **Convex service**

## Connections

- Visitor → App routing: opens site (evidence: `src/App.tsx`)
- App routing → Home page: routes to (evidence: `src/App.tsx`)
- App routing → Product pages: routes to (evidence: `src/App.tsx`)
- App routing → About page: routes to (evidence: `src/App.tsx`)
- App routing → Gallery page: routes to (evidence: `src/App.tsx`)
- App routing → Site chrome: wraps public routes (evidence: `src/App.tsx`)
- Home page → Product showcase: renders (evidence: `src/pages/Home.tsx`)
- Home page → Process journey: renders (evidence: `src/pages/Home.tsx`)
- Home page → Company features: renders (evidence: `src/pages/Home.tsx`)
- Product pages → Enquiry form: renders (evidence: `src/pages/Products.tsx`)
- About page → Company features: renders (evidence: `src/pages/About.tsx`)
- Visitor → Contact page: visits
- App routing → Contact page: routes to (evidence: `src/App.tsx`)
- Contact page → Enquiry form: renders (evidence: `src/pages/Contact.tsx`)
- Visitor → Reviews page: visits
- App routing → Reviews page: routes to (evidence: `src/App.tsx`)
- Reviews page → Review form: renders (evidence: `src/pages/Reviews.tsx`)
- App routing → Company assistant: renders (evidence: `src/App.tsx`)
- App routing → Admin access: guards admin routes (evidence: `src/App.tsx`)
- App routing → Product management: routes to (evidence: `src/App.tsx`)
- App routing → Product arranger: routes to (evidence: `src/App.tsx`)
- App routing → Content management: routes to (evidence: `src/App.tsx`)
- App routing → Gallery management: routes to (evidence: `src/App.tsx`)
- App routing → Review moderation: routes to (evidence: `src/App.tsx`)
- App routing → Enquiry management: routes to (evidence: `src/App.tsx`)
- App routing → Site settings: routes to (evidence: `src/App.tsx`)
- Home page → Site data provider: reads site data (evidence: `src/pages/Home.tsx`)
- Product pages → Site data provider: reads site data (evidence: `src/pages/Products.tsx`)
- Reviews page → Site data provider: reads reviews (evidence: `src/pages/Reviews.tsx`)
- Enquiry form → Backend adapter: submits enquiry (evidence: `src/components/EnquiryForm.tsx`)
- Review form → Backend adapter: submits review (evidence: `src/components/ReviewForm.tsx`)
- Product management → Site data provider: uses admin operations (evidence: `src/admin/AdminProducts.tsx`)
- Product arranger → Site data provider: uses admin operations (evidence: `src/admin/AdminArranger.tsx`)
- Content management → Site data provider: uses admin operations (evidence: `src/admin/AdminContent.tsx`)
- Gallery management → Site data provider: uses admin operations (evidence: `src/admin/AdminGallery.tsx`)
- Review moderation → Site data provider: uses admin operations (evidence: `src/admin/AdminReviews.tsx`)
- Site settings → Site data provider: uses admin operations (evidence: `src/admin/AdminSettings.tsx`)
- Site data provider → Local data store: subscribes to (evidence: `src/data/SiteDataProvider.tsx`)
- Site data provider → Backend adapter: selects admin adapter (evidence: `src/data/SiteDataProvider.tsx`)
- Backend adapter → Local data store: falls back to (evidence: `src/data/backend.ts`)
- Backend adapter → Convex client: sends mutations (evidence: `src/data/backend.ts`)
- Site data provider → Convex client: gets client (evidence: `src/data/SiteDataProvider.tsx`)
- Admin authentication → Convex client: gets client (evidence: `src/data/adminAuth.ts`)
- Convex client → Convex service: connects to
- Backend adapter → Convex site functions: calls site mutations (evidence: `src/data/backend.ts`)
- Site data provider → Convex site functions: queries site data (evidence: `src/data/SiteDataProvider.tsx`)
- Convex site functions → Convex service: uses hosted data
