# punarvasu0311/craveyard architecture

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

## Overview

CraveYard is a microservices food-ordering and delivery product. Customers authenticate, browse restaurants, manage carts and addresses, check out, and follow orders; restaurant operators manage menus and order preparation, while riders receive delivery work and update progress. Payments and media are separate utility capabilities, with RabbitMQ and Socket.IO supporting asynchronous events and live updates. The graph combines sampled source relationships with README-documented service capabilities; unsampled implementation details are not inferred beyond those documented links.

Main entry points: [`frontend/src/App.tsx`](https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/App.tsx) (Role-based App), [`frontend/src/pages/RiderDashboard.tsx`](https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/pages/RiderDashboard.tsx) (Rider Dashboard), [`frontend/src/context/AppContext.tsx`](https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/context/AppContext.tsx) (Session and Cart Context), [`backend/restaurant/src/controllers/order.ts`](https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/controllers/order.ts) (Order Lifecycle)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Frontend"]
  node_frontend_app["Role-based App<br/>[App.tsx]"]
  node_app_context["Session and Cart Context<br/>[AppContext.tsx]"]
  node_checkout_ui["Checkout Flow<br/>[Checkout.tsx]"]
  node_rider_dashboard["Rider Dashboard<br/>[RiderDashboard.tsx]"]
  node_socket_client["Socket Context<br/>[SocketContext.tsx]"]
end

subgraph group_identity["Identity and Admin"]
  node_auth_service["Authentication<br/>[auth.ts]"]
  node_user_store[("User Records<br/>[User.ts]")]
  node_admin_service["Platform Admin<br/>[admin.ts]"]
end

subgraph group_food["Restaurant and Orders"]
  node_restaurant_service["Restaurant Management<br/>[restaurant.ts]"]
  node_cart_service["Cart Management<br/>[cart.ts]"]
  node_order_service["Order Lifecycle<br/>[order.ts]"]
  node_order_store[("Order Records<br/>[Order.ts]")]
  node_payment_consumer["Payment Events"]
end

subgraph group_delivery["Rider and Realtime"]
  node_rider_service["Rider Management<br/>[rider.ts]"]
  node_rider_store[("Rider Records<br/>[Rider.ts]")]
  node_realtime_service["Live Tracking<br/>[socket.ts]"]
end

subgraph group_integrations["Payments and Media"]
  node_payment_service["Payment Processing<br/>[payment.ts]"]
  node_media_service["Media Uploads<br/>[cloudinary.ts]"]
end

node_customer(("Customer"))
node_restaurant_operator(("Restaurant Operator"))
node_rider_user(("Rider"))
node_payment_gateway["Stripe / Razorpay"]
node_cloudinary["Cloudinary"]
node_rabbitmq["RabbitMQ"]

node_customer -->|"uses"| node_frontend_app
node_restaurant_operator -->|"uses"| node_frontend_app
node_rider_user -->|"uses"| node_rider_dashboard
node_frontend_app -->|"reads session"| node_app_context
node_frontend_app -->|"routes to"| node_checkout_ui
node_app_context -->|"fetches profile"| node_auth_service
node_app_context -->|"fetches cart"| node_cart_service
node_checkout_ui -.->|"places orders"| node_order_service
node_frontend_app -->|"routes by role"| node_rider_dashboard
node_rider_dashboard -->|"requests rider data"| node_rider_service
node_rider_dashboard -->|"listens for orders"| node_socket_client
node_socket_client -->|"opens socket"| node_realtime_service
node_auth_service -->|"reads and writes"| node_user_store
node_restaurant_service -->|"publishes order-ready events"| node_rabbitmq
node_rabbitmq -->|"dispatches ready orders"| node_rider_service
node_rider_service -->|"manages rider records"| node_rider_store
node_order_service -->|"persists orders"| node_order_store
node_payment_service -->|"charges and verifies"| node_payment_gateway
node_payment_service -->|"publishes payment events"| node_rabbitmq
node_rabbitmq -->|"delivers payment events"| node_payment_consumer
node_payment_consumer -->|"updates payment state"| node_order_store
node_media_service -->|"uploads media"| node_cloudinary
node_order_service -->|"emits order updates"| node_realtime_service
node_admin_service -.->|"oversees platform"| node_restaurant_service

