Basket
The basket is broken-down by the vendor and available in the right sidebar, which slides in when user clicks on the basket icon.
Platform was designed with b2b purchases as a main goal, thus had wholesale pricing, allowing buyers to pay less within the more quantity. Essentially, all products had unit types (KG, L etc) and pack types (bag, jar, can, bottle etc). When vendors defines price list per amount, reduced price indicated on the product detail page when quantity increases.
Real-time chat is working through Websockets and powered by Django-Channels and VueJS and allows buyer directly communicate with the vendor staff. Each of the venue staff users can connect to the chat and respond from his/her account. Chat functionality also allows to determine whether the chat message was read by the member and also whether the members are online.
Shipping system was built similar to popular modern ecommerce platforms and allowed vendors to control their shipping policies by themselves. Each shipping policy was tight to the area, which represented a region of Australia (NSW Country, NSW Sydney, VIC Country, VIC Melbourne and so on). Each area had specific postal codes, which we used to determine buyer's location. Ultimately, each policy had fixed pricing and weight-based pricing. Each pricing also had tier, upon reaching which, shipping became free.
We replaced default Oscar's dashboard stats with custom ones on top of the Vue, Chart.js and API endpoint with aggregated metrics — timeline with number of orders and total revenue.
We reworked checkout page with related functionality from scratch - in order to provide better experience for multi-vendor purchases. Newly introduced page indicated the parent basket in the right sidebar and allowed to control each sub-basket (belonging to the vendor) accordingly. On the central part of the page buyer was able to manage and select shipping address and credit card details (transactions handled by the Stripe).