Quick Bite Documentation

QuickBite Hyperlocal Marketplace β€” Complete Guide

FieldValue
Document IDQB-FS-CG-4.90
Documentquickbite_hyperlocal_marketplace_complete_guide.md
ClassificationEnterprise β€” Product Β· Business Β· Operations Β· Architecture Β· Governance
ProductQuickBite brand Β· FoodShop plugin suite
PlatformnopCommerce 4.90 / .NET 9 / NopStation
VendorNop-Station / NopStation
Document version2.3 (staging screenshots for admin + public pages outside Figma)
StatusNormative for publishing, onboarding, and operations
DesignFigma web Β· Figma mobile
Spec / testsdocs/foodshop-specifications.md Β· docs/foodshop-test-report.md
Standardsplugins/AGENTS.md, plugins/AGENTS-SHORT.md

Document Control

RoleResponsibility
Product / SolutionsOwns Parts A–B (business & product story) + G6 packaging
Implementation / SupportOwns Part C (configuration & runbooks) + Part F support/admin playbooks + G2/G5
CX / TrainingOwns Part F persona playbooks + G1 visuals
Engineering / ArchitectureOwns Part E + domain invariants in A8 + F7 + G3 API samples
QA / Loop EngineeringAligns Part E test gates with FS_* / FS_TC_* in the enterprise spec
LocalizationOwns G4 i18n checklist

How to Read

  • Customer (end user) β†’ Part F β€” F1
  • Merchant / kitchen β†’ Part F β€” F2
  • Rider (delivery man) β†’ Part F β€” F3
  • Platform admin / ops β†’ Part A β†’ Part C β†’ F4 β†’ Part E
  • Affiliate / referrer β†’ Part F β€” F5
  • Marketing β†’ Part F β€” F6
  • Developer / SRE β†’ Part A β†’ Part B β†’ Part C β†’ Part E β†’ F7
  • Support agent β†’ Part F β€” F8 (+ Part C troubleshooting)
  • Executive / sales β†’ Part A Β· Part B Β· Part E
  • Partner / PM β†’ Part A β†’ Part B β†’ Part E β†’ G6
  • Trainer β†’ G1 Β· Part F
  • Mobile app engineer β†’ G3 Β· Part B Β· F7

Table of Contents

Part A β€” Business Β· Part B β€” Product Β· Part C β€” Configuration Β· Part D β€” Reference Β· Part E β€” Enterprise Β· Part F β€” Persona playbooks Β· Part G β€” Annexes

PartAudience Focus
AEveryone β€” how the marketplace business works
BProduct buyers / architects β€” plugins & features
CImplementers / admins β€” install & configure
DLookup β€” settings, Q&A, glossary
EEnterprise β€” security, NFR, release, RACI
FRole-based "I am a …" how-to
GAnnexes β€” Figma + staging checklists, emails/SMS, API samples, i18n, DR, SOW, changelog
Part A β€” Business

A1. The Marketplace in One Page

QuickBite is a hyperlocal food marketplace:

  • The platform lists many restaurants (merchant warehouses) that serve defined zones.
  • A customer sets an address β†’ sees eligible restaurants β†’ chooses Delivery, Pickup, or Dine-in β†’ orders from one restaurant at a time (warehouse-scoped stock).
  • Checkout is one page (tip + kitchen notes optional); payment via enabled methods (including optional wallet, all-or-nothing).
  • Kitchen accepts and prepares; rider delivers and proves delivery (POD: photo and/or OTP).
  • Platform keeps commission; merchants get payouts; riders get tips; marketing may add deals, cashback, referrals, wallet credit.
  • One sentence: geo decides who can sell; warehouse decides what can be sold; order status decides who is working; commission decides who earns.
QuickBite storefront home page showing serving types, offers and featured restaurants

QuickBite storefront β€” the marketplace as the customer sees it

Money flow diagram between customer, platform, merchant and rider

Money flow

Value-chain overview

QuickBite value-chain overview diagram

Value-chain overview

A2. Personas

PersonaJobSuccessMain Surfaces
CustomerOrder nearby foodArrives; tracking worksMerchants, OPC, Track Order, app
Platform adminRun city marketplaceCoverage filled; take rate; few disputesConfigure + Order dashboard
Merchant / kitchenSell & cookOrders + stock + fair payoutWarehouse, order board, chat
RiderDeliver + tipAssigned orders only; easy PODDeliveryman/orders, tips
DispatcherAssign riders, SLALow Missed; COD reconciledDashboard, Cash collection
GrowthAcquire / retainDeals, referrals, cashback usedPromotions, Shop
DeveloperExtend safelyGeo, warehouse scope, statuses intactFoodShop plugins

A3. How Money Moves

Customer pays (gross)

Food + delivery/pickup/dine-in fees + tax βˆ’ discounts + rider tip (tip is rider economics, not kitchen food commission).

Credit Wallet must cover the full payable amount (no split tender with card).

Platform commission (take rate)

Merchant Commission calculates platform cut vs merchant owed:

ModeMeaning
Catalog ratesProduct/category (merchant overrides); max of categories when multiple
Rule modeFixed/% rules by product or order total
Tax inclusiveOptional; confirm UI on your build

Payout is a separate ops step from calculation. Refunds may not auto-reverse commission unless implemented.

Merchant commission settings admin screen

Merchant commission settings (admin)

Promotions cost margin

LeverEconomic Effect
Refer-and-earn / affiliateAcquisition cost / partner commission
CashbackLiability until redeemed
Cashback β†’ walletSpendable credit (needs Credit Wallet)
Deals / tiers / ribbonsDiscount or points liability
CODCash collection reconciles cash held by rider/merchant β€” ops for money, not commission math.

Example (illustrative)

Food $20 + delivery $2 + tip $3 = $25 paid β†’ ~15% food commission β‰ˆ $3 platform β†’ merchant ~$17 food β†’ rider $3 tip. Exact ledgers to follow your rate tables.

Commission decision flow

Commission decision flow diagram

Commission decision flow

Tip vs food revenue

Tip vs food revenue flow diagram

Tip vs food revenue

A4. Journeys & Serving Types

Serving TypeCustomer PromiseYou Must ConfigureLast Mile
DeliveryFood to my pinCoverage + AllowShipping + rates + riders + PODRider
PickupI collectAllowPickup (+ fee); PickupInStoreCustomer
Dine-inEat on siteAllowDineIn + service charge %On-site

Delivery journey: address β†’ in-coverage restaurants β†’ cart β†’ OPC β†’ track β†’ POD. Pickup: serving type Pickup β†’ pickup point β†’ pay β†’ collect (no rider POD). Mobile: same via Web API (JWT/NST); phone OTP needs Authentication; force-update per OS.

⚠ Warning
Turning on Delivery without riders/POD breaks the promise. Pickup without AllowPickup hides the point.

Geo & serving-type eligibility

Delivery coverage areas admin screen with zone polygons on the map

Delivery coverage areas (admin) β€” zones that decide eligibility

Geo and serving-type eligibility decision diagram

Geo & serving-type eligibility

Merchant onboarding swimlane

Merchant onboarding swimlane diagram

Merchant onboarding swimlane

A5. Order Lifecycle (Kitchen + Rider)

nopCommerce Sales Orders list showing order status ids

Sales β†’ Orders β€” where order statuses show up in admin

StatusIdWhoMeaning
Pending10System/paymentNot ready for kitchen
New11KitchenMust accept
Processing20KitchenCooking
Ready21Kitchen doneReady for pickup/rider
InRoute22RiderOut for delivery
Complete30DoneClosed
Cancelled40StoppedAuto/manual cancel
Missed50FailureNew ignored too long (auto)

Auto-missed: clears stuck New (kitchen SLA).

Auto-cancel clears stale Pending/New. Tune minutes to real kitchen speed (e.g. 15–30 for QSR New; install defaults are 24h/48h).

Order state machine

Order state machine diagram

Order state machine

A6. Business Rules & Daily Ops

Non‑negotiable rules

  • One restaurant context per cart (warehouse-scoped inventory).
  • Delivery visibility = coverage ∩ active warehouse ∩ delivery flags.
  • Pickup may bypass delivery coverage when Allow Pickup.
  • Wallet all-or-nothing.
  • Tip β‰  kitchen commission.
  • POD is a trusting policy (Photo / OTP / Both).
  • Commission β‰  payout.
  • Don't assume refund reverses commission.
  • Merchants don't edit global take rates (typical ACL).
  • Riders see only assigned orders.

