# mahesh19081978/winery architecture

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

- Interactive diagram: https://gitdiagram.com/mahesh19081978/winery
- Repository: https://github.com/mahesh19081978/winery

## Overview

VINORA is a winery discovery, booking, and hospitality platform with public wine and experience catalogues, reservations, guest accounts, and staff administration. The main customer journey is to explore an experience, check availability, create a booking, and manage or confirm it; event reservations and payment handling are related but distinct flows. Guest tasting journals and reviews, plus staff management of inventory, events, bookings, payments, and reviews, form additional product branches. API-to-service and validation links reflect sampled routes; unsampled subsystem wiring is omitted.

Main entry points: [`src/server/services/index.ts`](https://github.com/mahesh19081978/winery/blob/main/src/server/services/index.ts) (Domain services), [`src/server/validators/index.ts`](https://github.com/mahesh19081978/winery/blob/main/src/server/validators/index.ts) (Request validators), [`src/app/api/admin/events/route.ts`](https://github.com/mahesh19081978/winery/blob/main/src/app/api/admin/events/route.ts) (Event management API), [`src/app/api/admin/wines/route.ts`](https://github.com/mahesh19081978/winery/blob/main/src/app/api/admin/wines/route.ts) (Wine management API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public discovery and booking"]
  node_public_site["Public pages<br/>[page.tsx]"]
  node_wine_catalog["Wine catalogue<br/>[page.tsx]"]
  node_experience_pages["Experiences<br/>[page.tsx]"]
  node_event_pages["Events<br/>[page.tsx]"]
  node_availability_api["Availability API<br/>[route.ts]"]
  node_booking_api["Experience booking API<br/>[route.ts]"]
  node_event_booking_api["Event booking API<br/>[route.ts]"]
  node_booking_detail_api["Booking lookup<br/>[route.ts]"]
end

subgraph group_guest["Guest account"]
  node_guest_portal["Guest portal<br/>[page.tsx]"]
  node_guest_auth["Guest authentication<br/>[route.ts]"]
  node_tasting_api["Tasting journal API<br/>[route.ts]"]
  node_review_api["Reviews API<br/>[route.ts]"]
end

subgraph group_admin["Staff administration"]
  node_admin_ui["Admin dashboard<br/>[page.tsx]"]
  node_admin_events_api["Event management API<br/>[route.ts]"]
  node_admin_wines_api["Wine management API<br/>[route.ts]"]
  node_admin_reviews_ui["Review moderation"]
end

subgraph group_backend["Application services"]
  node_payment_api["Payment endpoints<br/>[route.ts]"]
  node_webhook_api["Payment webhook<br/>[route.ts]"]
  node_services["Domain services<br/>[index.ts]"]
  node_validators["Request validators<br/>[index.ts]"]
  node_auth_service["Staff authentication<br/>[index.ts]"]
end

node_visitor(("Visitor"))
node_razorpay{{"Razorpay"}}

node_visitor -->|"browses"| node_public_site
node_visitor -->|"explores wines"| node_wine_catalog
node_visitor -->|"chooses experience"| node_experience_pages
node_visitor -->|"explores events"| node_event_pages
node_experience_pages -->|"checks slots"| node_availability_api
node_visitor -->|"requests availability"| node_availability_api
node_visitor -->|"submits reservation"| node_booking_api
node_booking_api -->|"validates input"| node_validators
node_booking_api -->|"creates booking"| node_services
node_visitor -->|"reserves tickets"| node_event_booking_api
node_event_booking_api -->|"validates input"| node_validators
node_event_booking_api -->|"creates booking"| node_services
node_visitor -->|"looks up booking"| node_booking_detail_api
node_booking_detail_api -->|"gets booking"| node_services
node_visitor -->|"manages visits"| node_guest_portal
node_guest_portal -->|"records tastings"| node_tasting_api
node_guest_portal -->|"submits reviews"| node_review_api
node_tasting_api -->|"validates input"| node_validators
node_tasting_api -->|"reads and writes"| node_services
node_review_api -->|"validates input"| node_validators
node_review_api -->|"reads and writes"| node_services
node_admin_ui -->|"manages events"| node_admin_events_api
node_admin_ui -->|"manages wines"| node_admin_wines_api
node_admin_reviews_ui --> node_admin_reviews_ui
node_admin_events_api -->|"checks staff access"| node_auth_service
node_admin_events_api -->|"validates input"| node_validators
node_admin_events_api -->|"manages events"| node_services
node_admin_wines_api -->|"checks staff access"| node_auth_service
node_admin_wines_api -->|"validates input"| node_validators
node_admin_wines_api -->|"manages wines"| node_services
node_payment_api -->|"handles payments"| node_services
node_webhook_api -->|"verifies signature"| node_razorpay
node_webhook_api -->|"processes event"| node_services
node_payment_api -.->|"uses gateway"| node_razorpay

click node_public_site "https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/page.tsx"
click node_wine_catalog "https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/wines/page.tsx"
click node_experience_pages "https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/experiences/page.tsx"
click node_event_pages "https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/events/page.tsx"
click node_availability_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/availability/route.ts"
click node_booking_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/bookings/route.ts"
click node_event_booking_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/event-bookings/route.ts"
click node_booking_detail_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/bookings/%5BbookingNumber%5D/route.ts"
click node_guest_portal "https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/app/page.tsx"
click node_guest_auth "https://github.com/mahesh19081978/winery/blob/main/src/app/api/auth/guest/login/route.ts"
click node_tasting_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/tastings/route.ts"
click node_review_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/reviews/route.ts"
click node_admin_ui "https://github.com/mahesh19081978/winery/blob/main/src/app/admin/(protected)/page.tsx"
click node_admin_events_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/admin/events/route.ts"
click node_admin_wines_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/admin/wines/route.ts"
click node_admin_reviews_ui "https://github.com/mahesh19081978/winery/blob/main/src/app/admin/(protected)/reviews/ReviewsListClient.tsx"
click node_payment_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/payments/create-order/route.ts"
click node_webhook_api "https://github.com/mahesh19081978/winery/blob/main/src/app/api/payments/webhook/route.ts"
click node_services "https://github.com/mahesh19081978/winery/blob/main/src/server/services/index.ts"
click node_validators "https://github.com/mahesh19081978/winery/blob/main/src/server/validators/index.ts"
click node_auth_service "https://github.com/mahesh19081978/winery/blob/main/src/lib/auth/index.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_public_site,node_wine_catalog,node_experience_pages,node_event_pages,node_availability_api,node_booking_api,node_event_booking_api,node_booking_detail_api toneBlue
class node_guest_portal,node_guest_auth,node_tasting_api,node_review_api toneAmber
class node_admin_ui,node_admin_events_api,node_admin_wines_api,node_admin_reviews_ui toneMint
class node_payment_api,node_webhook_api,node_services,node_validators,node_auth_service toneRose
class node_visitor,node_razorpay toneIndigo
```

## Components

### Public discovery and booking

- [Public pages](https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/page.tsx): `src/app/(public)/page.tsx`
- [Wine catalogue](https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/wines/page.tsx): `src/app/(public)/wines/page.tsx`
- [Experiences](https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/experiences/page.tsx): `src/app/(public)/experiences/page.tsx`
- [Events](https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/events/page.tsx): `src/app/(public)/events/page.tsx`
- [Availability API](https://github.com/mahesh19081978/winery/blob/main/src/app/api/availability/route.ts): `src/app/api/availability/route.ts`
- [Experience booking API](https://github.com/mahesh19081978/winery/blob/main/src/app/api/bookings/route.ts): `src/app/api/bookings/route.ts`
- [Event booking API](https://github.com/mahesh19081978/winery/blob/main/src/app/api/event-bookings/route.ts): `src/app/api/event-bookings/route.ts`
- [Booking lookup](https://github.com/mahesh19081978/winery/blob/main/src/app/api/bookings/%5BbookingNumber%5D/route.ts): `src/app/api/bookings/[bookingNumber]/route.ts`

### Guest account

- [Guest portal](https://github.com/mahesh19081978/winery/blob/main/src/app/(public)/app/page.tsx): `src/app/(public)/app/page.tsx`
- [Guest authentication](https://github.com/mahesh19081978/winery/blob/main/src/app/api/auth/guest/login/route.ts): `src/app/api/auth/guest/login/route.ts`
- [Tasting journal API](https://github.com/mahesh19081978/winery/blob/main/src/app/api/tastings/route.ts): `src/app/api/tastings/route.ts`
- [Reviews API](https://github.com/mahesh19081978/winery/blob/main/src/app/api/reviews/route.ts): `src/app/api/reviews/route.ts`

### Staff administration

- [Admin dashboard](https://github.com/mahesh19081978/winery/blob/main/src/app/admin/(protected)/page.tsx): `src/app/admin/(protected)/page.tsx`
- [Event management API](https://github.com/mahesh19081978/winery/blob/main/src/app/api/admin/events/route.ts): `src/app/api/admin/events/route.ts`
- [Wine management API](https://github.com/mahesh19081978/winery/blob/main/src/app/api/admin/wines/route.ts): `src/app/api/admin/wines/route.ts`
- [Review moderation](https://github.com/mahesh19081978/winery/blob/main/src/app/admin/(protected)/reviews/ReviewsListClient.tsx): `src/app/admin/(protected)/reviews/ReviewsListClient.tsx`

### Application services

- [Payment endpoints](https://github.com/mahesh19081978/winery/blob/main/src/app/api/payments/create-order/route.ts): `src/app/api/payments/create-order/route.ts`
- [Payment webhook](https://github.com/mahesh19081978/winery/blob/main/src/app/api/payments/webhook/route.ts): `src/app/api/payments/webhook/route.ts`
- [Domain services](https://github.com/mahesh19081978/winery/blob/main/src/server/services/index.ts): `src/server/services/index.ts`
- [Request validators](https://github.com/mahesh19081978/winery/blob/main/src/server/validators/index.ts): `src/server/validators/index.ts`
- [Staff authentication](https://github.com/mahesh19081978/winery/blob/main/src/lib/auth/index.ts): `src/lib/auth/index.ts`

### Other components

- **Visitor**
- **Razorpay**

## Connections

- Visitor → Public pages: browses
- Visitor → Wine catalogue: explores wines
- Visitor → Experiences: chooses experience
- Visitor → Events: explores events
- Experiences → Availability API: checks slots
- Visitor → Availability API: requests availability
- Visitor → Experience booking API: submits reservation
- Experience booking API → Request validators: validates input
- Experience booking API → Domain services: creates booking
- Visitor → Event booking API: reserves tickets
- Event booking API → Request validators: validates input
- Event booking API → Domain services: creates booking
- Visitor → Booking lookup: looks up booking
- Booking lookup → Domain services: gets booking
- Visitor → Guest portal: manages visits
- Guest portal → Tasting journal API: records tastings
- Guest portal → Reviews API: submits reviews
- Tasting journal API → Request validators: validates input
- Tasting journal API → Domain services: reads and writes
- Reviews API → Request validators: validates input
- Reviews API → Domain services: reads and writes
- Admin dashboard → Event management API: manages events
- Admin dashboard → Wine management API: manages wines
- Review moderation → Review moderation
- Event management API → Staff authentication: checks staff access
- Event management API → Request validators: validates input
- Event management API → Domain services: manages events
- Wine management API → Staff authentication: checks staff access
- Wine management API → Request validators: validates input
- Wine management API → Domain services: manages wines
- Payment endpoints → Domain services: handles payments
- Payment webhook → Razorpay: verifies signature
- Payment webhook → Domain services: processes event
- Payment endpoints → Razorpay: uses gateway
