# savazar01/lalitakapilavai architecture

> Architecture diagram of the GitHub repository savazar01/lalitakapilavai, 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/savazar01/lalitakapilavai
- Repository: https://github.com/savazar01/lalitakapilavai

## Overview

SavazAI is a multi-tenant cultural publishing and exhibition platform. Curators manage artworks, catalogs, events, editorial pages, and branding in the admin studio; the public portal presents that material through pages, galleries, catalogs, and event listings, while forms and RSVPs feed a unified lead workflow. The README also documents immersive 3D exhibitions, print publishing, email tooling, and multi-cloud media storage. Several connections below reflect README descriptions; unsampled route internals are not inferred.

Main entry points: [`src/app/admin/(dashboard)`](https://github.com/savazar01/lalitakapilavai/tree/main/src/app/admin/(dashboard)) (Admin console), [`src/app/api/admin`](https://github.com/savazar01/lalitakapilavai/tree/main/src/app/api/admin) (Content APIs), [`src/app/(public)`](https://github.com/savazar01/lalitakapilavai/tree/main/src/app/(public)) (Public portal), [`src/components/public/tiptap-renderer.tsx`](https://github.com/savazar01/lalitakapilavai/blob/main/src/components/public/tiptap-renderer.tsx) (Block renderer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_admin["Admin studio"]
  node_adminui["Admin console"]
  node_pagebuilder["Page builder"]
  node_artworkmgmt["Artwork management<br/>[page.tsx]"]
  node_catalogmgmt["Catalog studio"]
  node_eventmgmt["Event management<br/>[page.tsx]"]
  node_settings["Brand settings<br/>[page.tsx]"]
end

subgraph group_content["Publishing"]
  node_contentapi["Content APIs"]
end

subgraph group_public["Public experience"]
  node_publicportal["Public portal"]
  node_blockrenderer["Block renderer"]
  node_gallery["Artwork galleries"]
  node_exhibitions["3D exhibitions"]
  node_catalogreader["Catalog reader"]
  node_editorial["Blogs and articles"]
end

subgraph group_engagement["Engagement services"]
  node_inquiries["Forms and inquiries<br/>[route.ts]"]
  node_rsvp["Event RSVP<br/>[route.ts]"]
  node_leads["CRM leads<br/>[route.ts]"]
  node_email["Email delivery<br/>[email-service.ts]"]
end

subgraph group_platform["Platform services"]
  node_auth["Authentication<br/>[auth.ts]"]
  node_database[("Platform database<br/>[prisma.ts]")]
  node_storage["Media storage<br/>[storage.ts]"]
  node_print["Print publishing"]
  node_ai["AI assistance<br/>[ai-client.ts]"]
end

node_curator(("Curator"))
node_visitor(("Visitor"))

node_curator -->|"manages content"| node_adminui
node_adminui -->|"opens builder"| node_pagebuilder
node_adminui -->|"curates artworks"| node_artworkmgmt
node_adminui -->|"builds catalogs"| node_catalogmgmt
node_adminui -->|"manages events"| node_eventmgmt
node_adminui -->|"configures brand"| node_settings
node_pagebuilder -.->|"saves pages"| node_contentapi
node_artworkmgmt -.->|"manages records"| node_contentapi
node_catalogmgmt -.->|"manages catalogs"| node_contentapi
node_eventmgmt -.->|"manages events"| node_contentapi
node_contentapi -.->|"persists content"| node_database
node_visitor -->|"browses"| node_publicportal
node_publicportal -->|"renders page blocks"| node_blockrenderer
node_blockrenderer -->|"renders galleries"| node_gallery
node_blockrenderer -->|"renders exhibitions"| node_exhibitions
node_publicportal -->|"opens catalogs"| node_catalogreader
node_publicportal -->|"presents articles"| node_editorial
node_visitor -->|"submits inquiry"| node_inquiries
node_visitor -->|"registers attendance"| node_rsvp
node_inquiries -.->|"captures leads"| node_leads
node_rsvp -->|"records registration"| node_database
node_rsvp -->|"sends notification"| node_email
node_adminui -->|"authenticates access"| node_auth
node_auth -->|"uses adapter"| node_database
node_contentapi -.->|"uploads media"| node_storage
node_catalogreader -->|"prints catalog"| node_print
node_adminui -.->|"requests assistance"| node_ai

click node_adminui "https://github.com/savazar01/lalitakapilavai/tree/main/src/app/admin/(dashboard)"
click node_pagebuilder "https://github.com/savazar01/lalitakapilavai/blob/main/src/components/builder/page-matrix-studio.tsx"
click node_artworkmgmt "https://github.com/savazar01/lalitakapilavai/blob/main/src/app/admin/(dashboard)/artworks/page.tsx"
click node_catalogmgmt "https://github.com/savazar01/lalitakapilavai/tree/main/src/app/admin/(dashboard)/catalogs"
click node_eventmgmt "https://github.com/savazar01/lalitakapilavai/blob/main/src/app/admin/(dashboard)/events/page.tsx"
click node_settings "https://github.com/savazar01/lalitakapilavai/blob/main/src/app/admin/(dashboard)/settings/page.tsx"
click node_contentapi "https://github.com/savazar01/lalitakapilavai/tree/main/src/app/api/admin"
click node_publicportal "https://github.com/savazar01/lalitakapilavai/tree/main/src/app/(public)"
click node_blockrenderer "https://github.com/savazar01/lalitakapilavai/blob/main/src/components/public/tiptap-renderer.tsx"
click node_gallery "https://github.com/savazar01/lalitakapilavai/blob/main/src/components/public/blocks/media-gallery-block.tsx"
click node_exhibitions "https://github.com/savazar01/lalitakapilavai/blob/main/src/components/public/blocks/gallery-exhibition-wall/exhibition-wall-block.tsx"
click node_catalogreader "https://github.com/savazar01/lalitakapilavai/blob/main/src/components/public/catalog-scroll-engine.tsx"
click node_editorial "https://github.com/savazar01/lalitakapilavai/tree/main/src/app/(public)/blogs"
click node_inquiries "https://github.com/savazar01/lalitakapilavai/blob/main/src/app/api/forms/submit/route.ts"
click node_rsvp "https://github.com/savazar01/lalitakapilavai/blob/main/src/app/api/events/register/route.ts"
click node_leads "https://github.com/savazar01/lalitakapilavai/blob/main/src/app/api/admin/leads/route.ts"
click node_email "https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/email-service.ts"
click node_auth "https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/auth.ts"
click node_database "https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/prisma.ts"
click node_storage "https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/storage.ts"
click node_print "https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/print-isolated-html.ts"
click node_ai "https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/ai-client.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_adminui,node_pagebuilder,node_artworkmgmt,node_catalogmgmt,node_eventmgmt,node_settings toneBlue
class node_contentapi toneAmber
class node_publicportal,node_blockrenderer,node_gallery,node_exhibitions,node_catalogreader,node_editorial toneMint
class node_inquiries,node_rsvp,node_leads,node_email toneRose
class node_auth,node_database,node_storage,node_print,node_ai,node_curator,node_visitor toneIndigo
```

## Components

### Admin studio

- [Admin console](https://github.com/savazar01/lalitakapilavai/tree/main/src/app/admin/(dashboard)): `src/app/admin/(dashboard)`
- [Page builder](https://github.com/savazar01/lalitakapilavai/blob/main/src/components/builder/page-matrix-studio.tsx): `src/components/builder/page-matrix-studio.tsx`
- [Artwork management](https://github.com/savazar01/lalitakapilavai/blob/main/src/app/admin/(dashboard)/artworks/page.tsx): `src/app/admin/(dashboard)/artworks/page.tsx`
- [Catalog studio](https://github.com/savazar01/lalitakapilavai/tree/main/src/app/admin/(dashboard)/catalogs): `src/app/admin/(dashboard)/catalogs`
- [Event management](https://github.com/savazar01/lalitakapilavai/blob/main/src/app/admin/(dashboard)/events/page.tsx): `src/app/admin/(dashboard)/events/page.tsx`
- [Brand settings](https://github.com/savazar01/lalitakapilavai/blob/main/src/app/admin/(dashboard)/settings/page.tsx): `src/app/admin/(dashboard)/settings/page.tsx`

### Publishing

- [Content APIs](https://github.com/savazar01/lalitakapilavai/tree/main/src/app/api/admin): `src/app/api/admin`

### Public experience

- [Public portal](https://github.com/savazar01/lalitakapilavai/tree/main/src/app/(public)): `src/app/(public)`
- [Block renderer](https://github.com/savazar01/lalitakapilavai/blob/main/src/components/public/tiptap-renderer.tsx): `src/components/public/tiptap-renderer.tsx`
- [Artwork galleries](https://github.com/savazar01/lalitakapilavai/blob/main/src/components/public/blocks/media-gallery-block.tsx): `src/components/public/blocks/media-gallery-block.tsx`
- [3D exhibitions](https://github.com/savazar01/lalitakapilavai/blob/main/src/components/public/blocks/gallery-exhibition-wall/exhibition-wall-block.tsx): `src/components/public/blocks/gallery-exhibition-wall/exhibition-wall-block.tsx`
- [Catalog reader](https://github.com/savazar01/lalitakapilavai/blob/main/src/components/public/catalog-scroll-engine.tsx): `src/components/public/catalog-scroll-engine.tsx`
- [Blogs and articles](https://github.com/savazar01/lalitakapilavai/tree/main/src/app/(public)/blogs): `src/app/(public)/blogs`

### Engagement services

- [Forms and inquiries](https://github.com/savazar01/lalitakapilavai/blob/main/src/app/api/forms/submit/route.ts): `src/app/api/forms/submit/route.ts`
- [Event RSVP](https://github.com/savazar01/lalitakapilavai/blob/main/src/app/api/events/register/route.ts): `src/app/api/events/register/route.ts`
- [CRM leads](https://github.com/savazar01/lalitakapilavai/blob/main/src/app/api/admin/leads/route.ts): `src/app/api/admin/leads/route.ts`
- [Email delivery](https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/email-service.ts): `src/lib/email-service.ts`

### Platform services

- [Authentication](https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Platform database](https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`
- [Media storage](https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/storage.ts): `src/lib/storage.ts`
- [Print publishing](https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/print-isolated-html.ts): `src/lib/print-isolated-html.ts`
- [AI assistance](https://github.com/savazar01/lalitakapilavai/blob/main/src/lib/ai-client.ts): `src/lib/ai-client.ts`

### Other components

- **Curator**
- **Visitor**

## Connections

- Curator → Admin console: manages content (evidence: `README.md`)
- Admin console → Page builder: opens builder (evidence: `README.md`)
- Admin console → Artwork management: curates artworks (evidence: `README.md`)
- Admin console → Catalog studio: builds catalogs (evidence: `README.md`)
- Admin console → Event management: manages events (evidence: `README.md`)
- Admin console → Brand settings: configures brand (evidence: `README.md`)
- Page builder → Content APIs: saves pages
- Artwork management → Content APIs: manages records
- Catalog studio → Content APIs: manages catalogs
- Event management → Content APIs: manages events
- Content APIs → Platform database: persists content (evidence: `src/app/api/admin/media/route.ts`)
- Visitor → Public portal: browses (evidence: `README.md`)
- Public portal → Block renderer: renders page blocks (evidence: `README.md`)
- Block renderer → Artwork galleries: renders galleries (evidence: `src/components/public/tiptap-renderer.tsx`)
- Block renderer → 3D exhibitions: renders exhibitions (evidence: `src/components/public/tiptap-renderer.tsx`)
- Public portal → Catalog reader: opens catalogs (evidence: `README.md`)
- Public portal → Blogs and articles: presents articles (evidence: `README.md`)
- Visitor → Forms and inquiries: submits inquiry (evidence: `README.md`)
- Visitor → Event RSVP: registers attendance (evidence: `README.md`)
- Forms and inquiries → CRM leads: captures leads
- Event RSVP → Platform database: records registration (evidence: `src/app/api/events/register/route.ts`)
- Event RSVP → Email delivery: sends notification (evidence: `src/app/api/events/register/route.ts`)
- Admin console → Authentication: authenticates access (evidence: `README.md`)
- Authentication → Platform database: uses adapter (evidence: `src/lib/auth.ts`)
- Content APIs → Media storage: uploads media (evidence: `src/app/api/admin/settings/route.ts`)
- Catalog reader → Print publishing: prints catalog (evidence: `README.md`)
- Admin console → AI assistance: requests assistance