Ops day

WhenDoWhy
MorningMaps/coverage/Active WH; riders availableLunch readiness
MorningDashboard Pending/NewStuck overnight
RushAssign riders at ReadyETA
RushWatch Missed/CancelledSLA/staffing
AfternoonCOD cash collection; payouts if paydayTrust/finance
EveningDeals/slidersGrowth
WeeklyLucene rebuild; review timers; wallet liabilitiesHealth

Healthy marketplace: zone always has β‰₯1 open restaurant; Newβ†’ Ready within SLA; high Complete; COD matches; merchants paid on schedule.

Merchant day

Active warehouse + stock → New→ Processing→ Ready → Pickup handoff or wait for rider → chat → own payout lines (not global rates).

A7. Admin vs Developer Ownership

DecisionOwner
Zones, restaurants, Active, feesAdmin
Take rate, payout schedule, POD, SLA minutesAdmin / finance / ops
Theme, homepage, dealsAdmin / marketing
Payment gatewaysAdmin (+ dev for new gateways)
Multi-restaurant cart, new serving type, refund-commission automationDeveloper (product change)
JWT secrets, force-update, Redis LuceneMobile / SRE / admin

Rule: Configure screen or warehouse form β†’ admin. New behavior or invariant break β†’ developer.

A8. Developer Domain Map & Invariants

Business ContextPluginThink
Restaurants & geoMerchantsMerchant Warehouse, coverage, Customer Location, shipping
CheckoutOPCOne page, tip/notes attributes
FulfillmentOrderManagementStatuses, riders, OTP/POD, cash, SignalR
Take rate / tipsMerchant CommissionRates/rules, tips, payouts
GrowthPromotionsAffiliate, referral, cashback, deals, tiers
Store creditCredit WalletBalance, invoices, payment method
MerchandisingShop + ThemeSliders, ribbons, colors
Nav / PDPSmart Mega Menu, Quick ViewMenu, modal
SearchLuceneIndex docs
MobileWeb ApiREST, JWT
Pickup pointsPickup InstorePickupPointProvider

Business asks β†’ Start in

Business AskStart In
Hidden outside zoneMerchants' coverage / serving filters
Cross-restaurant cartMerchants warehouse scoping
Tip on checkoutOPC attributes
Auto MissedOM auto-miss task
Rider OTPOM POD + SMS/email
12% on burgersCommission rates/rules
Cashback β†’ walletPromotions soft helper β†’ Credit Wallet
Force app updateWeb Api OS flags
Search typosLucene fuzzy/contains + rebuild

Hard Deps: Merchants Hub; Commission→ OM; Shop→ Promotions; Web Api last (Auth, Shop, OM, Menu, OPC). Soft: Promotions→ CreditWallet (must not crash if wallet is missing).

Invariants (do not break)

  • Status Ids 10–50; Ready/In Route survives core Check Order Status (spec Β§6.8).
  • No silent cross-warehouse cart merge.
  • Don't "fix" empty Delivery lists by ignoring geo.
  • OPC refreshes shipping/payment only for listed address fields.
  • Buy Now β‰  Bypass cart (independent).
  • No invented wallet split tender.
  • Pickup hours display β‰  enforce unless you build enforcement.
  • Document commission precedence; don't invent refund reverses.
  • JWT/NST when enabled; OTP needs Authentication.
  • Follow plugins/AGENTS.md.
  • Multi-store overrides; no cross-store location leaks.
  • GDPR: Purge Food Shop PII on customer delete (wallet, chat, favorites, location, subscribers, referrals).
Part B β€” Product
nopCommerce Catalog Products list

Catalog β†’ Products β€” the catalog behind the marketplace

B1. Product Positioning & Why QuickBite

DimensionValue
CategoryHyperlocal multi-merchant food / QSR marketplace
HostnopCommerce 4.90 (multi-store capable)
SurfacesFood Shop theme web + Web API mobile
HubMerchants (inventory, geo, serving types)
DeliveryOwn fleet ops (OTP, POD, cash, SignalR)
MonetizationCommission, tips, affiliate/cashback/deals

Who buys it: city marketplace operators, multi-restaurant brands, white-label agencies, mobile teams needing API parity.

Why: hyperlocal primitives first-class; modular plugins; ops stack included; web + mobile one backend; nopCommerce ecosystem; Quick Bite Figma-aligned UX.

Tech: net9.0; Repository/linq2db; Fluent Migrator; SignalR; Lucene (+ optional Redis); Authentication for app OTP.

B2. Plugin Inventory & Features

Mega menu settings admin screen

A plugin Configure card (Mega menu) β€” every plugin follows this shape

#Friendly NameSystem NameRole
1Merchant InventoryFoodShop.MerchantsHub β€” warehouses, coverage, inventory, shipping rates
2Order ManagementFoodShop.OrderManagementLifecycle, riders, OTP/POD, cash, SignalR
3Merchant CommissionFoodShop.Merchant CommissionTake rate, payouts, tips
4One Page CheckoutFoodShop.OpcSingle-page checkout, tip, notes
5Shop ConfigurationFoodShop.ShopConfigurationSliders, carousels, tabs, ribbons, campaigns
6PromotionsFoodShop.PromotionsAffiliate, refer, cashback, deals, tiers
7NopChatFoodShop.NopChatMulti-role chat
8Smart Mega MenuFoodShop.Smart Mega MenuCuisine/brand/merchant menu
9Quick ViewFoodShop.QuickViewProduct modal
10FoodShop ThemeTheme.FoodShopColors, header/footer, CSS
11Web APIMisc.FoodShop.WebApiMobile REST + JWT
12Lucene SearchSearch.FoodShop.LuceneIndexed search
13Credit PaymentPayments.FoodShop.CreditWalletStore-credit payment
14Pickup In StoreNop.Plugin.Pickup.FoodShop.PickupInStorePickup points from warehouses

Also needed: NopStation.Core; Authentication (app OTP); WidgetManager (mega menu). Shipping: live rates in Merchants (IShippingRateComputationMethod). FixedByWeightByTotal is review-only under plugins/code review/.

Feature Summary

  • Discovery: coverage, cuisines/brands, favorites, reviews, Lucene, mega menu, quick view
  • Checkout: OPC, tip/notes, Buy Now / bypass cart, pickup points, wallet
  • Ops: status board, riders, POD, cash, auto-miss/cancel, SignalR, track order
  • Commerce: commission, payouts, tips, affiliates, cashback, deals, tiers, shop widgets
  • UX/mobile: Theme, chat, Web API, WebP/image resize

Plugin dependencies diagram

Plugin dependency diagram

Plugin dependencies

B3. How Each Role Uses the Product

  • Customer (web): location β†’ /merchants β†’ shop β†’ OPC β†’ track β†’ optional wallet/deals/chat.
  • Customer (app): appstart / JWT β†’ same flows; respect force-update.
  • Merchant: own warehouse/stock/orders/ribbons; not global rates.
  • Rider: /deliveryman/orders β†’ POD β†’ cash β†’ /deliveryman/tips β†’ chat.
  • Platform admin: install β†’ maps/coverage/WH β†’ OPC/OM β†’ riders β†’ Theme/Shop β†’ optional commission/promos/Lucene/API β†’ smoke tests.

B4. Architecture Diagrams

API prefixes: api/home, merchants, catalog, product, shoppingcart, checkout, order, customer, deal, chat.

System context / sequences

System context diagram

System context

Delivery order sequence diagram

Sequence β€” delivery order

Pickup order sequence diagram

Sequence β€” pickup order

Order lifecycle sequence diagram across customer, kitchen, rider and ops

Sequence β€” order lifecycle (customer / kitchen / rider / ops)

Real-time (SignalR)

SignalR hub topology diagram

Real-time (SignalR)

Security zones

Security zones diagram

Security zones

B5. Roles, Permissions, Limits

nopCommerce Customer roles list including Merchants and DeliveryMan

Customer roles β€” Merchants and DeliveryMan drive the permission model

RoleAccess
Platform AdminAll Configure, warehouses, commission, OM, WebApi, Lucene
MerchantOwn WH/products/orders/ribbons
Delivery manAssigned orders, tips, chat, location
AffiliatePublic affiliate info only
CustomerOwn wallet/orders/chat

