# faisalchhipa/genai-event-planner architecture

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

- Interactive diagram: https://gitdiagram.com/faisalchhipa/genai-event-planner
- Repository: https://github.com/faisalchhipa/genai-event-planner

## Overview

This is an INR-focused event-planning web application for weddings, birthdays, and community events. A planner submits event details through the browser; the HTTP server validates and routes the request, the deterministic engine produces budget, timeline, and vendor guidance, and the optional AI engine adds ideas before the server returns the plan for display. The README documents these capabilities, but source excerpts are partial, so some links rely on that documentation rather than inspected implementation details.

Main entry points: [`server.py`](https://github.com/faisalchhipa/genai-event-planner/blob/master/server.py) (HTTP request handler), [`planner/logic.py`](https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py) (Plan generation), [`static/app.js`](https://github.com/faisalchhipa/genai-event-planner/blob/master/static/app.js) (Planning interface), [`static/index.html`](https://github.com/faisalchhipa/genai-event-planner/blob/master/static/index.html) (Page shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_browser_ui["Planning interface<br/>[app.js]"]
  node_page_shell["Page shell<br/>[index.html]"]
  node_ui_styles["Accessible styling<br/>[style.css]"]
end

subgraph group_service["HTTP service"]
  node_http_server["HTTP request handler<br/>[server.py]"]
  node_request_security["Request safeguards<br/>[server.py]"]
end

subgraph group_planning["Planning engine"]
  node_plan_logic["Plan generation<br/>[logic.py]"]
  node_input_validation["Input validation<br/>[logic.py]"]
  node_budget_tiers["Budget breakdown<br/>[logic.py]"]
  node_countdown["Countdown timeline<br/>[logic.py]"]
  node_vendor_checks["Vendor checklist<br/>[logic.py]"]
end

subgraph group_ideas["Idea enrichment"]
  node_idea_engine["Idea enrichment<br/>[ai.py]"]
end

node_planner(("Event planner"))
node_gemini{{"Gemini API"}}

node_planner -->|"enters event details"| node_browser_ui
node_browser_ui -->|"submits plan request"| node_http_server
node_http_server -->|"checks requests"| node_request_security
node_http_server -->|"generates plan"| node_plan_logic
node_plan_logic -->|"validates inputs"| node_input_validation
node_plan_logic -->|"calculates budget"| node_budget_tiers
node_plan_logic -->|"builds timeline"| node_countdown
node_plan_logic -->|"checks vendors"| node_vendor_checks
node_http_server -->|"requests ideas"| node_idea_engine
node_idea_engine -.->|"requests suggestions"| node_gemini
node_http_server -->|"returns plan"| node_browser_ui
node_http_server -->|"serves page"| node_page_shell
node_http_server -->|"serves styles"| node_ui_styles
node_page_shell -->|"loads interface"| node_browser_ui

click node_browser_ui "https://github.com/faisalchhipa/genai-event-planner/blob/master/static/app.js"
click node_page_shell "https://github.com/faisalchhipa/genai-event-planner/blob/master/static/index.html"
click node_ui_styles "https://github.com/faisalchhipa/genai-event-planner/blob/master/static/style.css"
click node_http_server "https://github.com/faisalchhipa/genai-event-planner/blob/master/server.py"
click node_request_security "https://github.com/faisalchhipa/genai-event-planner/blob/master/server.py"
click node_plan_logic "https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py"
click node_input_validation "https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py"
click node_budget_tiers "https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py"
click node_countdown "https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py"
click node_vendor_checks "https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py"
click node_idea_engine "https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/ai.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_browser_ui,node_page_shell,node_ui_styles toneBlue
class node_http_server,node_request_security toneAmber
class node_plan_logic,node_input_validation,node_budget_tiers,node_countdown,node_vendor_checks,node_gemini toneMint
class node_idea_engine toneRose
class node_planner toneIndigo
```

## Components

### Web experience

- [Planning interface](https://github.com/faisalchhipa/genai-event-planner/blob/master/static/app.js): `static/app.js`
- [Page shell](https://github.com/faisalchhipa/genai-event-planner/blob/master/static/index.html): `static/index.html`
- [Accessible styling](https://github.com/faisalchhipa/genai-event-planner/blob/master/static/style.css): `static/style.css`

### HTTP service

- [HTTP request handler](https://github.com/faisalchhipa/genai-event-planner/blob/master/server.py): `server.py`
- [Request safeguards](https://github.com/faisalchhipa/genai-event-planner/blob/master/server.py): `server.py`

### Planning engine

- [Plan generation](https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py): `planner/logic.py`
- [Input validation](https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py): `planner/logic.py`
- [Budget breakdown](https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py): `planner/logic.py`
- [Countdown timeline](https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py): `planner/logic.py`
- [Vendor checklist](https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/logic.py): `planner/logic.py`

### Idea enrichment

- [Idea enrichment](https://github.com/faisalchhipa/genai-event-planner/blob/master/planner/ai.py): `planner/ai.py`

### Other components

- **Event planner**
- **Gemini API**

## Connections

- Event planner → Planning interface: enters event details (evidence: `README.md`)
- Planning interface → HTTP request handler: submits plan request (evidence: `README.md`)
- HTTP request handler → Request safeguards: checks requests (evidence: `server.py`)
- HTTP request handler → Plan generation: generates plan (evidence: `server.py`)
- Plan generation → Input validation: validates inputs (evidence: `README.md`)
- Plan generation → Budget breakdown: calculates budget (evidence: `README.md`)
- Plan generation → Countdown timeline: builds timeline (evidence: `README.md`)
- Plan generation → Vendor checklist: checks vendors (evidence: `README.md`)
- HTTP request handler → Idea enrichment: requests ideas (evidence: `README.md`)
- Idea enrichment → Gemini API: requests suggestions (evidence: `README.md`)
- HTTP request handler → Planning interface: returns plan (evidence: `README.md`)
- HTTP request handler → Page shell: serves page (evidence: `README.md`)
- HTTP request handler → Accessible styling: serves styles (evidence: `README.md`)
- Page shell → Planning interface: loads interface (evidence: `README.md`)
