# hazim47/wedora architecture

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

- Interactive diagram: https://gitdiagram.com/hazim47/wedora
- Repository: https://github.com/hazim47/wedora

## Overview

Wedora is a single-page Arabic wedding invitation. Visitors open the animated door to view the invitation, wedding verse, live countdown, venue details, and RSVP form; RSVP submissions are sent to the invitation host by email. The main entry point and section composition are visible in the sampled React source. The RSVP form’s request code was omitted, so the browser-to-endpoint link is based on the endpoint’s documented role and matching form fields; runtime routing between the server and API handler is not established by the excerpts.

Main entry points: [`src/components/WeddingDoor.jsx`](https://github.com/hazim47/wedora/blob/main/src/components/WeddingDoor.jsx) (Wedding door), [`src/sections/RSVP.jsx`](https://github.com/hazim47/wedora/blob/main/src/sections/RSVP.jsx) (RSVP form), [`src/App.jsx`](https://github.com/hazim47/wedora/blob/main/src/App.jsx) (React app), [`api/rsvp.js`](https://github.com/hazim47/wedora/blob/main/api/rsvp.js) (RSVP API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_invitation["Invitation experience"]
  node_app["React app<br/>[App.jsx]"]
  node_door["Wedding door<br/>[WeddingDoor.jsx]"]
  node_verse["Quran verse<br/>[QuranVerse.jsx]"]
  node_countdown["Countdown<br/>[Countdown.jsx]"]
  node_venue["Venue details<br/>[VenueLocation.jsx]"]
  node_footer["Invitation footer<br/>[Footer.jsx]"]
  node_maps["Google Maps"]
end

subgraph group_response["RSVP handling"]
  node_rsvp["RSVP form<br/>[RSVP.jsx]"]
  node_rsvp_api["RSVP API<br/>[rsvp.js]"]
  node_mail_service["Resend email"]
end

node_guest(("Guest"))

node_guest -->|"opens"| node_app
node_app -->|"renders"| node_door
node_door -->|"renders"| node_verse
node_door -->|"renders"| node_countdown
node_door -->|"renders"| node_venue
node_door -->|"renders"| node_rsvp
node_door -->|"renders"| node_footer
node_guest -->|"submits"| node_rsvp
node_rsvp -.->|"posts RSVP"| node_rsvp_api
node_rsvp_api -->|"sends email"| node_mail_service
node_guest -->|"opens location"| node_maps

click node_app "https://github.com/hazim47/wedora/blob/main/src/App.jsx"
click node_door "https://github.com/hazim47/wedora/blob/main/src/components/WeddingDoor.jsx"
click node_verse "https://github.com/hazim47/wedora/blob/main/src/sections/QuranVerse.jsx"
click node_countdown "https://github.com/hazim47/wedora/blob/main/src/sections/Countdown.jsx"
click node_venue "https://github.com/hazim47/wedora/blob/main/src/sections/VenueLocation.jsx"
click node_rsvp "https://github.com/hazim47/wedora/blob/main/src/sections/RSVP.jsx"
click node_footer "https://github.com/hazim47/wedora/blob/main/src/sections/Footer.jsx"
click node_rsvp_api "https://github.com/hazim47/wedora/blob/main/api/rsvp.js"

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_door,node_verse,node_countdown,node_venue,node_footer,node_maps toneBlue
class node_rsvp,node_rsvp_api,node_mail_service toneAmber
class node_guest toneIndigo
```

## Components

### Invitation experience

- [React app](https://github.com/hazim47/wedora/blob/main/src/App.jsx): `src/App.jsx`
- [Wedding door](https://github.com/hazim47/wedora/blob/main/src/components/WeddingDoor.jsx): `src/components/WeddingDoor.jsx`
- [Quran verse](https://github.com/hazim47/wedora/blob/main/src/sections/QuranVerse.jsx): `src/sections/QuranVerse.jsx`
- [Countdown](https://github.com/hazim47/wedora/blob/main/src/sections/Countdown.jsx): `src/sections/Countdown.jsx`
- [Venue details](https://github.com/hazim47/wedora/blob/main/src/sections/VenueLocation.jsx): `src/sections/VenueLocation.jsx`
- [Invitation footer](https://github.com/hazim47/wedora/blob/main/src/sections/Footer.jsx): `src/sections/Footer.jsx`
- **Google Maps**

### RSVP handling

- [RSVP form](https://github.com/hazim47/wedora/blob/main/src/sections/RSVP.jsx): `src/sections/RSVP.jsx`
- [RSVP API](https://github.com/hazim47/wedora/blob/main/api/rsvp.js): `api/rsvp.js`
- **Resend email**

### Other components

- **Guest**

## Connections

- Guest → React app: opens
- React app → Wedding door: renders
- Wedding door → Quran verse: renders
- Wedding door → Countdown: renders
- Wedding door → Venue details: renders
- Wedding door → RSVP form: renders
- Wedding door → Invitation footer: renders
- Guest → RSVP form: submits
- RSVP form → RSVP API: posts RSVP
- RSVP API → Resend email: sends email
- Guest → Google Maps: opens location