Permission keys live in each plugin's *PermissionProvider (e.g., ManageWarehouses, ManageOrders, ManageNopStationMerchantCommissionConfiguration). NopChat has no dedicated PermissionProvider.

Unsupported / Do Not Promise

TopicStatus
Split tender (partial wallet + other PM)Unsupported
Pickup opening-hours hard blockNot guaranteed
Standalone FixedByWeightByTotal shipping packageReview-only; use Merchants rates
Silent commission reverse on every refundUnsupported until implemented
Part C β€” Configuration & Operations

Menu convention: most items under NopStation; Theme under Themes. Multi-store: use store scope + override checkboxes where shown.

C1. Prerequisites & Install Order

Local plugins admin screen with Nop-Station Core plugin

Configuration β†’ Local plugins β€” install starts here

Need: nopCommerce 4.90 admin; NopStation.Core; FoodShop packages; Maps key; working email; optional SMS, Redis, Authentication, WidgetManager.

Install via Configuration β†’ Local plugins in this order:

StepPlugin
0Core β†’ Authentication (if app OTP) β†’ WidgetManager (if mega menu)
1Merchants
2Promotions, Lucene, Pickup, NopChat, OPC, OrderManagement
3Merchant Commission
4Shop Configuration
5Smart Mega Menu
6Theme, QuickView, CreditWallet
7WebApi last

After install: confirm ACL permissions; Theme sets store theme to FoodShop; sample assets seed on Install only (not Update).

Uninstall notes: localization/tasks removed; confirm table retention; OPC should clean auto tip/notes attributes; don't leave dependents if Merchants disabled.

C2. Day-Zero Go-Live

#ActionDone When
1Install Β§C1 orderNo install errors
2Merchants: Maps key + default address in coverageMap works
3Coverage area + delivery groupSaved
4Warehouse Active + lat/lng + AllowShipping (+ Pickup if needed)Listed
5Map products to warehouse stockβ‰₯1 SKU
6OPC: enable + tip/notes UIChecked
7OM: POD + OTP email (tune minutes for QSR)Saved
8Delivery man verified + availableCan open /deliveryman/orders
9Theme + Shop slider/carousel; Mega menu on, hide defaultStorefront OK
10Optional: commission rates, promos, wallet, Lucene rebuild, WebApi JWTAs needed
11Smoke Delivery + PickupOrders complete

C3. Configure Merchants & Warehouses

Warehouse list admin screen with restaurant warehouses

Warehouse list β€” one warehouse per restaurant

Menu: NopStation β†’ Warehouses β†’ Configuration (/Admin/Warehouse/Configure). Also: Warehouses list, Delivery coverage, Delivery group, Cuisines, Brands, Review questions.

Install defaults to replace

EnableDefaultMerchant/Address true; sample NYC address; DistanceToAddNewAddress 100; discount filtering on; list grid 12,24,48. For multi-merchant production: often turn default merchant off; set real city center.

First save

  • Google Maps API key (Places + Maps JS).
  • Default merchant on/off + Default warehouse.
  • Default address via Places/map.
  • Dine-in %; keep discount filtering on; WebP ~80.
  • Optional: Map custom address attributes (Customer settings β†’ Address form fields).

Coverage

Delivery coverage areas admin screen with zone polygons on the map

Delivery coverage areas β€” draw zones, then assign to a delivery group

States/cities/areas if required β†’ Delivery coverage list β†’ Delivery group β†’ assign to warehouse (groups typically exclusive to one WH).

Warehouse fields (must-get-right)

Active, Name, lat/lng, address, AllowShipping + ShippingRate, AllowPickup + PickupFee, AllowDineIn + %, Serving option, Coverage group, pictures, SEO. Then map stock + cuisines/brands.

Common mistakes

  • Invalid Maps key
  • Attributes not mapped
  • Inactive WH / no coverage
  • AllowPickup off
  • Default merchant on without DefaultWarehouse
  • WebpQuality outside 1–100

C4. Configure OPC, Orders, Pickup

FoodShop One Page Checkout settings admin screen

FoodShop OPC settings

OPC β€” NopStation β†’ Foodshop OPC (/Admin/FoodshopOpc/Configure)

Install creates: Tip your rider (10/20/50/100, default 20) + Notes to Restaurant (max 500); OPC + bypass cart + panels + tip/notes UI on. Re-check attribute IDs after reinstall.

Minimum: Enable OPC; show editable cart; show attributes; tip + notes UI; discount/GC as needed. Tip is for delivery carts. Address field lists control when shipping/payment methods refresh β€” unlisted fields do not refresh.

Order Management β€” NopStation β†’ Order management

nopCommerce Sales Orders list with export and view actions

Sales β†’ Orders β€” the list the dashboard works from

Configure: /Admin/OrderStatusDashboard/Configure Β· Dashboard: …/Dashboard

Install defaults: auto-miss 1440m on; auto-cancel 2880m on; POD required; mode OTP only; OTP 4; email on; SMS off.

Production: choose Photo / OTP / Both; OTP 4–10; email and/or SMS (+ ActiveSMSPluginSystemName); tune SLA; enable location history cleanup in prod.

Delivery man: customer account β†’ Delivery Man form (merchant, area, phone, KYC pics, Verified, Available) β†’ /deliveryman/orders.

Daily board: New β†’ Processing β†’ Ready β†’ assign rider β†’ In Route β†’ POD β†’ Complete; COD β†’ Cash Collection.

Pickup

No plugin Configure page. Warehouse AllowPickup (+ fee). Serving type Pickup β†’ point appears only if AllowPickup. Hours may display without blocking checkout.

C5. Configure Commission, Promos, UX, Search, API

Promotions Discounts list admin screen

Promotions β†’ Discounts

Merchant commission settings admin screen with Enable plugin and commission rules

Merchant commission β€” Configure card

Commission β€” NopStation β†’ Merchant commission

Configure card mainly: Enable plugin + Use commission rules. Rates on Rule/Category/Product screens. Enable Plugin defaults true; daily payout task registered. Rules mode with no published rules β‡’ commission 0. Tips need OPC tip UI; riders see /deliveryman/tips.

Theme β€” Themes β†’ FoodShop

FoodShop theme settings admin screen showing the colour palette

FoodShop theme settings

Theme = FoodShop; brand colors; phone/social; sticky/lazy; hide core homepage blocks if Shop widgets replace them; header shortcuts; footer boxes/logo/cards.

Shop β€” NopStation β†’ Shop

Install: carousel/slider/tabs/campaign/CSS/ribbons on; flipbook off. Create slider + carousel/tab; ribbon caches (discount cache short); image resize 1920/768. CRUD: sliders, carousels, tabs, flipbooks, ribbons, subscribers.

Smart Mega Menu / Quick View / Chat

Mega menu settings admin screen with enable and hide default menu options

Mega menu settings

Mega menu on + hide default menu; picture size 300. Quick View: enable food-relevant sections; picture zoom needs Picture Zoom plugin. Chat: logo + weekday open flags.

Promotions & Wallet

Refer-and-earn, affiliate defaults, cashback, wallet transfer (only CreditWallet), tiers, banners/deals β€” promos cost margin. Activate payment method Credit Payment; show credit on checkout; max invoices; test full wallet pay only.

Lucene

FoodShop Lucene search settings admin screen

FoodShop Lucene search settings

Writable Index Directory; fuzzy (distance 1) + contains; Exact boost highest; multi-instance + Redis only on farms; rebuild after catalog import.

Web API (last)

Strong secrets; Enable JWT (NST header); token lifetime; Show change base URL = Off in prod; home rails + theme colors; Android/iOS versions & force flags independent; GDPR delete account if needed. App OTP needs Authentication.

C6. Users, Verify, Troubleshoot

Merchant user: Customers β†’ Merchants role β†’ link warehouse. Rider: customer + Delivery Man Verified/Available. ACL: grant Administrators FoodShop manage permissions (warehouses, orders, commission, OPC, Shop, Promotions, Theme, WebApi, Lucene, etc.).

Verify

Delivery: in-coverage address → cart → OPC pay → New→ Ready→ rider→ POD→ Complete (+ commission). Pickup: Pickup serving → AllowPickup Point → Pay → merchant fulfill. Negatives: out of coverage; empty cart; low wallet; wrong OTP; other rider's order denied.

Sign-off checklist: Maps; β‰₯1 Active WH+stock+coverage; OPC tip/notes; POD; β‰₯1 rider; Theme/Shop; Lucene; optional wallet/API; multi-store if used.