click node_frontend_app "https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/App.tsx"
click node_app_context "https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/context/AppContext.tsx"
click node_checkout_ui "https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/pages/Checkout.tsx"
click node_rider_dashboard "https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/pages/RiderDashboard.tsx"
click node_socket_client "https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/context/SocketContext.tsx"
click node_auth_service "https://github.com/punarvasu0311/craveyard/blob/main/backend/auth/src/controllers/auth.ts"
click node_user_store "https://github.com/punarvasu0311/craveyard/blob/main/backend/auth/src/model/User.ts"
click node_admin_service "https://github.com/punarvasu0311/craveyard/blob/main/backend/admin/src/controllers/admin.ts"
click node_restaurant_service "https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/controllers/restaurant.ts"
click node_cart_service "https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/controllers/cart.ts"
click node_order_service "https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/controllers/order.ts"
click node_order_store "https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/models/Order.ts"
click node_payment_consumer "https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/config/payment.consumer.ts"
click node_rider_service "https://github.com/punarvasu0311/craveyard/blob/main/backend/rider/src/controllers/rider.ts"
click node_rider_store "https://github.com/punarvasu0311/craveyard/blob/main/backend/rider/src/models/Rider.ts"
click node_realtime_service "https://github.com/punarvasu0311/craveyard/blob/main/backend/realtime/src/socket.ts"
click node_payment_service "https://github.com/punarvasu0311/craveyard/blob/main/backend/utils/src/controllers/payment.ts"
click node_media_service "https://github.com/punarvasu0311/craveyard/blob/main/backend/utils/src/routes/cloudinary.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_frontend_app,node_app_context,node_checkout_ui,node_rider_dashboard,node_socket_client toneBlue
class node_auth_service,node_user_store,node_admin_service toneAmber
class node_restaurant_service,node_cart_service,node_order_service,node_order_store,node_payment_consumer toneMint
class node_rider_service,node_rider_store,node_realtime_service toneRose
class node_payment_service,node_media_service,node_customer,node_restaurant_operator,node_rider_user,node_payment_gateway,node_cloudinary,node_rabbitmq toneIndigo
```

## Components

### Frontend

- [Role-based App](https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Session and Cart Context](https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/context/AppContext.tsx): `frontend/src/context/AppContext.tsx`
- [Checkout Flow](https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/pages/Checkout.tsx): `frontend/src/pages/Checkout.tsx`
- [Rider Dashboard](https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/pages/RiderDashboard.tsx): `frontend/src/pages/RiderDashboard.tsx`
- [Socket Context](https://github.com/punarvasu0311/craveyard/blob/main/frontend/src/context/SocketContext.tsx): `frontend/src/context/SocketContext.tsx`

### Identity and Admin

- [Authentication](https://github.com/punarvasu0311/craveyard/blob/main/backend/auth/src/controllers/auth.ts): `backend/auth/src/controllers/auth.ts`
- [User Records](https://github.com/punarvasu0311/craveyard/blob/main/backend/auth/src/model/User.ts): `backend/auth/src/model/User.ts`
- [Platform Admin](https://github.com/punarvasu0311/craveyard/blob/main/backend/admin/src/controllers/admin.ts): `backend/admin/src/controllers/admin.ts`

### Restaurant and Orders

- [Restaurant Management](https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/controllers/restaurant.ts): `backend/restaurant/src/controllers/restaurant.ts`
- [Cart Management](https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/controllers/cart.ts): `backend/restaurant/src/controllers/cart.ts`
- [Order Lifecycle](https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/controllers/order.ts): `backend/restaurant/src/controllers/order.ts`
- [Order Records](https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/models/Order.ts): `backend/restaurant/src/models/Order.ts`
- [Payment Events](https://github.com/punarvasu0311/craveyard/blob/main/backend/restaurant/src/config/payment.consumer.ts): `backend/restaurant/src/config/payment.consumer.ts`

### Rider and Realtime

- [Rider Management](https://github.com/punarvasu0311/craveyard/blob/main/backend/rider/src/controllers/rider.ts): `backend/rider/src/controllers/rider.ts`
- [Rider Records](https://github.com/punarvasu0311/craveyard/blob/main/backend/rider/src/models/Rider.ts): `backend/rider/src/models/Rider.ts`
- [Live Tracking](https://github.com/punarvasu0311/craveyard/blob/main/backend/realtime/src/socket.ts): `backend/realtime/src/socket.ts`

### Payments and Media

- [Payment Processing](https://github.com/punarvasu0311/craveyard/blob/main/backend/utils/src/controllers/payment.ts): `backend/utils/src/controllers/payment.ts`
- [Media Uploads](https://github.com/punarvasu0311/craveyard/blob/main/backend/utils/src/routes/cloudinary.ts): `backend/utils/src/routes/cloudinary.ts`

### Other components

- **Customer**
- **Restaurant Operator**
- **Rider**
- **Stripe / Razorpay**
- **Cloudinary**
- **RabbitMQ**

## Connections

- Customer → Role-based App: uses (evidence: `README.md`)
- Restaurant Operator → Role-based App: uses (evidence: `README.md`)
- Rider → Rider Dashboard: uses (evidence: `frontend/src/pages/RiderDashboard.tsx`)
- Role-based App → Session and Cart Context: reads session (evidence: `frontend/src/App.tsx`)
- Role-based App → Checkout Flow: routes to (evidence: `frontend/src/App.tsx`)
- Session and Cart Context → Authentication: fetches profile (evidence: `frontend/src/context/AppContext.tsx`)
- Session and Cart Context → Cart Management: fetches cart (evidence: `frontend/src/context/AppContext.tsx`)
- Checkout Flow → Order Lifecycle: places orders (evidence: `README.md`)
- Role-based App → Rider Dashboard: routes by role (evidence: `frontend/src/App.tsx`)
- Rider Dashboard → Rider Management: requests rider data (evidence: `frontend/src/pages/RiderDashboard.tsx`)
- Rider Dashboard → Socket Context: listens for orders (evidence: `frontend/src/pages/RiderDashboard.tsx`)
- Socket Context → Live Tracking: opens socket (evidence: `frontend/src/context/SocketContext.tsx`)
- Authentication → User Records: reads and writes (evidence: `backend/auth/src/controllers/auth.ts`)
- Restaurant Management → RabbitMQ: publishes order-ready events (evidence: `README.md`)
- RabbitMQ → Rider Management: dispatches ready orders (evidence: `README.md`)
- Rider Management → Rider Records: manages rider records (evidence: `backend/rider/src/controllers/rider.ts`)
- Order Lifecycle → Order Records: persists orders (evidence: `backend/restaurant/src/controllers/order.ts`)
- Payment Processing → Stripe / Razorpay: charges and verifies (evidence: `README.md`)
- Payment Processing → RabbitMQ: publishes payment events (evidence: `README.md`)
- RabbitMQ → Payment Events: delivers payment events (evidence: `README.md`)
- Payment Events → Order Records: updates payment state (evidence: `backend/restaurant/src/config/payment.consumer.ts`)
- Media Uploads → Cloudinary: uploads media (evidence: `README.md`)
- Order Lifecycle → Live Tracking: emits order updates (evidence: `backend/restaurant/src/controllers/order.ts`)
- Platform Admin → Restaurant Management: oversees platform (evidence: `README.md`)
