# lakshit-poojari/greenhill-events architecture

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

- Interactive diagram: https://gitdiagram.com/lakshit-poojari/greenhill-events
- Repository: https://github.com/lakshit-poojari/greenhill-events

## Overview

Greenhill Event combines a public event-services website with an administrative content-management area. The principal workflow is visitors exploring mobile-bar and entertainment offerings, case studies, and event information, then contacting the business or commenting; staff manage users and site content through the control panel. The API routes expose those domain operations, with sampled case-study routes explicitly calling controllers and the case-study controller delegating to its service. The README is only the Next.js starter README; public-page data wiring and most backend internals were not sampled, so uncertain connections are omitted.

Main entry points: [`app/api/contactEmail/route.ts`](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/contactEmail/route.ts) (Contact API), [`backend/controllers/caseStudyController.ts`](https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/caseStudyController.ts) (Case study controller), [`app/api/caseStudy/route.ts`](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/caseStudy/route.ts) (Case study API), [`app/api/comment/route.ts`](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/comment/route.ts) (Comment API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public website"]
  node_public_home["Home<br/>[page.tsx]"]
  node_public_mobile["Mobile bars<br/>[page.tsx]"]
  node_public_entertainment["Entertainment<br/>[page.tsx]"]
  node_public_case_studies["Case studies<br/>[page.tsx]"]
  node_public_events["Events<br/>[page.tsx]"]
  node_contact_form["Contact form<br/>[ContactForm.tsx]"]
  node_comments_ui["Comments<br/>[Comments.tsx]"]
end

subgraph group_admin["Admin CMS"]
  node_admin_dashboard["Admin dashboard<br/>[page.tsx]"]
  node_admin_content["Content management<br/>[page.tsx]"]
  node_admin_entertainment["Entertainment management<br/>[page.tsx]"]
  node_admin_users["User management<br/>[page.tsx]"]
end

subgraph group_api["API routes"]
  node_api_case["Case study API<br/>[route.ts]"]
  node_api_contact["Contact API<br/>[route.ts]"]
  node_api_comment["Comment API<br/>[route.ts]"]
  node_api_offerings["Offerings API<br/>[route.ts]"]
  node_api_categories["Categories API<br/>[route.ts]"]
  node_api_users["Users API<br/>[route.ts]"]
  node_api_auth["Authentication API<br/>[route.ts]"]
end

subgraph group_domain["Domain services"]
  node_case_controller["Case study controller"]
  node_contact_controller["Contact controller"]
  node_comment_controller["Comments controller"]
  node_offering_controller["Offering controller"]
  node_category_controller["Category controller"]
  node_user_controller["User controller<br/>[userController.ts]"]
  node_case_service["Case study service"]
end

node_visitor(("Visitor"))
node_admin_user(("Admin user"))
node_captcha{{"Google reCAPTCHA"}}

node_visitor -->|"browses"| node_public_home
node_visitor -->|"explores"| node_public_mobile
node_visitor -->|"explores"| node_public_entertainment
node_visitor -->|"reads"| node_public_case_studies
node_visitor -->|"views"| node_public_events
node_visitor -->|"submits"| node_contact_form
node_visitor -->|"comments"| node_comments_ui
node_admin_user -->|"manages"| node_admin_dashboard
node_admin_user -->|"edits"| node_admin_content
node_admin_user -->|"manages"| node_admin_entertainment
node_admin_user -->|"manages"| node_admin_users
node_api_case -->|"calls"| node_case_controller
node_case_controller -->|"calls"| node_case_service
node_api_contact -->|"verifies token"| node_captcha
node_api_contact -->|"calls"| node_contact_controller
node_api_comment -->|"calls"| node_comment_controller
node_api_offerings -->|"calls"| node_offering_controller
node_api_categories -->|"calls"| node_category_controller
node_api_users -->|"calls"| node_user_controller

click node_public_home "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(pages)/page.tsx"
click node_public_mobile "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(subpages)/(Mobile-bars)/bar/page.tsx"
click node_public_entertainment "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(pages)/entertainment/page.tsx"
click node_public_case_studies "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(subpages)/(About)/case-studies/page.tsx"
click node_public_events "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(pages)/events/page.tsx"
click node_contact_form "https://github.com/lakshit-poojari/greenhill-events/blob/main/components/public/ContactForm.tsx"
click node_comments_ui "https://github.com/lakshit-poojari/greenhill-events/blob/main/components/public/Comments.tsx"
click node_admin_dashboard "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(admin)/controlpanel/(dashboard)/dashboard/page.tsx"
click node_admin_content "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(admin)/controlpanel/(dashboard)/case-studies/page.tsx"
click node_admin_entertainment "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(admin)/controlpanel/(dashboard)/entertainment/page.tsx"
click node_admin_users "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(admin)/controlpanel/(dashboard)/users/page.tsx"
click node_api_case "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/caseStudy/route.ts"
click node_api_contact "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/contactEmail/route.ts"
click node_api_comment "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/comment/route.ts"
click node_api_offerings "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/offerings/route.ts"
click node_api_categories "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/categories/route.ts"
click node_api_users "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/users/route.ts"
click node_api_auth "https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/auth/login/route.ts"
click node_case_controller "https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/caseStudyController.ts"
click node_contact_controller "https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/contactController.ts"
click node_comment_controller "https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/commentsController.ts"
click node_offering_controller "https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/offeringController.ts"
click node_category_controller "https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/categoryController.ts"
click node_user_controller "https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/userController.ts"
click node_case_service "https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/services/caseStudiesService.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_home,node_public_mobile,node_public_entertainment,node_public_case_studies,node_public_events,node_contact_form,node_comments_ui,node_admin_user toneBlue
class node_admin_dashboard,node_admin_content,node_admin_entertainment,node_admin_users toneAmber
class node_api_case,node_api_contact,node_api_comment,node_api_offerings,node_api_categories,node_api_users,node_api_auth toneMint
class node_case_controller,node_contact_controller,node_comment_controller,node_offering_controller,node_category_controller,node_user_controller,node_case_service toneRose
class node_visitor,node_captcha toneIndigo
```

## Components

### Public website

- [Home](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(pages)/page.tsx): `app/(public)/(pages)/page.tsx`
- [Mobile bars](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(subpages)/(Mobile-bars)/bar/page.tsx): `app/(public)/(subpages)/(Mobile-bars)/bar/page.tsx`
- [Entertainment](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(pages)/entertainment/page.tsx): `app/(public)/(pages)/entertainment/page.tsx`
- [Case studies](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(subpages)/(About)/case-studies/page.tsx): `app/(public)/(subpages)/(About)/case-studies/page.tsx`
- [Events](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(public)/(pages)/events/page.tsx): `app/(public)/(pages)/events/page.tsx`
- [Contact form](https://github.com/lakshit-poojari/greenhill-events/blob/main/components/public/ContactForm.tsx): `components/public/ContactForm.tsx`
- [Comments](https://github.com/lakshit-poojari/greenhill-events/blob/main/components/public/Comments.tsx): `components/public/Comments.tsx`

### Admin CMS

- [Admin dashboard](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(admin)/controlpanel/(dashboard)/dashboard/page.tsx): `app/(admin)/controlpanel/(dashboard)/dashboard/page.tsx`
- [Content management](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(admin)/controlpanel/(dashboard)/case-studies/page.tsx): `app/(admin)/controlpanel/(dashboard)/case-studies/page.tsx`
- [Entertainment management](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(admin)/controlpanel/(dashboard)/entertainment/page.tsx): `app/(admin)/controlpanel/(dashboard)/entertainment/page.tsx`
- [User management](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/(admin)/controlpanel/(dashboard)/users/page.tsx): `app/(admin)/controlpanel/(dashboard)/users/page.tsx`

### API routes

- [Case study API](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/caseStudy/route.ts): `app/api/caseStudy/route.ts`
- [Contact API](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/contactEmail/route.ts): `app/api/contactEmail/route.ts`
- [Comment API](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/comment/route.ts): `app/api/comment/route.ts`
- [Offerings API](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/offerings/route.ts): `app/api/offerings/route.ts`
- [Categories API](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/categories/route.ts): `app/api/categories/route.ts`
- [Users API](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/users/route.ts): `app/api/users/route.ts`
- [Authentication API](https://github.com/lakshit-poojari/greenhill-events/blob/main/app/api/auth/login/route.ts): `app/api/auth/login/route.ts`

### Domain services

- [Case study controller](https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/caseStudyController.ts): `backend/controllers/caseStudyController.ts`
- [Contact controller](https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/contactController.ts): `backend/controllers/contactController.ts`
- [Comments controller](https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/commentsController.ts): `backend/controllers/commentsController.ts`
- [Offering controller](https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/offeringController.ts): `backend/controllers/offeringController.ts`
- [Category controller](https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/categoryController.ts): `backend/controllers/categoryController.ts`
- [User controller](https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/controllers/userController.ts): `backend/controllers/userController.ts`
- [Case study service](https://github.com/lakshit-poojari/greenhill-events/blob/main/backend/services/caseStudiesService.ts): `backend/services/caseStudiesService.ts`

### Other components

- **Visitor**
- **Admin user**
- **Google reCAPTCHA**

## Connections

- Visitor → Home: browses
- Visitor → Mobile bars: explores
- Visitor → Entertainment: explores
- Visitor → Case studies: reads
- Visitor → Events: views
- Visitor → Contact form: submits
- Visitor → Comments: comments
- Admin user → Admin dashboard: manages
- Admin user → Content management: edits
- Admin user → Entertainment management: manages
- Admin user → User management: manages
- Case study API → Case study controller: calls
- Case study controller → Case study service: calls
- Contact API → Google reCAPTCHA: verifies token
- Contact API → Contact controller: calls
- Comment API → Comments controller: calls
- Offerings API → Offering controller: calls
- Categories API → Category controller: calls
- Users API → User controller: calls
