All case studies

B2B distribution / e-commerce

B2B Customer Portal

A wholesale ordering app for stores: catalogue with stock status, flyers, barcode scanner, a cart with multiple delivery points, and order history. Stores order on their own, 24/7.

self-service ordering
24/7

Client

A wholesaler and its business customers - stores ordering regularly, often for several delivery points.

Problem

Orders came by phone and e-mail. Stores did not know whether goods were in stock, sales reps retyped lines by hand, and promotions and flyers arrived late.

Scope of work

A mobile app for stores, a content panel for the wholesaler, product catalogue sync, and an API passing orders to the ERP.

Solution

A Flutter app with a catalogue, filters, and a barcode scanner - a coloured dot next to each product shows stock status. The cart handles multiple delivery points and computes net and gross values, and an order can be repeated from history. Granular permissions control who sees the catalogue, payments, licences, or returnable crates. Local data lives in ObjectBox, orders and the cart in Appwrite, sign-in and notifications in Firebase. The wholesaler collects orders through an API with an ERP document number.

Key features

  • Catalogue with stock status, filters, and barcode scanner
  • Cart with multiple delivery points and rollback on error
  • Order history, reordering, and cancellation within an allowed window
  • PDF flyers and promotions managed from the panel
  • Complaints, licences, returnable crates, and stocktaking
  • Push notifications and in-app onboarding

Business outcome

Stores place orders on their own at any time with stock visibility, and orders reach the ERP without retyping. Cart and order logic is covered by unit tests.

Technologies

FlutterAppwriteFirebase AuthFCMObjectBoxDartREST API