How punarvasu0311/craveyard works
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: App.tsx Role-based App · RiderDashboard.tsx Rider Dashboard · AppContext.tsx Session and Cart Context · order.ts Order Lifecycle
Components 24
Frontend
- Role-based App
frontend/src/App.tsx - Session and Cart Context
frontend/src/context/AppContext.tsx - Checkout Flow
frontend/src/pages/Checkout.tsx - Rider Dashboard
frontend/src/pages/RiderDashboard.tsx - Socket Context
frontend/src/context/SocketContext.tsx
Identity and Admin
- Authentication
backend/auth/src/controllers/auth.ts - User Records
backend/auth/src/model/User.ts - Platform Admin
backend/admin/src/controllers/admin.ts
Restaurant and Orders
- Restaurant Management
backend/restaurant/src/controllers/restaurant.ts - Cart Management
backend/restaurant/src/controllers/cart.ts - Order Lifecycle
backend/restaurant/src/controllers/order.ts - Order Records
backend/restaurant/src/models/Order.ts - Payment Events
backend/restaurant/src/config/payment.consumer.ts
Rider and Realtime
- Rider Management
backend/rider/src/controllers/rider.ts - Rider Records
backend/rider/src/models/Rider.ts - Live Tracking
backend/realtime/src/socket.ts
Payments and Media
- Payment Processing
backend/utils/src/controllers/payment.ts - Media Uploads
backend/utils/src/routes/cloudinary.ts
Other components
- Customer
- Restaurant Operator
- Rider
- Stripe / Razorpay
- Cloudinary
- RabbitMQ
Connections 24
- Customer → Role-based App: uses
README.md - Restaurant Operator → Role-based App: uses
README.md - Rider → Rider Dashboard: uses
frontend/src/pages/RiderDashboard.tsx - Role-based App → Session and Cart Context: reads session
frontend/src/App.tsx - Role-based App → Checkout Flow: routes to
frontend/src/App.tsx - Session and Cart Context → Authentication: fetches profile
frontend/src/context/AppContext.tsx - Session and Cart Context → Cart Management: fetches cart
frontend/src/context/AppContext.tsx - Checkout Flow → Order Lifecycle: places orders
README.md - Role-based App → Rider Dashboard: routes by role
frontend/src/App.tsx - Rider Dashboard → Rider Management: requests rider data
frontend/src/pages/RiderDashboard.tsx - Rider Dashboard → Socket Context: listens for orders
frontend/src/pages/RiderDashboard.tsx - Socket Context → Live Tracking: opens socket
frontend/src/context/SocketContext.tsx - Authentication → User Records: reads and writes
backend/auth/src/controllers/auth.ts - Restaurant Management → RabbitMQ: publishes order-ready events
README.md - RabbitMQ → Rider Management: dispatches ready orders
README.md - Rider Management → Rider Records: manages rider records
backend/rider/src/controllers/rider.ts - Order Lifecycle → Order Records: persists orders
backend/restaurant/src/controllers/order.ts - Payment Processing → Stripe / Razorpay: charges and verifies
README.md - Payment Processing → RabbitMQ: publishes payment events
README.md - RabbitMQ → Payment Events: delivers payment events
README.md - Payment Events → Order Records: updates payment state
backend/restaurant/src/config/payment.consumer.ts - Media Uploads → Cloudinary: uploads media
README.md - Order Lifecycle → Live Tracking: emits order updates
backend/restaurant/src/controllers/order.ts - Platform Admin → Restaurant Management: oversees platform
README.md