Agoriam

B2B multi-vendor wholesale marketplace in Australia, allowing business buy and sell foods of different categories.

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.

Products Feed

Buyers could follow vendors they want to buy products from and they will appear in the product feed accordingly.

Product Filters

For the better UX it was implemented AJAX-powered catalogue filters, which allows to search and filter products by all important criteria: minimal and maximal prices, countries of origin, pack type etc.

Wholesale Pricing

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

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

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.

Statistics

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.

Single-page Checkout

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).

Miscellaneous

  • Implement Australian Business Number lookup (service provided by Australian government)
  • Allow to follow vendor and then you'll see vendor's products in the feed
  • Product search with autocompletion
  • Products moderation, submitted by the vendors, allowing admin users to publish or unpublish products, which respectively make them appear or not appear in the main catalogue.
  • CSV Products import and export
  • Stripe integration
  • Allow to feature products and categories on the landing page.
  • Invoices generation (using django-oscar-invoices)
  • Deployments automation using Ansible.