# abdalrahman-muhtaseb/venuecharm architecture

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

## Overview

VenueCharm is a two-sided venue marketplace for event organizers and venue hosts. Organizers discover venues, check availability, book and pay, then communicate with hosts and leave reviews; hosts manage listings, bookings, calendars, and payouts. The graph also preserves RFP matching, favorites, notifications, administration, and localization. The README documents these capabilities; sampled search and review sources show some internal calls. Other links are documented at product level, not verified against unsampled implementation.

Main entry points: [`src/actions/bookings.ts`](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/bookings.ts) (Booking Lifecycle), [`src/lib/supabase/server.ts`](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/supabase/server.ts) (Supabase Data), [`src/actions/reviews.ts`](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/reviews.ts) (Reviews), [`src/app/api/venues/search/route.ts`](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/app/api/venues/search/route.ts) (Venue Search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Discovery &amp; Listings"]
  node_venue_search["Venue Search<br/>[route.ts]"]
  node_matching["RFP Matching<br/>[rfp-matching.ts]"]
  node_listing["Venue Listings<br/>[venues.ts]"]
end

subgraph group_booking["Booking &amp; Payments"]
  node_availability["Availability Tools<br/>[availability.ts]"]
  node_booking_flow["Booking Lifecycle<br/>[bookings.ts]"]
  node_payments["Payment Processing<br/>[route.ts]"]
  node_stripe["Stripe Connect"]
  node_calendar_sync["Calendar Sync<br/>[google-calendar.ts]"]
end

subgraph group_community["Marketplace Community"]
  node_messaging["Conversations<br/>[messages.ts]"]
  node_reviews["Reviews<br/>[reviews.ts]"]
  node_review_format["Review Formatting<br/>[reviews-format.ts]"]
  node_favorites["Saved Venues<br/>[favorites.ts]"]
end

subgraph group_operations["Host &amp; Platform Operations"]
  node_notifications["Notifications<br/>[notifications.ts]"]
  node_admin["Admin Panel<br/>[admin.ts]"]
end

subgraph group_foundation["Shared Services"]
  node_supabase[("Supabase Data<br/>[server.ts]")]
  node_email["Transactional Email<br/>[email.ts]"]
  node_localization["Hebrew &amp; English<br/>[i18n.ts]"]
end

node_organizer(("Event Organizer"))
node_host(("Venue Host"))
node_google_calendar["Google Calendar"]
node_resend["Resend"]

node_organizer -->|"searches venues"| node_venue_search
node_venue_search -->|"ranks results"| node_matching
node_venue_search -->|"queries venues"| node_supabase
node_organizer -->|"submits request"| node_matching
node_host -->|"manages listings"| node_listing
node_host -->|"sets availability"| node_availability
node_availability -->|"reads and writes"| node_supabase
node_organizer -->|"requests booking"| node_booking_flow
node_booking_flow -.->|"checks availability"| node_availability
node_booking_flow -->|"creates payment hold"| node_payments
node_payments -->|"dispatches payment"| node_stripe
node_stripe -.->|"reports payment status"| node_booking_flow
node_host -->|"accepts or declines"| node_booking_flow
node_booking_flow -.->|"stores booking"| node_supabase
node_booking_flow -->|"syncs confirmed booking"| node_calendar_sync
node_calendar_sync -->|"updates calendar"| node_google_calendar
node_organizer -->|"messages host"| node_messaging
node_host -->|"messages renter"| node_messaging
node_organizer -->|"submits review"| node_reviews
node_reviews -->|"formats review"| node_review_format
node_reviews -->|"reads and writes"| node_supabase
node_reviews -->|"notifies host"| node_notifications
node_organizer -->|"saves venues"| node_favorites
node_host -->|"receives updates"| node_notifications
node_notifications -->|"sends lifecycle email"| node_email
node_email -->|"delivers email"| node_resend
node_admin -.->|"manages platform data"| node_supabase
node_organizer -->|"uses localized UI"| node_localization
node_host -->|"uses localized UI"| node_localization

click node_venue_search "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/app/api/venues/search/route.ts"
click node_matching "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/rfp-matching.ts"
click node_listing "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/venues.ts"
click node_availability "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/availability.ts"
click node_booking_flow "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/bookings.ts"
click node_payments "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/app/api/stripe/webhook/route.ts"
click node_calendar_sync "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/google-calendar.ts"
click node_messaging "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/messages.ts"
click node_reviews "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/reviews.ts"
click node_review_format "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/reviews-format.ts"
click node_favorites "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/favorites.ts"
click node_notifications "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/notifications.ts"
click node_admin "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/admin.ts"
click node_supabase "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/supabase/server.ts"
click node_email "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/email.ts"
click node_localization "https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/i18n.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_venue_search,node_matching,node_listing toneBlue
class node_availability,node_booking_flow,node_payments,node_stripe,node_calendar_sync toneAmber
class node_messaging,node_reviews,node_review_format,node_favorites toneMint
class node_notifications,node_admin toneRose
class node_supabase,node_email,node_localization,node_organizer,node_host,node_google_calendar,node_resend toneIndigo
```

## Components

### Discovery & Listings

- [Venue Search](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/app/api/venues/search/route.ts): `src/app/api/venues/search/route.ts`
- [RFP Matching](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/rfp-matching.ts): `src/lib/rfp-matching.ts`
- [Venue Listings](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/venues.ts): `src/actions/venues.ts`

### Booking & Payments

- [Availability Tools](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/availability.ts): `src/actions/availability.ts`
- [Booking Lifecycle](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/bookings.ts): `src/actions/bookings.ts`
- [Payment Processing](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/app/api/stripe/webhook/route.ts): `src/app/api/stripe/webhook/route.ts`
- **Stripe Connect**
- [Calendar Sync](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/google-calendar.ts): `src/lib/google-calendar.ts`

### Marketplace Community

- [Conversations](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/messages.ts): `src/actions/messages.ts`
- [Reviews](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/reviews.ts): `src/actions/reviews.ts`
- [Review Formatting](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/reviews-format.ts): `src/lib/reviews-format.ts`
- [Saved Venues](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/favorites.ts): `src/actions/favorites.ts`

### Host & Platform Operations

- [Notifications](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/notifications.ts): `src/lib/notifications.ts`
- [Admin Panel](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/actions/admin.ts): `src/actions/admin.ts`

### Shared Services

- [Supabase Data](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/supabase/server.ts): `src/lib/supabase/server.ts`
- [Transactional Email](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/email.ts): `src/lib/email.ts`
- [Hebrew & English](https://github.com/abdalrahman-muhtaseb/venuecharm/blob/main/src/lib/i18n.ts): `src/lib/i18n.ts`

### Other components

- **Event Organizer**
- **Venue Host**
- **Google Calendar**
- **Resend**

## Connections

- Event Organizer → Venue Search: searches venues (evidence: `README.md`)
- Venue Search → RFP Matching: ranks results (evidence: `src/app/api/venues/search/route.ts`)
- Venue Search → Supabase Data: queries venues (evidence: `src/app/api/venues/search/route.ts`)
- Event Organizer → RFP Matching: submits request (evidence: `README.md`)
- Venue Host → Venue Listings: manages listings (evidence: `README.md`)
- Venue Host → Availability Tools: sets availability (evidence: `README.md`)
- Availability Tools → Supabase Data: reads and writes (evidence: `src/actions/availability.ts`)
- Event Organizer → Booking Lifecycle: requests booking (evidence: `README.md`)
- Booking Lifecycle → Availability Tools: checks availability
- Booking Lifecycle → Payment Processing: creates payment hold (evidence: `README.md`)
- Payment Processing → Stripe Connect: dispatches payment (evidence: `README.md`)
- Stripe Connect → Booking Lifecycle: reports payment status
- Venue Host → Booking Lifecycle: accepts or declines (evidence: `README.md`)
- Booking Lifecycle → Supabase Data: stores booking
- Booking Lifecycle → Calendar Sync: syncs confirmed booking (evidence: `README.md`)
- Calendar Sync → Google Calendar: updates calendar (evidence: `README.md`)
- Event Organizer → Conversations: messages host (evidence: `README.md`)
- Venue Host → Conversations: messages renter (evidence: `README.md`)
- Event Organizer → Reviews: submits review (evidence: `README.md`)
- Reviews → Review Formatting: formats review (evidence: `src/actions/reviews.ts`)
- Reviews → Supabase Data: reads and writes (evidence: `src/actions/reviews.ts`)
- Reviews → Notifications: notifies host (evidence: `src/actions/reviews.ts`)
- Event Organizer → Saved Venues: saves venues (evidence: `README.md`)
- Venue Host → Notifications: receives updates (evidence: `README.md`)
- Notifications → Transactional Email: sends lifecycle email (evidence: `README.md`)
- Transactional Email → Resend: delivers email (evidence: `README.md`)
- Admin Panel → Supabase Data: manages platform data
- Event Organizer → Hebrew & English: uses localized UI (evidence: `README.md`)
- Venue Host → Hebrew & English: uses localized UI (evidence: `README.md`)
