Brand logo
Secure operations portal

Run every delivery from one place.

Manage orders, dispatch, riders, customer locations, cash and delivery operations through the Donut Shop Bakery Control Tower.

📦Real-time order and dispatch control
🗺️Map-based delivery and rider operations
💰Cash, COD and settlement visibility
🔐Role-based access for every team
Donut Shop Bakery · Delivery Control Tower

Welcome back

Sign in with your staff account to continue.

Secure sessionRole-based access
Login diagnostics & troubleshooting
Use this only when sign-in fails. It checks the PHP/MySQL connection and browser session without exposing your password.
Privacy policy
Forgot password? Ask your Super Admin. New staff? Register
Delivery Control Tower
⌕Ctrl K
Live --:--
DONUT SHOP NEPAL · LIVE OPERATIONS

Delivery Control Tower

One screen for today's orders, rider capacity, exceptions and delivery movement.

🗺️ Delivery Operations RadarActive customer destinations, rider positions and urgent orders
LIVE
🗺️ Delivery Operations RadarPreparing live delivery map…
Overdue / UrgentAt RiskActiveRider GPS
Live Delivery RidersDistance from your current device location
🚚 Live Dispatch BoardOrders that need action now
⚠️ Needs AttentionExceptions and pending actions
🛵 Rider AvailabilityLive shift and workload snapshot
📦 Delivery QueueCurrent operational queue
📍 Live Rider MapSuper Admin only · automatic on-duty GPS
Waiting for rider locationsRider locations activate automatically while riders are on duty.
Visible to Super Admin only.
📈 Today's ActivityRevenue, completion and rider activity
Today's Revenue
Rs. 0

Orders

Branding & Appearance

Super Admin
Configure the logo and brand name shown across the Control Tower, login screen, sidebar, header, printable delivery slips, and customer notification defaults.
Brand preview
Donut Shop BakeryDelivery Control Tower
PNG, JPG or WebP · recommended square logo

📍 Live Location Diagnostics

GPS + Server Health
Run this test after installing an update or when a rider's location is not appearing. It checks the browser GPS pipeline, login-to-rider mapping, database table, server API, and the last successful location write.

User Accounts

Delivery Staff

👛 Wallet Overview

Outlets

Localities

Each locality has its own road condition, delivery SLA and map pin, plus an optional geofence. Auto-assign matches riders to orders by locality and map position.

Payment Modes

🚚 Delivery Charge Suggestions & Rider Incentive

The app calculates and suggests a delivery charge for staff to enter/bill in the POS. The app does not add this charge to the order Total Payable or collect it. The suggestion uses the Booking Outlet → customer route; rider incentive uses the Pickup Outlet → customer route. Every calculation is stored on the order and in calculation history.
Customer Delivery Charge Rules
Automatic: every locality carries its own road condition (set in Configuration), and staff cannot change it while calculating, so nobody picks the wrong one by mistake. If a locality is not set up yet, the road condition they choose is used.
Charge multiplier by road condition (applied to the distance charge)
Current rule: Rs. 400+ within 3 km = free · Rs. 400+ beyond radius = extra km only · below Rs. 400 within radius = Rs. 50 · all final charges round UP to the next Rs.5.
Rider Delivery Incentive
Distance is measured from the Pickup Outlet. The first 5 completed deliveries for the rider on a calendar day earn Rs. 1.00/km. Delivery 6 onward earns Rs. 1.50/km. The incentive is posted instantly, as soon as each order is marked delivered: the rider's wallet is debited and the Incentive Ledger (Reports) is credited. The order retains its own calculation.
Each delivered order earns the HIGHER of this minimum and distance × rate. Applies to deliveries from now on; incentives already posted are not changed. Enter 0 for no minimum.

📊 Delivery Economics & Audit Center

A management view of the exact delivery-charge suggestions and rider incentive calculations already recorded by the application. Delivery charges remain POS-only; this center never bills or adds them to Total Payable.

Discount Limit

The most a rider can discount an order by, at the moment they collect payment — as a percentage of that specific order's value. This applies the same way whether they enter the discount as a % or as a Rs. amount: a Rs. figure that works out to more than this percentage of the order gets capped down automatically. Leave blank for no limit.

Default Pickup Location

The outlet a new order defaults to picking up from — typically your production house/factory, since orders are often booked at one outlet but physically prepared and collected somewhere else. Whoever's creating the order can still change it per order if needed.

Cake Addon Options

The list offered when adding cake extras (candles, spray, etc.) at order creation, or by a rider before delivery. Each price is added to the order total automatically when a rider adds one at delivery.
NamePrice (Rs.)

Print Slip Width (default)

Fallback for any outlet that hasn't set its own printer width below. Each outlet's own setting in Settings → Outlets takes priority, since different outlets can have different printer hardware.
Standard (A4 / Letter) 80mm Thermal Receipt

💬 Zulip Dispatch & Outlet Communication

Optional
New delivery orders can be automatically posted to Zulip. Dispatch receives every delivery; an outlet channel can receive the same order. Kitchen/production is not included. A Zulip failure never blocks order creation.
Each outlet can have its own Zulip channel. Leave an outlet blank if only Dispatch should receive its orders.

