NutriDeliver is a complete solution for a healthy food delivery ecosystem, supporting customers, restaurants, delivery riders, and administrators. The platform enables users to browse nutritious meals, place orders, manage carts, and track deliveries in real time. Restaurants can manage menus, orders, and analytics, while riders handle deliveries with live location updates and earnings tracking. The system includes secure authentication, payment processing, notifications, offers, and full platform oversight for admins—all built with a scalable, modular, and secure architecture.
Launch → Login/Register → Browse → Add to Cart → Checkout → Track → Rate
- Login Screen - Email/Password + Social login
- Registration Screen - Customer details collection
- OTP Verification - Email/Phone verification
- Forgot Password - Reset password flow
- Home Screen - Featured restaurants, categories, search bar
- Restaurant List Screen - Filterable list (rating, dietary, distance)
- Restaurant Detail Screen - Info, rating, menu categories
- Menu Screen - Food items with dietary tags (vegetarian, keto, etc.)
- Food Detail Screen - Full nutritional info, ingredients, preparation time
- Search Screen - Advanced filters (dietary needs, price range, calories)
- Cart Screen - Items with total, restaurant-specific cart
- Checkout Screen - Address selection, payment method, order summary
- Payment Screen - Stripe integration, card details
- Order Confirmation - Order ID, estimated time
- Live Tracking Screen - Map view, rider location, ETA
- Order History Screen - Past orders with status
- Order Detail Screen - Full order breakdown, reorder option
- Profile Screen - Personal info, dietary preferences
- Address Management - Saved addresses
- Favorites Screen - Saved restaurants/items
- Notifications Screen - Push + in-app notifications
- Support/Help Center
POST /api/auth/customer/loginPOST /api/auth/customer/registerPOST /api/auth/refresh-tokenPOST /api/auth/logout
GET /api/restaurants(with pagination, filters)GET /api/restaurants/:idGET /api/categories(healthy food categorization)GET /api/foods(filter by restaurant/category)GET /api/foods/:id(with nutritional metadata)
POST /api/cart/add(restaurant-specific cart)GET /api/cartDELETE /api/cart/item/:idPOST /api/orders/createGET /api/orders(customer's orders)GET /api/orders/:idGET /api/orders/:id/track(real-time tracking)POST /api/orders/:id/cancel
POST /api/payments/create-intent(Stripe)POST /api/payments/confirm
PUT /api/customers/profileGET /api/customers/addressesPOST /api/customers/addressesGET /api/customers/favoritesPOST /api/restaurants/:id/favorite
GET /api/notificationsPUT /api/notifications/:id/read
POST /api/orders/:id/rate(rate restaurant/rider/food)POST /api/restaurants/:id/review
Login → Dashboard → Manage Menu → Handle Orders → Update Status → View Analytics
- Restaurant Login - Restaurant-specific credentials
- Setup Screen - Initial restaurant configuration
- Main Dashboard - Today's stats, pending orders
- Active Orders Screen - Live orders with status
- Order Detail Screen - Order items, special instructions
- Order History Screen - Past orders with filtering
- Order Status Update - Accept/Ready/Picked up
- Preparation Timer - For each order
- Menu Overview - All categories and items
- Category Management - Add/edit food categories
- Food Item Management - Add/edit with nutritional data
- Inventory Management - Stock levels, availability toggle
- Analytics Dashboard - Sales, popular items, peak hours
- Earnings Screen - Daily/weekly/monthly earnings
- Restaurant Profile - Operating hours, description, images
- Notification Center - New orders, system alerts
- Support/Help
POST /api/auth/restaurant/loginGET /api/auth/restaurant/profile
GET /api/restaurant/orders(filter by status)GET /api/restaurant/orders/:idPUT /api/orders/:id/status(accept → preparing → ready)POST /api/orders/:id/preparation-time
GET /api/restaurant/menuPOST /api/restaurant/menu/categoriesPOST /api/restaurant/menu/itemsPUT /api/restaurant/menu/items/:idDELETE /api/restaurant/menu/items/:idPUT /api/restaurant/menu/availability(toggle items)
GET /api/restaurant/analytics/dailyGET /api/restaurant/analytics/weeklyGET /api/restaurant/earningsGET /api/restaurant/popular-items
PUT /api/restaurant/profilePOST /api/restaurant/upload-image(Cloudinary)PUT /api/restaurant/operating-hours
GET /api/restaurant/notificationsWS /restaurant-orders(WebSocket for real-time orders)
Login → Go Online → Receive Orders → Accept → Navigate → Pickup → Deliver → Confirm
- Rider Login - Rider-specific credentials
- Document Upload - Initial setup (vehicle docs, license)
- Rider Dashboard - Current status, earnings summary
- Available Orders Screen - List of nearby orders
- Order Detail Screen - Pickup/delivery addresses, customer notes
- Navigation Screen - Integrated maps to location
- Order Actions Screen - Pickup confirm, delivery confirm
- Active Delivery Screen - Current order with customer contact
- Earnings Dashboard - Today's/week's earnings
- Earnings History - Detailed breakdown per order
- Performance Metrics - Ratings, on-time deliveries
- Payouts Screen - Payment history, next payout
- Rider Profile - Personal info, vehicle details
- Availability Toggle - Go online/offline
- Documents Screen - Uploaded docs status
- Support/Chat - Contact admin/support
POST /api/auth/rider/loginPOST /api/auth/rider/register(with document upload)
GET /api/rider/available-ordersPOST /api/orders/:id/acceptPOST /api/orders/:id/rejectPOST /api/orders/:id/picked-upPOST /api/orders/:id/deliveredGET /api/rider/current-order
POST /api/rider/location/update(real-time location)POST /api/rider/availability(toggle online/offline)GET /api/orders/:id/tracking-info(customer details)
GET /api/rider/earnings/todayGET /api/rider/earnings/historyGET /api/rider/performanceGET /api/rider/payouts
GET /api/rider/profilePUT /api/rider/profilePOST /api/rider/documents(upload)GET /api/rider/documents/status
WS /rider-orders(WebSocket for new orders)POST /api/notifications/rider-push(push notifications)
Login → Dashboard → Manage Users → Monitor Orders → Handle Verification → View Analytics
- Admin Dashboard - Platform overview, KPI cards, charts
- Users Overview - All users (customers/restaurants/riders)
- User Detail Screen - Full profile, activity, orders
- User Verification - Approve/reject restaurants & riders
- Restaurants List - All restaurants with status
- Restaurant Detail - Full info, documents, menu
- Restaurant Approval - Verify documents, approve listing
- All Orders - Filterable orders table
- Order Intervention - Cancel/refund/problem resolution
- Riders List - All riders with status
- Rider Verification - Document approval
- Rider Performance - Ratings, completion rate
- Categories Management - Food categories
- Offers/Promotions - Create/edit platform-wide offers
- System Settings - Platform config, fees, commission
- Content Management - Homepage banners, notifications
- Financial Reports - Revenue, commissions, payouts
- Platform Analytics - User growth, order trends
- Export Data - Generate reports
- Support Tickets - Customer/restaurant issues
- System Logs - API logs, error monitoring
GET /api/admin/dashboard/statsGET /api/admin/dashboard/analytics
GET /api/admin/users(all roles)GET /api/admin/users/:idPUT /api/admin/users/:id/status(suspend/activate)DELETE /api/admin/users/:id
GET /api/admin/restaurantsGET /api/admin/restaurants/:idPOST /api/admin/restaurants/:id/verifyPUT /api/admin/restaurants/:id/commission
GET /api/admin/ridersGET /api/admin/riders/:idPOST /api/admin/riders/:id/verifyPUT /api/admin/riders/:id/status
GET /api/admin/ordersGET /api/admin/orders/:idPOST /api/admin/orders/:id/intervenePOST /api/admin/orders/:id/refund
GET /api/admin/categoriesPOST /api/admin/categoriesGET /api/admin/offersPOST /api/admin/offersPUT /api/admin/settingsGET /api/admin/system/logs
GET /api/admin/reports/financialGET /api/admin/reports/usersGET /api/admin/reports/ordersPOST /api/admin/reports/export
Launch App → Check Token → If valid → Direct to Dashboard
↓ If invalid/expired
Show Login → Credentials → API Call → Store Tokens → Dashboard
Customer: Place Order → Payment → Confirmation → Track → Rate
Restaurant: Receive → Accept → Prepare → Mark Ready
Rider: See Available → Accept → Navigate → Pickup → Deliver → Confirm
Admin: Monitor → Intervene if needed
Event Trigger → Backend Processing → Push Notification → In-App Update
(Order status changes, new orders, payment confirmation, etc.)
- All:
POST /api/auth/login(role-specific) - All:
POST /api/auth/logout - All:
POST /api/auth/refresh-token - All:
GET /api/notifications - Customer/Rider:
POST /api/upload(Cloudinary)
- Customer Only: Cart, Favorites, Order creation
- Restaurant Only: Menu management, Order status updates
- Rider Only: Order acceptance, Location updates
- Admin Only: User management, Platform settings
- Order Status (Customer, Restaurant, Rider, Admin)
- Rider Location (Customer, Admin)
- New Orders (Restaurant, Rider)
- Availability Status (Rider → Customer/Restaurant)
customer-{userId}- Order updatesrestaurant-{restaurantId}- New orders, updatesrider-{riderId}- Order assignmentsadmin- System-wide notifications
Sharing is caring until someone findout...