Getting started
Product overview
Sharkhex Delivery is a multi-role delivery marketplace platform. It connects customers, vendors, riders, and administrators in one system.
Platform roles
The backend uses these main roles:
ROLE_USER: base authenticated user role.ROLE_CUSTOMER: customer app access.ROLE_VENDOR: vendor account access.ROLE_RIDER: rider account access.ROLE_WORKSHOP: workshop-style operational account.ROLE_ADMIN: full platform administration access.
Administrators also have access to the vendor admin area, which is useful for support, operations, and testing vendor workflows.
Customer flow
Customers use the mobile app to:
- Register or log in.
- Verify trusted devices with OTP when required.
- Manage profile data and saved contacts.
- Browse vendor types, vendors, categories, and products.
- Add products to cart.
- Place orders.
- Pay by card, saved card, Apple Pay, Google Pay, or supported offline methods.
- View order details and order history.
- Leave instructions for the courier at checkout, and choose to have the order left at the door (card payments).
- Call or message their courier while the order is on its way.
- Report a problem with an order and use credit at checkout.
- Save favorites and rate vendors.
The customer and the courier see each other's phone number only while the delivery is under way. Their chat closes for writing when the order is delivered, stays readable for chat.retention_days (30 by default, Settings → General), and the store never sees it; the operations team can read it on the order in Live ops.
The same customer journey also runs on the website, served by the backend on its own domain (see Website in Platform configuration and API and integrations): store pages that search engines can index, the basket, checkout and order tracking. Sending parcels and chatting with the courier stay in the app.
Vendor flow
Vendors use the vendor admin panel to:
- View vendor dashboard data.
- Manage products.
- Manage offers.
- Review and update orders.
Each vendor user should be linked to a vendor record. If a vendor user has no vendor associated with the account, access is blocked with a friendly message instead of a raw exception.
Rider flow
Riders use the mobile app to:
- View assigned jobs and route information.
- Receive real-time delivery offers.
- Accept or decline jobs.
- Update delivery status.
- Submit delivery proof when required: the customer's delivery code, or a photo when the order is left at the door.
- Call or message the customer during the delivery, with quick replies.
Real-time rider delivery offers use Pusher.
Admin flow
Administrators use the main admin panel to manage:
- Users and roles.
- Contacts.
- Vendor types and vendors.
- Categories, products, offers, and attachments.
- Orders, bookings, parcels, jobs, and routes.
- Currencies.
- Payments, payment providers, and payment accounts.
- Notifications.
- Metadata definitions and metadata values.
- Platform, payment, storage, notification, and integration settings.
Backend and mobile relationship
The mobile app communicates with the Symfony backend through /api endpoints. Authentication uses JWT access tokens and refresh tokens. The backend also supports trusted device handling through the X-Device-Id header.
The backend API documentation is available at:
/api/doc
A Postman collection is also included in the Symfony project:
OnlyParcels.postman_collection.jsonFound a mistake? Tell us.