Troubleshooting

SymptomFix
No restaurantsCoverage, Active WH, location, serving type
No products on shopMap warehouse inventory
Old multi-step checkoutEnable OPC
Tip/notes missingEnable UI; remap attributes
Shipping methods staleAdd field to update lists
Rider stuckPOD mode; OTP channel; phone
SMS silentSMS plugin + system name
Commission 0Enable plugin; add rates/rules
Cashback→ wallet failsInstall CreditWallet or disable transfer
Search emptyRebuild; IndexDirectory permissions
API 401 / OTP failJWT/NST; install Authentication
Force-update loopAlign version strings
Double menuHide default menu
Shop menus emptyGrant permissions; fill carousel IDs

Admin Menu Map

AreaPath
MerchantsNopStation β†’ Warehouses
OrdersNopStation β†’ Order management
CommissionNopStation β†’ Merchant commission
OPCNopStation β†’ Foodshop OPC
Shop / Promos / Menu / QV / Lucene / API / Wallet / ChatNopStation β†’ …
ThemeThemes β†’ FoodShop

Configure URLs

PluginURL
MerchantsAdmin/Warehouse/Configure
OMAdmin/OrderStatusDashboard/Configure
CommissionAdmin/Merchant Commission/Configure
OPCAdmin/FoodshopOpc/Configure
ShopAdmin/Shop/Configure
PromotionsAdmin/FoodShopPromotions/Configure
NopChatAdmin/FoodShopNopChatAdmin/Configure
Mega MenuAdmin/SmartMegaMenu/Configure
QuickViewAdmin/FoodShopQuickView/Configure
ThemeAdmin/FoodShop/Configure
WebApiAdmin/WebApi/Configure
LuceneAdmin/FoodShopLuceneSearch/Configure
WalletAdmin/CreditWallet/Configure
Pickup(none)
Part D β€” Reference

D1. Settings Reference (All Plugins)

Each row: setting β€” admin hint / use. Suggested values noted where critical.

Merchants (MerchantSettings + discount admin fields)

SettingHint / Use
EnableDefaultMerchantIf on, show default merchant when no location; if off, require location first β€” off for multi-merchant
DefaultWarehouseIdDefault warehouse when default merchant on
GoogleMapsApiKeyMaps/Places API key
DistanceToAddNewAddressMin distance before new cart address (default 100)
EnableLoggingLog WH/coverage/group changes
DineInServiceChargePercentageExtra % for dine-in (WH can override)
AddressDetails / Location URL custom attribute IDsFrom Customer address custom attributes
EnableMerchantDiscountFilteringWarehouse-based discount filter β€” on
AllowMerchantsToCreateDiscounts / ShowWarehouseInDiscountList / AutoAssociateDiscountsWithWarehouseDiscount admin UX
EnableDefaultAddress + DefaultAddress + Lat/LngLookup WH when customer has no location
AllowMerchantSorting / ViewModeChanging / DefaultMerchantListViewModeList UX (grid)
Page size options / defaulte.g., 12, 24, 48 / 12
EnableWebpConversion / WebpQualityWebP (1–100, default 80)
Cuisine/Brand/Category Desktop/Mobile widthsResize targets

OrderManagement (OrderStatusDashboardSettings)

SettingHint / Use
EnableAutoMissedStatus / AutoMissedStatusTimeInMinutesAuto Missed for aged New (default 1440)
EnableAutoCancelOrder / AutoCancelOrderTimeInMinutesAuto cancel Pending/New (default 2880)
EnableLocationHistoryCleanup / LocationHistoryRetentionDaysPurge GPS history (default 7 days)
ProofOfDeliveryRequiredRequire POD
DeliveryProofMode0 Photo / 1 OTP / 2 Both
OtpLength4–10
SendOtpViaSms / ActiveSMSPluginSystemName / SendOtpViaEmailOTP channels

Merchant Commission

SettingHint / Use
Enable PluginMaster switch
UseCommissionRulesRule engine vs catalog precedence
EnableTaxInclusiveCommissionCalculationTax-inclusive base (may be off Configure card)
ActivePayoutMethodSystemNamesEnabled payout methods
UseScheduleTask / PaymentPeriodId / PaymentMethodIdScheduled payouts where UI exposes

Precedence (rules off): MerchantProduct β†’ Product β†’ max(MerchantCategory) β†’ max(Category).

OPC (FoodshopOpcSettings)

SettingHint / Use
EnableOnePageCheckoutUse /order/checkout
BypassShoppingCartPage / EnableBuyNowButtonIndependent shortcuts
ShowShoppingCart / Discount / GiftCard / Attributes / Review / EstimateShippingOPC panels
IsShoppingCartEditableQty edit on checkout
EnableRiderTipUI + RiderTipCheckoutAttributeIdTip (delivery)
EnableNotesToRestaurantUI + Notes attribute IdKitchen notes
Preselect previous billing/shipping / ship-to-same / default countriesAddress UX
SaveOnChangeFields / UpdateShippingMethods / UpdatePaymentMethods*Which field changes save address or refresh methods

Shop (ShopSettings)

EnableOCarousel / Slider / ProductTabs / FlipBook / ShopCampaign / ShopCustomCss; FlipbookDefaultPageSize; MerchantRibbon (+ dynamic, auto-sync, intervals/caches); MinimumReviewsToShowRating (default 3); EnableAutoImageResize; SliderDesktop/Mobile widths (1920/768).

Promotions (FoodShopPromotionsSettings)

Affiliate defaults (amount/%); ReferAndEarnEnabled + reward + max orders (0=unlimited); cashback HistoryPageSize / MinimumBalanceToDisplay / MinimumGiftcardAllowed; EnableCashBackToWalletTransfer + MinimalWalletTransferAmount; announcement/deal banner fields; Bronze→ Platinum thresholds and points rates.

NopChat / MegaMenu / QuickView

FoodShop NopChat configuration admin screen with logo and weekday flags

FoodShop NopChat configuration

Chat Logo + OpenOnMonday…Sunday. MegaMenu Enable + HideDefaultMenu + MenuItemPictureSize. QuickView toggles for related/also-purchased/zoom/descriptions/buttons/reviews/manufacturers/availability/delivery/specs/tags.

Theme (FoodShopSettings)

FoodShop theme settings admin screen showing the colour palette

FoodShop theme settings

Color palette; Phone/Instagram/Pinterest; login box; lazy load; sticky header; hide review/buttons; CustomCss; footer contact/logo/cards; hide homepage bestsellers/categories/products; Header menu one/two; Footer description boxes 1–4.

WebApi (WebApiSettings)

EnableJwtSecurity; SecretKey/TokenKey/TokenSecret; CheckIat; TokenSecondsValid; home slider/featured/bestsellers/category/manufacturer rails; price text sizes; Android/iOS version + force + store URLs; Logo; ShowChangeBaseUrlPanel (off prod); theme/gradient colors; ProductBarcodeScanKeyId; AllowCustomersToDeleteAccount.

Lucene (FoodShopLuceneSearchSettings)

IndexDirectory; Fuzzy/Contains/Exact boosts + distances; MultiInstance + Redis*; Search Fields; Delimiters/regex; MaxSearchResults; SignalRKeepAliveMinutes.

CreditWallet

ShowAvailableCreditOnCheckoutPage; ShowInvoicesInCustomerWalletPage; MaxInvoicesToShowInCustomerWalletPage.

Pickup

No ISettings. Warehouse AllowPickup, PickupFee, address/geo/hours.

D2. Q&A

  • Quick Bite vs FoodShop? Brand/Figma vs plugin suite.
  • MVP plugins? Core + Merchants + OPC + OM + Theme (+ Pickup if needed).
  • Multi-store? Yes β€” use overrides; isolate location/cart.
  • No restaurants? Coverage, Active WH, location, serving type.
  • Two restaurants in one cart? Not supported by design.
  • Split wallet + card? No.
  • Pickup hours block checkout? Not guaranteed.
  • Missed vs Cancelled? Missed = New SLA fail; Cancelled = stopped/unpaid paths.
  • Commission choice? Catalog precedence or UseCommissionRules.
  • Cashback needs wallet? Only for transfer-to-wallet.
  • API OTP fails? Needs Authentication plugin.
  • Android force not iOS? Independent flags.
  • Search on farm? Enable Lucene multi-instance + Redis.
  • Customer delete? Purge FoodShop PII (verify per plugin).