Events

Credentials stay server-side in backend/zulip_config.php.

📨 SMS Integration

Credentials live server-side only, in backend/sms_config.php — they're never sent to the browser. Edit that file directly on your server to connect a gateway (Sparrow SMS or similar), then set $SMS_ENABLED = true;.

Which Steps Text the Customer

Order Placed Out for Delivery Delivered Feedback Request
Feedback can also be requested by hand any time via the 💬 WhatsApp button after marking an order delivered — no gateway needed for that one.

Customer SMS Templates

Short, customer-friendly templates are used automatically. Available placeholders: {name}, {orderNumber}, {time}, {outlet}, {tracking_link} (the customer's tracking page).

📧 Email Notifications

Credentials live server-side only, in backend/email_config.php. Uses your host's built-in mail — no extra setup needed on most cPanel hosts, though delivery isn't as reliable as a dedicated email service. Edit that file directly on your server, then set $EMAIL_ENABLED = true;.

Daily Summary Recipients

A detailed recap — per-outlet breakdown, rider activity, cash/QR/credit status, and anything needing attention — sent once daily at the time set below.
There's no server-side scheduler in this setup — this checks every few minutes while someone has the app open, and sends the moment this time has passed for the day. It isn't a guaranteed exact-time send if nobody has the app open at all around then, but it'll go out shortly after, and it will still catch up on a fully missed day the next time the app opens.

Push Notifications (system setup)

Requires HTTPS and a VAPID key pair generated once on the server (backend/generate_vapid_keys.php — delete it after use). See backend/push_config.php. Once a key is saved here, every user enables push for their own device from their own My Account screen — top bar → 👤 account name.

Problem reports

The app records crashes by itself, and anyone can tap "Report a problem". Review them here, then use "Copy for support" to send the details.

Customer Tracking & Delivery Code

The customer sees a 4-digit code on their tracking page once the rider is on the way and tells it to the rider at the door. The rider cannot see the code; the server checks it and logs every check. If the customer cannot give it, the rider chooses a reason, and that is recorded on the order. Needs backend/track.php, pod_verify.php, pod_lib.php and track.html.

Rider GPS rule

Backup & Restore

Download a full backup before pushing an update to the project, so you can restore instantly if anything goes wrong. Includes all outlets, areas, riders, orders, settings, and login accounts.
A complete copy of the whole database (orders, riders, wallets, users, everything), made on the server. Keep a copy somewhere other than this server. Ask your host to run backup_cron.php nightly so it happens automatically.
A backup file contains account credentials (as hashed passwords, or plain in demo mode) — store downloaded backups somewhere private.

Server Snapshots

Every save automatically archives what was there before it, so you can undo a bad update or a mistake in one click — no manual backup needed for this.

Data Consistency

If a delivered order's settlement was corrected after the fact (via "Edit Settlement" on the order), rider wallet balances won't reflect that correction until this runs. It only rebuilds order-derived wallet entries (cash collected per delivery) from what's currently on each order — petty cash advances, expenses, and past cash-settlement payments are all independent real events and are never touched or recalculated. Safe to run any time; nothing is lost.

Danger Zone

Clears every order, delivery batch, order-based demand history, reject/reschedule history, Paid via QR History, Credit Receivable, Credit Payments Received, and Cash Discrepancy History, since those are tied directly to orders that are about to disappear. Outlets, riders, accounts, payment modes, rider wallets, wallet ledgers, and expense logs are NOT touched. This cannot be undone.
Resets every rider's wallet balance to zero and permanently erases the wallet ledger — including Cash Settled to Outlet History — the Incentive Ledger, and every logged expense. Only do this once every rider is genuinely settled with every outlet; there's no way to recover what anyone owed or had already paid back afterward. This cannot be undone.
Factory reset wipes every outlet, area, rider, order, account, wallet, and log, leaving a completely empty workspace to set up again from scratch. This cannot be undone. Entries already moved to the server Archive are NOT erased by this.

My Deliveries

Delivery History

My Wallet

Expenses

Rider Settings

Personal & device settings
👤 Account & SecurityYour rider account
🌐 भाषा / Languageनेपाली · English
🔔 NotificationsControl this device
📍 Live LocationGPS & tracking controls
Automatic live locationLocation starts when you start your shift and stops when you end it.OFF DUTY
🎨 App PreferencesCustomize your rider workspace
📱 App & DeviceInstallation and version
Installed Version—
Platform—
🆘 Help & PrivacyGet assistance

Receivables Outstanding

Rider Cash Reconciliation

DELIVERY ECONOMICS · OPERATIONS

Delivery Calculation

Calculate, review and audit delivery charges, distance rules and customer-location variances without opening Reports.

CONTROL TOWER · RECONCILIATION

Delivery Reconciliation

Compare calculated delivery charges, POS charges, rider incentives, GPS distance and customer-location variance before closing the delivery record.

Performance Overview

📈 Delivery Analytics

Where the time goes, which localities, riders and hours are slow or late, and what a delivery earns versus costs. Uses the date range above.

🏆 Rider Leaderboard

Rider Performance

Outlet Performance

Delivery Zone Analytics

Which areas actually drive orders and revenue — useful for deciding where to focus riders.

⭐ Customer Feedback

📈 Operations & Financial Analytics

🕘 Configuration History

🧾 Delivery Audit History

Centralized audit records for delivery-charge calculations and delivered-location variances. Delivery charges remain POS-only; these records explain how the Control Tower calculated the suggested amount and why a location variance was flagged.

Delivery Charge Calculation Summary

Location Variance Summary

Delay Reasons

Rider Expense Log

Rider Shift Log

Cash Discrepancy History

Every case where the amount settled with an outlet, or collected at delivery, didn't match what was expected — including already-resolved ones, for a full record.

Cash Settled to Outlet History

Every settlement ever recorded between a rider and an outlet — clean or not — pulled straight from each rider's wallet ledger.

🎯 Incentive Ledger

Every rider incentive paid, one line per delivery. Each posting credits this ledger (incentive expense goes up) and debits the rider's wallet. Uses the date range above, by posting date. Entries older than 90 days are moved to the Archive.

📱 Paid via QR History

Every order paid directly via QR — this money never passed through a rider's wallet, since it went straight to the outlet.

Credit Receivable

Customers who took their order on credit — settle in full or in part as they pay you back. Always shows the current live balance, not filtered to the date range above.

Credit Payments Received

Every credit settlement ever recorded, in this date range — a permanent record even after a customer's balance is fully paid off.

Audit Log

Dispatch Intelligence · Phases A–D

Optimization Engine

Predictive SLA Risk

🤖 AI-assisted

Route Optimization & Batches

Demand Forecast

📈 Forecast, next 8 hours

Dynamic Rider Allocation

Capacity Planning

Business Intelligence

SUPER ADMIN · DISPATCH CONTROL

Dispatch Command Center

Live rider visibility, workload balance and dispatch exceptions in one focused workspace.

Dispatch Operations

Super Admin only
This live operational view is intentionally separate from the homepage. It is visible only to Super Admin.

Dispatch Command Center

Live rider visibility
🗺️ Live Rider MapLast known device positions
Waiting for rider locationsRider locations activate automatically while riders are on duty.
⚖️ Rider WorkloadBalance active deliveries
PRODUCTION EXCELLENCE · V1.85

Control & Certification Center

Security, financial reconciliation, exceptions, system health, management analytics, notifications, regression testing and maintenance in one operational workspace.

Web Readiness & Certification

Super Admin only
Technical readiness, phase completion and production certification tools are kept here instead of the operational homepage.

✅ Web Operations Core — Phases 1–4

Final web-application control check before the Android Staff App phase. Validates outlet origins, customer pins, delivery-charge rules, rider incentive rules, saved audit records and dispatch-map readiness.

🏁 Web App Completion Center — Phases 1–6

Final operational readiness view for Location, Delivery Economics, Rider Incentives, Dispatch, Reports and the common role-based staff web experience.

🛡️ Production Completion Center — Phases 7–8

Production hardening and final end-to-end certification. Checks security posture, session/API health, data integrity, financial safeguards, GPS/location readiness, offline resilience and the required business scenarios without modifying orders or financial ledgers.
🚦 Production Release GateLive readiness status · no automatic certification
Run the gate after deployment. REVIEW items require manual verification before production release.

🚚 Pricing Gate

Included when the release gate runs.

💬 Zulip Gate

Included when the release gate runs.

📴 Offline Gate

Included when the release gate runs.

🧠 Operational Intelligence & Escalation Center

Read-only exception analysis across SLA, rider GPS freshness, assignment, delivery pricing, payment state, location variance and Zulip notification health. The scan never changes orders or financial ledgers.

🤖 Automation & Decision Support Center

Turns detected operational exceptions into a prioritized, read-only action queue. It does not automatically assign riders, alter orders, post financial entries, or send messages.

🧾 Exception Resolution & SLA Management

Tracks action ownership, acknowledgement, work-in-progress, resolution, SLA due time and resolution duration. Status changes are operational records only; they do not modify the underlying order or financial ledger.

📈 SLA Escalation & Management Analytics

Management view of exception aging, SLA escalation, ownership, outlet patterns and recurring issues. Escalation levels are advisory calculations only and do not automatically change operational data.

🧾 Daily Operations Close & Reconciliation

Management closing view for one operating date. It consolidates operational activity and highlights items that still need review. Closing this snapshot is a management sign-off only; it does not alter orders, rider wallets, delivery charges or financial ledgers.

🔐 Security Certification

Not Run

💰 Financial Reconciliation

Not Run

🚨 Exception Control Tower

—

🏥 System Health

Not Run

📊 Management Dashboard

Live State

🧾 Immutable Historical Records

Append-only

👤 Staff Accountability

Audit Trail

🔔 Notification Center

Live

🧪 Automated Regression Suite

Not Run

📋 Release Management

v

🗄️ Database Maintenance

Not Checked

📖 Operations Playbook

Staff Guidance