How chatok-jnr/bitenow works
BiteNow is a multi-role food-delivery platform: customers discover food, manage carts and place orders; restaurant owners manage listings and orders; riders handle delivery; administrators oversee approvals and operations. Three frontends use a shared Express API, with MongoDB-backed domain records and Socket.IO for real-time capabilities. The README documents broader features such as payments, maps, email and media storage; where implementation wiring is not shown, those links are omitted or left unverified.
Main entry points: app.js REST API · models MongoDB records · authRoutes.js Auth routes · orderController.js Order lifecycle
Components 25
User applications
- Customer app
frontend/src/pages/customer - Owner portal
frontend/src/pages/RestaurantOwner - Rider app
frontend/src/pages/rider - Admin dashboard
admin/src/pages
API and identity
- REST API
backend/app.js - Auth routes
backend/routes/authRoutes.js - Authentication
backend/controllers/authController.js - Access control
backend/middleware/authMiddleware.js - Admin operations
backend/controllers/adminController.js
Delivery domains
- Restaurant catalog
backend/controllers/restaurantController.js - Food menu
backend/controllers/foodController.js - Cart management
backend/models/cartModel.js - Order lifecycle
backend/controllers/orderController.js - Owner operations
backend/controllers/restaurantOwnerController.js - Rider operations
backend/controllers/riderController.js - Location services
backend/services/locationServices.js
Data and integrations
- Live updates
backend/services/socketService.js - Media storage
backend/utils/cloudinary.js - Email notifications
backend/utils/sendEmail.js - MongoDB records
backend/models - Socket.IO server
backend/configuration/socket.js
Other components
- Customers, owners, riders
- Administrators
- Cloudinary
- Email provider
Connections 34
- Customers, owners, riders → Customer app: browse and order
- Customers, owners, riders → Owner portal: manage restaurants
- Customers, owners, riders → Rider app: deliver orders
- Administrators → Admin dashboard: administer platform
- Customer app → REST API: use REST API
- Owner portal → REST API: use REST API
- Rider app → REST API: use REST API
- Admin dashboard → REST API: use REST API
- REST API → Auth routes: mounts routes
backend/app.js - Auth routes → Authentication: dispatches auth
backend/routes/authRoutes.js - Auth routes → Authentication: handles OAuth callback
backend/routes/authRoutes.js - Authentication → MongoDB records: reads and writes accounts
backend/controllers/authController.js - Auth routes → Access control: uses access control
- REST API → Admin operations: routes admin requests
- REST API → Restaurant catalog: routes catalog requests
- Restaurant catalog → MongoDB records: reads and writes
backend/controllers/restaurantController.js - Restaurant catalog → Media storage: uploads media
backend/controllers/restaurantController.js - REST API → Food menu: routes menu requests
- REST API → Cart management: routes cart requests
- REST API → Order lifecycle: routes order requests
- Order lifecycle → MongoDB records: reads and writes
backend/controllers/orderController.js - REST API → Owner operations: routes owner requests
- Owner operations → MongoDB records: reads and writes
backend/controllers/restaurantOwnerController.js - Owner operations → Media storage: uploads media
backend/controllers/restaurantOwnerController.js - REST API → Rider operations: routes rider requests
- Rider operations → MongoDB records: reads and writes
backend/controllers/riderController.js - Rider operations → Media storage: uploads media
backend/controllers/riderController.js - Admin operations → MongoDB records: reads and writes
backend/controllers/adminController.js - Order lifecycle → Live updates: not verified
- Live updates → Socket.IO server: uses socket server
backend/services/socketService.js - Order lifecycle → Location services: location workflow
- Authentication → Email notifications: email workflow
backend/controllers/authController.js - Media storage → Cloudinary: stores media
- Email notifications → Email provider: sends messages