GoodMorning,
I am trying to add a delivering method in my adalo’s application but i don’t know how to do that, i don’t understand how Make works too
Thanks in adavance,
GoodMorning,
I am trying to add a delivering method in my adalo’s application but i don’t know how to do that, i don’t understand how Make works too
Thanks in adavance,
Users
role: customer | delivery person | admin
name, phone, verified document (bool)
area_base (neighborhood/zone)
is_available (bool) — only for delivery person
last_lat, last_lng (optional, via location component)
Orders
customer (rel. User), customer_address (rel. Address)
subtotal
delivery_zone (rel. Zone) / distance_bucket (e.g., “0–3 km”, “3–6 km”)
shipping_price
status: pending → assigning → accepted → pickup → en route → delivered → completed
delivery person (rel. User)
hold_until (datetime) — anti-double-acceptance lock
proof_photo (image), signature_name (text), delivered_at
Addresses
user, label (“House”), street, number, neighborhood, city, zip code, ref
Zones (if using zone pricing)
name (“Centro”, “Zona Sul”), zip_start, zip_end or list of neighborhoods
PricingRules
type: zone or distance
zone (rel. Zone) or distance_bucket
base_price, additional (optional), min_price
Earnings
delivery person, order, amount, fee_platform, status: pending | released | paid
Choose a model:
PricingRules.base_price.Tip: start with Zone (simple and reliable). Then, if desired, add distance ranges.
status = pending.“Upcoming Orders” screen (Delivery Person): Orders list with:
status = pending or assigning
delivery_zone == deliveryperson.base_area
hold_until empty or less than now (released)
“Accept” button:
hold_until empty/expired → arrow:acceptshold_until = now + 3 min (collection window)Alternative: dispatch screen (admin) with a manual “Assign” button for an available delivery person (filter
is_available = trueand samebase_area).
Delivery person sees “My Deliveries”:
accepts → “Start Pickup” button → pickup status
“Out for delivery” → en_route status (optional: update last_lat/lng via the location component when the screen opens)
Customer tracks status on a “My Orders” screen.
“Delivered” button (Delivery person):
takes a proof photo and/or collects signature_name
records delivered_at, status delivered → completed
creates Earnings (value = shipping_price – fee_platform)
“Earnings” screen:
adds Earnings by period, status
admin changes status to paid when paying (external transfer).
Customer
shipping_price) → My Orders (status).Delivery Person
Admin
hold_until + “if empty or expired” condition.deliveryperson.is_available = true.base_area of the delivery person; combine with the delivery_zone of the order. * Audit: Save status transitions in an “OrderLogs” collection (optional).