# shekhar143542/visora_ai_ppt_maker architecture

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

- Interactive diagram: https://gitdiagram.com/shekhar143542/visora_ai_ppt_maker
- Repository: https://github.com/shekhar143542/visora_ai_ppt_maker

## Overview

Visora is a web app for creating and editing slide presentations. The main workflow is to open a presentation, edit its slides and theme, and save project changes; users can also generate presentations with AI or import PowerPoint/PDF files, then export presentations in several formats. The graph captures the presentation editor, project persistence, AI, import, and export branches. Import routing and parser calls are excerpted; several other connections are based on the SOURCE INDEX. Export routes are represented as capabilities, but their consumers are not established by the available evidence.

Main entry points: [`src/app/(protected)/presentation/[presentationId]/page.tsx`](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/page.tsx) (Presentation page), [`src/app/api/import/process/route.ts`](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/api/import/process/route.ts) (Import processing), [`src/actions/project.ts`](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/actions/project.ts) (Project actions), [`src/app/(protected)/presentation/[presentationId]/_components/editor/Editor.tsx`](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/_components/editor/Editor.tsx) (Slide editor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_projects["Projects and persistence"]
  node_project_actions["Project actions<br/>[project.ts]"]
  node_database[("Prisma database client<br/>[prisma.ts]")]
end

subgraph group_creation["Presentation creation"]
  node_ai_generation["AI generation<br/>[chatgpt.ts]"]
end

subgraph group_editor["Presentation editor"]
  node_presentation_page["Presentation page<br/>[page.tsx]"]
  node_slide_store["Slide state<br/>[useSlideStore.tsx]"]
  node_editor_ui["Slide editor<br/>[Editor.tsx]"]
  node_recursive_renderer["Content renderer"]
  node_paragraph["Paragraph component<br/>[Paragraph.tsx]"]
  node_navbar["Editor navigation<br/>[Navbar.tsx]"]
  node_sidebar["Editor sidebars<br/>[index.tsx]"]
  node_theme_selection["Theme selection<br/>[ThemePicker.tsx]"]
end

subgraph group_exchange["Import and export"]
  node_import_upload["Import upload<br/>[route.ts]"]
  node_import_process["Import processing<br/>[route.ts]"]
  node_pptx_parser["PowerPoint parser<br/>[pptxParser.ts]"]
  node_simple_parser["Simple PowerPoint parser"]
  node_basic_parser["Basic PowerPoint parser<br/>[basicPptxParser.ts]"]
  node_debug_parser["Debug PowerPoint parser<br/>[debugPptxParser.ts]"]
  node_pdf_parser["PDF parser<br/>[pdfParser.ts]"]
  node_downloads["Presentation downloads"]
end

node_user(("User"))

node_presentation_page -->|"loads projects"| node_project_actions
node_presentation_page -->|"sets slide state"| node_slide_store
node_presentation_page -->|"renders editor"| node_editor_ui
node_presentation_page -->|"renders navigation"| node_navbar
node_presentation_page -->|"renders sidebar"| node_sidebar
node_presentation_page -->|"invokes generation"| node_ai_generation
node_project_actions -->|"reads and writes"| node_database
node_editor_ui -->|"renders content"| node_recursive_renderer
node_recursive_renderer -->|"renders paragraphs"| node_paragraph
node_user -.->|"opens presentation"| node_presentation_page
node_user -.->|"uploads file"| node_import_upload
node_import_upload -.->|"passes uploaded file"| node_import_process
node_import_process -->|"tries first"| node_basic_parser
node_import_process -->|"fallback parse"| node_simple_parser
node_import_process -->|"fallback parse"| node_pptx_parser
node_import_process -.->|"may parse"| node_pdf_parser
node_import_process -->|"creates and updates"| node_project_actions
node_user -.->|"requests export"| node_downloads

click node_presentation_page "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/page.tsx"
click node_project_actions "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/actions/project.ts"
click node_database "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/prisma.ts"
click node_slide_store "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/store/useSlideStore.tsx"
click node_editor_ui "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/_components/editor/Editor.tsx"
click node_recursive_renderer "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/_components/editor/MasterRecursiveComponent.tsx"
click node_paragraph "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/components/global/editor/components/Paragraph.tsx"
click node_navbar "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/_components/Navbar/Navbar.tsx"
click node_sidebar "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/_components/editor-sidebar/rightsidebar/index.tsx"
click node_theme_selection "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/select-theme/_components/ThemePicker.tsx"
click node_ai_generation "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/actions/chatgpt.ts"
click node_import_upload "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/api/import/upload/route.ts"
click node_import_process "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/api/import/process/route.ts"
click node_pptx_parser "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/pptxParser.ts"
click node_simple_parser "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/simplePptxParser.ts"
click node_basic_parser "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/basicPptxParser.ts"
click node_debug_parser "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/debugPptxParser.ts"
click node_pdf_parser "https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/pdfParser.ts"
click node_downloads "https://github.com/shekhar143542/visora_ai_ppt_maker/tree/main/src/app/api/download"

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_project_actions,node_database,node_user toneBlue
class node_ai_generation toneAmber
class node_presentation_page,node_slide_store,node_editor_ui,node_recursive_renderer,node_paragraph,node_navbar,node_sidebar,node_theme_selection toneMint
class node_import_upload,node_import_process,node_pptx_parser,node_simple_parser,node_basic_parser,node_debug_parser,node_pdf_parser,node_downloads toneRose
```

## Components

### Projects and persistence

- [Project actions](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/actions/project.ts): `src/actions/project.ts`
- [Prisma database client](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`

### Presentation creation

- [AI generation](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/actions/chatgpt.ts): `src/actions/chatgpt.ts`

### Presentation editor

- [Presentation page](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/page.tsx): `src/app/(protected)/presentation/[presentationId]/page.tsx`
- [Slide state](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/store/useSlideStore.tsx): `src/store/useSlideStore.tsx`
- [Slide editor](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/_components/editor/Editor.tsx): `src/app/(protected)/presentation/[presentationId]/_components/editor/Editor.tsx`
- [Content renderer](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/_components/editor/MasterRecursiveComponent.tsx): `src/app/(protected)/presentation/[presentationId]/_components/editor/MasterRecursiveComponent.tsx`
- [Paragraph component](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/components/global/editor/components/Paragraph.tsx): `src/components/global/editor/components/Paragraph.tsx`
- [Editor navigation](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/_components/Navbar/Navbar.tsx): `src/app/(protected)/presentation/[presentationId]/_components/Navbar/Navbar.tsx`
- [Editor sidebars](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/_components/editor-sidebar/rightsidebar/index.tsx): `src/app/(protected)/presentation/[presentationId]/_components/editor-sidebar/rightsidebar/index.tsx`
- [Theme selection](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/(protected)/presentation/%5BpresentationId%5D/select-theme/_components/ThemePicker.tsx): `src/app/(protected)/presentation/[presentationId]/select-theme/_components/ThemePicker.tsx`

### Import and export

- [Import upload](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/api/import/upload/route.ts): `src/app/api/import/upload/route.ts`
- [Import processing](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/app/api/import/process/route.ts): `src/app/api/import/process/route.ts`
- [PowerPoint parser](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/pptxParser.ts): `src/lib/pptxParser.ts`
- [Simple PowerPoint parser](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/simplePptxParser.ts): `src/lib/simplePptxParser.ts`
- [Basic PowerPoint parser](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/basicPptxParser.ts): `src/lib/basicPptxParser.ts`
- [Debug PowerPoint parser](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/debugPptxParser.ts): `src/lib/debugPptxParser.ts`
- [PDF parser](https://github.com/shekhar143542/visora_ai_ppt_maker/blob/main/src/lib/pdfParser.ts): `src/lib/pdfParser.ts`
- [Presentation downloads](https://github.com/shekhar143542/visora_ai_ppt_maker/tree/main/src/app/api/download): `src/app/api/download`

### Other components

- **User**

## Connections

- Presentation page → Project actions: loads projects (evidence: `src/app/(protected)/presentation/[presentationId]/page.tsx`)
- Presentation page → Slide state: sets slide state (evidence: `src/app/(protected)/presentation/[presentationId]/page.tsx`)
- Presentation page → Slide editor: renders editor (evidence: `src/app/(protected)/presentation/[presentationId]/page.tsx`)
- Presentation page → Editor navigation: renders navigation (evidence: `src/app/(protected)/presentation/[presentationId]/page.tsx`)
- Presentation page → Editor sidebars: renders sidebar (evidence: `src/app/(protected)/presentation/[presentationId]/page.tsx`)
- Presentation page → AI generation: invokes generation (evidence: `src/app/(protected)/presentation/[presentationId]/page.tsx`)
- Project actions → Prisma database client: reads and writes (evidence: `src/actions/project.ts`)
- Slide editor → Content renderer: renders content
- Content renderer → Paragraph component: renders paragraphs (evidence: `src/app/(protected)/presentation/[presentationId]/_components/editor/MasterRecursiveComponent.tsx`)
- User → Presentation page: opens presentation
- User → Import upload: uploads file
- Import upload → Import processing: passes uploaded file
- Import processing → Basic PowerPoint parser: tries first (evidence: `src/app/api/import/process/route.ts`)
- Import processing → Simple PowerPoint parser: fallback parse (evidence: `src/app/api/import/process/route.ts`)
- Import processing → PowerPoint parser: fallback parse (evidence: `src/app/api/import/process/route.ts`)
- Import processing → PDF parser: may parse (evidence: `src/app/api/import/process/route.ts`)
- Import processing → Project actions: creates and updates (evidence: `src/app/api/import/process/route.ts`)
- User → Presentation downloads: requests export