D3. Glossary, Routes, Tables, Widgets

Glossary

TermAdminDeveloper
RestaurantSelling locationMerchantWarehouse
ZoneDelivery areaCoverage / delivery group
BoardKitchen screenOrder Status Dashboard + SignalR
RiderDelivery personDeliveryMan
Take ratePlatform cutCommission calc
PODProof deliveredPhoto/OTP records
OPCOne-page checkoutFoodShop OPC plugin
Soft dependencyOptional integrationMust not crash if missing
HyperlocalGeo-limited marketplaceCoverage-scoped discovery

Public Routes

RoutePlugin
/merchants, /merchant_shop/{SeName}, /favoritesMerchants
/order/checkoutOPC
/deliveryman/orders, TrackOrderOM
/deliveryman/tipsCommission
/refer-and-earn, /cashback/*, /deal/{id}, …Promotions
/deliveryman/chatNopChat
/wallet/detailsCreditWallet
api/*WebApi
Merchant/product searchLucene

Representative NS_* Tables

  • Merchants: NS_MerchantWarehouse, coverage/group, cuisine/brand, reviews, favorites…
  • OM: NS_DeliveryMan*, NS_OrderOtp, NS_DeliveryProof, cash…
  • Commission: product/category/rule commissions, NS_MerchantOrderInfo, payouts, NS_RiderTip*…
  • Shop / Promotions / Chat / MegaMenu / WebApi / Lucene / Wallet: see enterprise spec & migrations.
  • OPC / Theme / QuickView / Pickup: mostly settings-driven.

Widget Zones (High Level)

Merchants (account/order/header/address); OM (account/order); OPC (product/footer); Shop (widgetZones.json, ribbons); Promotions (announcement body-start); Chat footer; MegaMenu via WidgetManager; Theme header/footer; Wallet checkout/account.

Schedule Tasks

OM auto miss/cancel + location cleanup; Merchants sync; Lucene rebuild; Commission payout (daily).

D4. Related Docs

DocPath
This complete guidedocs/quickbite_hyperlocal_marketplace_complete_guide.md
Enterprise specifications (FS_* test catalog)docs/foodshop-specifications.md
Test reportdocs/foodshop-test-report.md
Sample install data plandocs/foodshop-install-sample-data-plan.md
Staging screenshotsdocs/_staging_screenshots/ (from foodshop.nop-station.site)
Coding standardsplugins/AGENTS.md, plugins/AGENTS-SHORT.md
Unit / Playwright testsplugins/src/Tests/NopStation.Plugin.FoodShop.*

Former split guides (redirect stubs only): quickbite_business_and_domain_guide.md, quickbite_hyperlocal_marketplace_product_publishing.md, quickbite_hyperlocal_marketplace_configuration_handbook.md.

Part E β€” Enterprise Governance

E1. Capability Model & Maturity

LevelCapabilitiesTypical Plugins
L1 CoreGeo discovery, one-WH cart, checkout, themeCore, Merchants, OPC, Theme, Pickup optional
L2 OpsBoard, riders, POD, cash, auto-miss/cancel+ OrderManagement
L3 Monetize & growTake rate, tips payout, deals, cashback+ Commission, Promotions, CreditWallet
L4 Scale channelsMobile parity, search farm, chat, merchandising+ WebApi, Lucene(+Redis), NopChat, Shop, MegaMenu, QuickView

Use this model in SOWs: sell L1+L2 for launch city; add L3/L4 by phase.

Capability maturity model diagram

Capability maturity

E2. Deployment Topologies

Single-node (pilot / single city)

Single-node deployment topology diagram

Single-node (pilot / single city)

Multi-node farm (enterprise)

Multi-node web farm deployment topology diagram

Multi-node farm (enterprise)

Farm requirements: sticky sessions or SignalR backplane as per hosting; Lucene EnableMultiInstanceMode + Redis; durable IndexDirectory; shared secrets for WebApi JWT; store-scoped settings reviewed per node.

Environment Strategy

EnvPurposeDataForce-update / JWT panel
DevFeature buildSample seed OKBase URL panel may be on
StagingUAT / partner demoAnonymized or syntheticProd-like JWT; force-update off
ProductionLive cityLive PIIJWT on; change-base-URL off; secrets vaulted

E3. Non-Functional Requirements (NFR)

Aligned with foodshop-specifications.md:

IDCategoryRequirementEvidence
NFR-01PerformanceMerchant list P95 < 3s (warm)Perf / Playwright
NFR-02PerformanceLucene search P95 < 2sPerf
NFR-03PerformanceOPC confirm P95 < 5sPerf
NFR-04SecurityAdmin/API/rider isolation; JWT on protected APIFS_SEC_*
NFR-05ReliabilitySignalR reconnect; idempotent wallet opsE2E / review
NFR-06ObservabilityPlugin logging toggles; no PII in E2E artifactsProcess
NFR-07CompatibilitynopCommerce 4.90 / net9.0Build
NFR-08Standardsplugins/AGENTS.mdCode review
NFR-09Multi-storeOverrides isolate settings/dataFS multi-store
NFR-10GDPRCustomers delete purges FoodShop PIIFS_GDPR_*
NFR-11i18nLocale resources; second languageFS_I18N_*
NFR-12DesignQuickBite Figma parity (web/mobile)FS_UI_*
Performance targets diagram

Performance targets

E4. Security & Trust Architecture

ControlImplementation
Admin ACLFoodShop *PermissionProvider / ConfigManager
Merchant isolationOwn warehouse/orders only
Rider isolationAssigned orders only
APIEnableJwtSecurity + NST header; rotate secrets
OTPEmail/SMS; length 4–10; requires phone for SMS
PODPhoto and/or OTP before Complete
WalletFull amount only; concurrent spend must be safe
AppIndependent Android/iOS force-update
LoggingEnable Merchants logging in stabilize phase; scrub PII in artifacts
Threat and control mapping diagram

Threat controls

E5. GDPR / PII Map

On customer delete, verify purge or documented retention for:

DataPlugin
Wallet, activity, invoicesCreditWallet
Chat messagesNopChat
FavoritesMerchants
CustomerLocationMerchants
Shop subscribersShopConfiguration
Referral / affiliate mappingsPromotions
Delivery-man linkOrderManagement
App consent flagsWebApi + Authentication

WebApi AllowCustomersToDeleteAccount must align with Authentication consent flows.

GDPR customer delete fan-out diagram

GDPR delete

E6. Multi-Store Enterprise Pattern

Checklist: OPC/Theme/Chat/WebApi/Commission overrides reviewed per store; catalogs isolated; Maps key may be shared or per-store; WebApi theme colors per brand store.

Multi-store enterprise pattern diagram

Multi-store enterprise pattern

E7. KPIs & SLA Catalog (Ops)

KPIDefinitionTypical Target (tune per city)
Coverage fill% of peak-hour sessions with β‰₯1 restaurantβ‰₯ 95%
Accept timeNew β†’ Processing median< kitchen SLA (e.g., 5–10 min)
Ready timeNew β†’ Ready medianPer cuisine class
Missed rateMissed / New< 2%
Delivery Complete rateComplete / Delivery ordersβ‰₯ 97%
POD successCompleted with valid POD when required~100% when POD on
COD reconciliation lagCash collected vs dueSame day
Commission accuracySampled order calc vs contract100% of samples
Search usefulnessTop query has β‰₯1 resultβ‰₯ 90%
App crash / force-update false positiveIncorrect force0

Map timers: AutoMissed / AutoCancel minutes must match Accept-time KPI.

E8. RACI (Enterprise Roles)

ActivityPlatform AdminMerchantRiderOps/DispatchDev/SREMarketing
Coverage & WH createA/RCICII
Menu/stockCA/RIIII
OPC / Theme / ShopA/RIIICC
Assign rider / POD policyACRRII
Commission ratesA/RIIICI
Deals / refer-and-earnACIIIR
WebApi JWT / RedisAIIIRI
Incident (checkout down)AIICRI

R = Responsible, A = Accountable, C = Consulted, I = Informed.

E9. Release & Go-Live Gates

Mandatory before production

  • Install order verified; Merchants hub healthy.
  • Maps + β‰₯1 Active WH with stock + coverage.
  • Delivery E2E with POD; Pickup E2E if offered.
  • Rider isolation + admin ACL spot-check.
  • Commission sample calc signed by finance (if L3).
  • Lucene rebuild; WebApi JWT secrets not default; change-base-URL off.
  • GDPR delete path tested on staging.
  • Rollback plan: disable OPC flag / theme / payment method as emergency levers.
  • Support runbook (Β§E10) published.
  • P0 FS_TC_* Pass or Blocked+Bug ID in test report.

Normative test IDs and packs: docs/foodshop-specifications.md Β§Β§8–9.

Release and go-live gate pipeline diagram

Release gates

E10. Support Runbooks (Short)

SeverityExampleFirst Actions
Sev-1Checkout 500 / no ordersCheck site health, OPC enable, payment methods, logs; disable Buy Now/bypass if needed
Sev-1Empty /merchants city-wideMaps key, default address, coverage, WH Active
Sev-2Riders cannot completePOD mode, OTP email/SMS, phone on order
Sev-2Commission 0 on paydayEnablePlugin, rates/rules, schedule task
Sev-3Search staleRebuild Lucene; Redis sync on farm
Sev-3App force-update loopAlign version strings / force flags

Escalation: L1 Support (handbook Part C) β†’ L2 Implementer (settings) β†’ L3 Engineering (spec + AGENTS).

E11. Integration Landscape

IntegrationRequired ForFailure Mode
MapsAddress UXAutocomplete blank
SMTPOTP email, order mailOTP email silent
SMS pluginOTP SMSSilent OTP if misconfigured
AuthenticationApp phone OTPGraceful fail on SendOtp
RedisLucene multi-nodeStale search across nodes
Payment methodsCheckoutCannot confirm
Integration landscape diagram

Integration landscape

E12. Data & Domain ER (Conceptual)

Conceptual entity relationship diagram

Conceptual ER

E13. Wallet & Promotions Cashflow

Wallet and promotions cashflow sequence diagram

Wallet & promotions cashflow

E14. Lucene Multi-Instance

Lucene multi-instance Redis sync sequence diagram

Lucene multi-instance (Redis sync)

E15. Diagram Gallery Index

DiagramLocation
Money flowA1
Value chainA1
Commission decisionA3
Tip vs foodA3
Geo eligibilityA4
Merchant onboardingA4
Order state machineA5
Plugin dependenciesB2
System context / sequencesB4
SignalR / security zonesB4
Capability maturityE1
Single vs farm deployE2
Perf targetsE3
Threat controlsE4
GDPR deleteE5
Multi-storeE6
Release gatesE9
IntegrationsE11
Conceptual ERE12
Wallet sequenceE13
Lucene Redis syncE14

E16. Change Management

Change TypeProcess
Settings / contentAdmin change + UAT checklist; no code release
Plugin version upgradeStaging install order β†’ migrate β†’ FS_TC P0 β†’ prod
Contract take-rate changeFinance sign-off β†’ Commission rates β†’ sample orders
Breaking APIBump Android/iOS version + force-update with store URLs
Spec / AC changeUpdate foodshop-specifications.md + test report
Part F β€” Persona Playbooks ("I am a…")

Use this part as training / onboarding. Each section: who you are β†’ what you can do β†’ step-by-step β†’ FAQ β†’ training checklist.

Persona ecosystem diagram grouping demand side, platform and supply side roles

Persona ecosystem β€” demand side, platform, supply side

F1. Customer Playbook

Who You Are

You order food from nearby restaurants on the website or mobile app. You do not use the admin panel.

What You Can Do

GoalWhere
Set delivery locationHome / location picker (Maps)
Browse restaurants/merchants
Open a restaurant menu/merchant_shop/{SeName}
Favorite restaurants/favorites (+ heart toggle)
SearchStore search / Lucene-powered search
CheckoutOne-page checkout /order/checkout
Tip rider / note to kitchenOn checkout (Delivery tip; notes always when enabled)
Pay with walletCheckout + /wallet/details
Track orderOrder details β†’ Track Order
Refer friends/refer-and-earn (when enabled / approved)
Cashback/cashback/history (+ transfer to wallet if enabled)
View deals/deal/{id} Β· announcement banners
ChatChat widget on merchant pages (when open hours)
ReviewsAfter orders β€” my merchant reviews

Delivery Order (Step-by-Step)

Customer delivery order flow diagram from address to proof of delivery

Customer delivery order flow

  1. Open the store β†’ set your address / pin (must be in a delivery zone).
  2. Choose serving type Delivery.
  3. Open /merchants β†’ pick a restaurant β†’ add items (you order from one restaurant at a time).
  4. Go to checkout β†’ confirm address β†’ choose payment β†’ optional tip and notes to restaurant.
  5. Place order β†’ watch status (accepted β†’ cooking β†’ on the way).
  6. When the rider arrives, share OTP or allow photo proof if the platform requires it.
  7. Optional: favorite the restaurant, leave a review, check cashback.

Pickup Order

  1. Choose Pickup.
  2. Select a restaurant that allows pickup.
  3. Checkout selects the restaurant as the pickup point.
  4. Pay β†’ go to the restaurant β†’ collect (no rider).

Mobile App Notes

  • App may require update (force-update).
  • Sign-in may use phone OTP.
  • Same flows as web via FoodShop API.

Customer FAQ

QuestionAnswer
Why don't I see restaurants?Address outside delivery zone, or try Pickup.
Why can't I mix two restaurants?Each cart is one restaurant's kitchen.
Why did wallet payment fail?Wallet must cover the full total (no partial wallet + card).
Where is my OTP?Email and/or SMS β€” check spam; tell rider the code.
Can I chat?When chat is open that weekday and you're logged in on a merchant page.

Training Checklist (Customer Success / UAT)

  • Place Delivery order end-to-end
  • Place Pickup order
  • Tip appears on Delivery checkout
  • Track Order updates
  • Favorites add/remove
  • Wallet pay (if enabled)
  • Refer / cashback pages open (if enabled)

F2. Merchant / Kitchen Playbook

Who You Are

You run a restaurant (warehouse) on the marketplace. You use the admin site with the Merchants role β€” usually only at your restaurant.

What You Can Do (Typical)

CanCannot (Platform Admin Only)
Edit own warehouse (hours, fees, Active, AllowPickup/Shipping/DineIn)Global Configuration Merchants (Maps key, defaults)
Coverage / delivery groups for own scopeCreate global cuisines / review questions
Manage own products / stockGlobal commission rates/rules
Order Status Dashboard (accept, process, ready, assign rider)Order Management Configure (POD/SLA timers)
Delivery men (if permitted)Promotions platform config / create all deals
Cash collection for own ordersProcess all pending payouts marketplace-wide
Own ribbon / shop widgets (carousel, slider, tabs)Full merchant ribbon admin for all restaurants
Participate in dealsAffiliate admin
View order commission / rider payout lists (scoped)Change take-rate % for the whole platform
Chat with customers (APIs/widget)NopChat admin configure

Kitchen Board Flow

Kitchen board flow diagram from New to handover

Kitchen board flow

  1. Sign in to admin β†’ Order status dashboard.
  2. When New appears β†’ accept β†’ Processing while cooking.
  3. Mark Ready when bag is packed.
  4. Delivery: ensure a rider is assigned (you or dispatcher).
  5. Pickup: give the order to the customer when they arrive.
  6. Keep stock updated; wrong stock = customer complaints.
  7. Answer chat if a customer asks about the order.
  8. Check payout / commission lines for your orders (not global %).

Merchant FAQ

QuestionAnswer
Customers don't see meAsk platform: Active? Coverage? AllowShipping/Pickup? In zone?
Order went MissedYou didn't accept New in time β€” contact ops to tune SLA.
Why is my payout less than order total?Platform commission + tips go to riders, not kitchen.
Can I change the 15% take rate?No β€” platform admin sets rates.

Training Checklist

  • Login as merchant β†’ see only own WH
  • Update hours / AllowPickup
  • Move a test order New β†’ Ready
  • Assign or see rider
  • Update one product stock
  • Open deal participation (if used)

F3. Rider Playbook

Who You Are

You are a delivery man. You use the public store (not full admin) after the platform links your customer account as a delivery man (Verified + Available).

Screens

ScreenURL / Action
My orders/deliveryman/orders
Order detail/deliveryman/orders/{orderId}
Complete with photoUpload proof
Complete with OTPEnter customer OTP
Tips/deliveryman/tips
Chat/deliveryman/chat
Availability / locationToggle availability; location sharing / GPS APIs

Delivery Run (Step-by-Step)

Rider delivery run flow diagram including POD modes

Rider delivery run

  1. Log in β†’ set Available.
  2. Open /deliveryman/orders β€” you only see your assignments.
  3. Go to restaurant when order is Ready β†’ pick up.
  4. Navigate to customer; keep location sharing on if required.
  5. Complete with photo and/or OTP (as configured). Wrong OTP = rejected.
  6. Check /deliveryman/tips for tip history.
  7. Use /deliveryman/chat if customer/merchant messages you.

Note: Recording COD cash into Cash collection is typically done by admin/merchant, not on the rider public menu.

Rider FAQ

QuestionAnswer
Empty order listNot assigned / not Verified / not Available.
Cannot completePOD required β€” photo or OTP missing.
Don't see other riders' jobsBy design (security).

Training Checklist

  • Verified + Available
  • Complete one OTP delivery
  • Complete one photo delivery (if mode allows)
  • Tips page loads
  • Cannot open another rider's order

F4. Platform Admin / Dispatcher Playbook

Who You Are

You own the marketplace: zones, restaurants, settings, take rates, riders, SLA, theme, apps.

Daily Ops (Dispatcher)

  • Morning: Maps OK, key WH Active, riders Available.
  • Watch the Order status dashboard for new backlog.
  • Assign riders when Ready.
  • Chase Missed/Cancelled spikes β†’ tune timers or staffing.
  • Afternoon: COD Cash collection reconciles.
  • Payday: commission / payout queues.

Setup (First Time)

Follow Part C (install β†’ day-zero β†’ Merchants β†’ OPC β†’ OM β†’ Theme). Enterprise gates: Part E release checklist.

Admin FAQ

See Part D Q&A and Part C for troubleshooting.

Training Checklist

  • Day-zero path complete
  • Create WH + coverage + stock
  • Create rider
  • Delivery + Pickup smoke tests
  • POD email OTP works
  • ACL: merchant cannot open commission Configure

F5. Affiliate / Refer-and-Earn Playbook

Who You Are

You drive traffic and may earn affiliate / referral rewards.

GoalURL
Apply / affiliate info/affiliate-info
Refer-and-earn (approved)/refer-and-earn
Share link / codeAs shown on refer page

Platform admin manages affiliates and commissions in FoodShop Promotions admin. Note: An /affiliatedorder/history route may exist in routing; confirm the Orders action is implemented in your build before promising order-history UI.

Affiliate FAQ

QuestionAnswer
Can't open refer-and-earnNeed approved/active affiliate (or feature off).
When do I earn?Per promotions rules (first-order friend reward; max orders for commission).

F6. Marketing Playbook

Who You Are

You run growth: banners, deals, cashback, refer program, homepage merchandising β€” without changing geo/take-rate engineering.

LeverWhere to Configure
Announcement / deals bannersFoodShop Promotions + Announcement Banner
DealsDeals admin; merchants participate
Refer-and-earnPromotions Configure
Cashback rulesCashback admin
Homepage sliders/carouselsShop Configuration
Header shortcuts / themeFoodShop Theme
Ribbons ("free delivery")Shop merchant ribbons

Remember: every promo costs margin β€” agree funding with finance (Part A money).

Training Checklist

  • Publish one deal + banner
  • Refer-and-earn amounts set
  • Homepage slider live
  • Cashbackβ†’wallet only if CreditWallet installed

F7. Developer Quick Start

Who You Are

You change FoodShop plugins safely under nopCommerce 4.90 / AGENTS standards.

  • Read A8 invariants β€” do not break warehouse scope, coverage, status Ids, wallet split, soft deps.
  • Map feature β†’ plugin (A8 table).
  • Follow plugins/AGENTS.md (no EF, thin controllers, FluentMigrator, permissions).
  • Install order Part C; never reverse hard dependencies.
  • Add/adjust FS_* cases in foodshop-specifications.md; evidence in test report.
  • Unit: dotnet test …FoodShop.Tests Β· E2E: Playwright project.
  • UI changes: QuickBite Figma + Figma MCP.
  • Farm search: Lucene multi-instance + Redis (Part E).
Developer workflow diagram from feature request to release gate

Developer workflow β€” feature request to release gate

F8. Support Playbook

Who You Are

You help customers, merchants, and riders. You change settings only with admin rights; you escalate code bugs to engineering.

CallerFirst QuestionsLikely Fix Area
Customer β€” no restaurantsAddress? Serving type?Coverage / Active WH
Customer β€” checkout old UIβ€”Enable OPC
Customer β€” wallet failedFull balance?All-or-nothing wallet
Merchant β€” Missed ordersAccept time?SLA timers / staffing
Merchant β€” invisibleActive? Coverage?Merchants config
Rider β€” can't completePhotos/OTP?POD mode / SMS-email
Rider β€” empty listAssigned? Available? Verified?Delivery man record

Severity table: Part E10. Config deep-dive: Part C.

Support Training Checklist

  • Reproduce customer "no restaurants" with map
  • Know Missed vs Cancelled
  • Know tip β‰  merchant payout
  • Escalate Sev-1 using E10

F9. Persona β†’ Document Map (Quick)

PersonaMust-Read Sections
CustomerF1 Β· A4 Β· A5 (status meanings)
MerchantF2 Β· A5 Β· A6 merchant day
RiderF3 Β· A5
Admin / OpsF4 Β· Part C Β· Part E
AffiliateF5 Β· A3 promotions
MarketingF6 Β· A3 Β· C5 promos/shop
DeveloperF7 Β· A8 Β· B2 Β· E
SupportF8 Β· C6 Β· D2 Β· E10
Sales / ExecA1–A3 Β· B1 Β· E1 Β· E7

F10. Cross-Persona Communication Diagram

When chat is enabled, Customer ↔ Merchant ↔ Rider ↔ Admin can message on open weekdays (customer widget) or /deliveryman/chat (rider).

Cross-persona communication sequence diagram

Cross-persona communication

Part G β€” Annexes (Recommended Extras)

G1. Visual Training (Figma + Staging)

Design Mockups (Customer UX)

Persona / ScreenSurfaceFigma
Customer home / browseWebQuickBite web (892:2312)
Customer mobileMobileQuickBite mobile (0:1)
Merchant shop / cardsWeb+MobileSame file β€” search frames for restaurant / menu
Checkout / trackingWeb+MobileSame file β€” checkout & order status frames

Trainers: open Figma for browse β†’ cart β†’ checkout; side-by-side with Part F. UI QA: Figma MCP + FS_UI_*.

Live Staging (Admin + Public Not in Mockup)

Source: https://foodshop.nop-station.site/. Optional capture folder: docs/_staging_screenshots/ (add images yourself β€” do not embed in this doc). Regenerate helper: plugins/src/Tests/NopStation.Plugin.FoodShop.E2E/scripts/capture-staging-screenshots.mjs.

Public Storefront β€” Capture Checklist

ScreenPathSuggested File
Theme homepage/01-home.png
Restaurant list/merchants02-merchants.png
Merchant shop/merchant_shop/{SeName}12-merchant-shop.png
Favorites/Favorites03-favorites.png
Login (email β†’ Continue β†’ password)/login04-login.png
Cart/cart05-cart.png
Search/search06-search.png

Auth-gated (need customer/rider session): /wallet/details, /cashback/history, /refer-and-earn, /deliveryman/orders (07–11).

Admin (Not in Figma) β€” Capture Checklist

ScreenPathSuggested File
Admin dashboard/Admina01-admin-dashboard.png
Warehouses list/Admin/Warehouse/Lista02-warehouse-list.png
Merchants / Warehouse configure/Admin/Warehouse/Configurea03-warehouse-configure.png
Order status dashboard/Admin/OrderStatusDashboard/Dashboarda04-order-status-dashboard.png
OM configure/Admin/OrderStatusDashboard/Configurea05-om-configure.png
One Page Checkout/Admin/FoodshopOpc/Configurea06-opc-configure.png
Merchant Commission/Admin/MerchantCommission/Configurea07-commission-configure.png
Shop Configuration/Admin/Shop/Configurea08-shop-configure.png
Promotions/Admin/FoodShopPromotions/Configurea09-promotions-configure.png
NopChat/Admin/FoodShopNopChatAdmin/Configurea10-nopchat-configure.png
Smart Mega Menu/Admin/SmartMegaMenu/Configurea11-megamenu-configure.png
Quick View/Admin/FoodShopQuickView/Configurea12-quickview-configure.png
FoodShop Theme/Admin/FoodShop/Configurea13-theme-configure.png
Web API/Admin/WebApi/Configurea14-webapi-configure.png
Lucene Search/Admin/FoodShopLuceneSearch/Configurea15-lucene-configure.png
Credit Wallet/Admin/CreditWallet/Configurea16-wallet-configure.png
Plugins list/Admin/Plugin/Lista17-plugins-list.png
Orders list/Admin/Order/Lista18-orders-list.png
Customers/Admin/Customer/Lista19-customers-list.png
Message templates/Admin/MessageTemplate/Lista20-message-templates.png

Notes from Staging

  • Staging login is multi-step (Email β†’ Continue β†’ Password β†’ Continue); /Admin/Login is not used (404 theme page).
  • FoodShop admin menus live under Nop Station β†’ Plugins.
  • Order Status Dashboard cards: New / In Progress / Delivered / Missed.
  • OPC shows Enable rider tip UI + Enable notes to restaurant UI.
  • Sample merchant shop: warehouse-1-new-york (Burger Express) β€” catalog may still include demo non-food SKUs.

G2. Email / SMS Message Templates

FoodShop-Installed Email Templates (Order Management)

System NameSubject (default)When SentKey Tokens
Dashboard.OrderStatusUpdate.NotificationYour order has been %Order.Status%Status changes (missed/cancel notes, etc.)%Order.Status%, %Order.OrderNote%, %Order.OrderNumber%, %Order.OrderURLForCustomer%, billing/shipping tokens, %Order.Product(s)%
Dashboard.OrderOtp.NotificationYour Delivery OTP Code - Order %Order.OrderNumber%OTP generated for POD%Order.OtpCode%, %Order.CustomerFullName%, %Order.OrderNumber%

Admin path: Configuration β†’ Email accounts (SMTP) Β· Content management β†’ Message templates β†’ search Dashboard.Order.

SMS OTP

  • Not a nopCommerce message template β€” sent via Active SMS plugin (ActiveSMSPluginSystemName) when Send OTP via SMS is on.
  • Requires customer/order phone.
  • Test: place Delivery order β†’ trigger OTP β†’ check SMS gateway logs.

Other Notifications

ChannelSourceNotes
Shop campaign emailsShopConfiguration subscriber campaignsMerchant/admin compose; uses workflow mail
Core order placed / paidnopCommerce built-in templatesStill apply alongside FoodShop
ChatSignalR real-timeNot email by default

Ops checklist: SMTP works β†’ both Dashboard templates Active β†’ OTP email received β†’ (optional) SMS plugin configured.

G3. Mobile API Samples (JWT / NST)

When Enable JWT security is on, protected APIs expect header NST = JWT string signed with TokenSecret, containing claim NST_KEY = configured TokenKey. Optional iat claim validated against TokenSecondsValid when Check Iat is on.

Generate a Sample NST Token (Node Example)

// npm i jsonwebtoken
const jwt = require('jsonwebtoken');
const tokenSecret = process.env.FOODSHOP_TOKEN_SECRET; // WebApi TokenSecret
const tokenKey   = process.env.FOODSHOP_TOKEN_KEY;     // WebApi TokenKey
const nst = jwt.sign(
  { NST_KEY: tokenKey, iat: Math.floor(Date.now() / 1000) },
  tokenSecret,
  { algorithm: 'HS256' } // match JwtHelper used by the plugin
);
console.log(nst);

(Confirm algorithm with your JwtHelper implementation if HS256 fails.)

Sample Calls

POST /api/appstart HTTP/1.1
Host: your-store.example
Content-Type: application/json
NST: {paste-jwt-here}
DeviceId: {stable-device-guid}

{
  "Data": {
    "AppVersion": "1.0.0",
    "SubscriptionId": ""
  }
}
GET /api/merchants HTTP/1.1
Host: your-store.example
NST: {paste-jwt-here}
DeviceId: {stable-device-guid}
# Bash sketch (set env vars first)
curl -s -X POST "https://your-store.example/api/appstart" \
  -H "Content-Type: application/json" \
  -H "NST: $NST" \
  -H "DeviceId: $DEVICE_ID" \
  -d '{"Data":{"AppVersion":"1.0.0"}}'

Common failures: 401 β†’ missing/invalid NST, wrong TokenKey/Secret, expired iat, or JWT security on while client sends none. Phone OTP endpoints need Authentication plugin.

Prefixes: api/appstart, api/home, api/merchants, api/catalog, api/product, api/shoppingcart, api/checkout, api/order, api/customer, api/deal, api/chat, …

G4. i18n / Second-Language Checklist

StepActionDone
1Admin β†’ Languages β†’ add second language; publish[ ]
2Confirm FoodShop resources installed (Admin.NopStation.* / Plugins.NopStation.*) for default language[ ]
3Export/import or translate critical strings: merchants list, OPC, order statuses, rider POD, wallet[ ]
4Switch storefront language β†’ /merchants, checkout, Track Order strings change[ ]
5Admin UI second language (optional) for merchant users[ ]
6Message templates: duplicate/localize OTP + status subjects/bodies per language[ ]
7WebApi string resources / app copy for both languages[ ]
8Figma/design: RTL only if market requires (not default FoodShop)[ ]

NFR-11 in Part E: second language switches UI strings β€” verify with FS_I18N_* in the enterprise spec.

G5. Backup / Disaster Recovery (DR)

What to Back Up

AssetWhy
SQL databaseOrders, WH, commissions, wallets, settings
Lucene IndexDirectoryOr accept full rebuild after restore
App_Data / plugin wwwroot uploadsPictures, theme assets
WebApi secrets / Maps / SMS keysPrefer vault; never only in DB backups without encryption
appsettings / hosting configConnection strings, Redis

RPO / RTO Guidance (Tune with IT)

TierRPORTONotes
Pilot≀ 24h≀ 8hNightly DB backup
City production≀ 1h≀ 2hHourly DB + geo-redundant storage
Multi-city farm≀ 15m≀ 1hAlways-on replica + Redis HA

Restore Drill (Quarterly)

  1. Restore DB to staging.
  2. Point staging appsettings at restored DB.
  3. Rebuild Lucene index.
  4. Smoke: /merchants, OPC, one Delivery order, API appstart.
  5. Record time-to-green as actual RTO.

Failover Levers (No Full Restore)

  • Disable OPC β†’ emergency fallback to core checkout (degraded UX).
  • Disable payment method / wallet.
  • Force-update mobile to known-good build.
  • Scale out web nodes; enable Lucene Redis sync if search skew.
Incident recovery flow diagram from detect to smoke test

Failover / recovery sequence

G6. Commercial SOW / Packaging Annex

Use Part E capability levels in proposals (illustrative packaging β€” not a price list):

PackageIncludesTypical Plugins
QuickBite Launch (L1+L2)Geo marketplace, OPC, kitchen board, riders, POD, themeCore, Merchants, OPC, OM, Theme, Pickup optional
QuickBite Grow (L3)+ take rate, tips payout, deals, cashback, wallet+ Commission, Promotions, CreditWallet
QuickBite Omnichannel (L4)+ mobile API, search, chat, shop widgets+ WebApi, Lucene, NopChat, Shop, MegaMenu, QuickView
Add-onsMulti-store cities, Redis farm, SMS OTP, Figma UI QA, trainingInfra + services

SOW must-state exclusions (from Part B limits): no split wallet tender; pickup hours not hard-enforced by default; commission reverse-on-refund not assumed; FixedByWeight shipping package review-only.

Acceptance: Part E9 gates + Part F training checklists signed by customer UAT lead.

G7. Document Changelog

VersionDateSummary
1.02026-07-23Merged business + product + config into complete guide
2.02026-07-23Enterprise Part E (NFR, security, DR-ready ops, diagrams)
2.12026-07-23Part F persona playbooks (customer β†’ support)
2.22026-07-23Part G annexes: Figma visuals, templates, API samples, i18n, DR, SOW, changelog
2.32026-07-23G1 staging captures from foodshop.nop-station.site (public + admin outside Figma)

Complete guide v2.3 β€” Parts A–G. Spec/test catalogs remain in docs/foodshop-specifications.md.

QuickBite Hyperlocal Marketplace β€” Complete Guide Β· Document ID: QB-FS-CG-4.90 Β· Version 2.3 Β· Platform: nopCommerce 4.90 / .NET 9 / NopStation

Book a Meeting