Cantaport
Currently building

Cantaport
Trade Portal

A private B2B platform built by Mica Design for Cantaport — giving authorised shade system distributors a single place to browse stock, reserve product, place orders, and manage their account.

The Cantaport admin team manages inventory, orders, and distributor accounts from a separate dashboard — both portals live in one codebase, completely isolated from each other.

Discuss this build →← Back to clients
2portals in one build
12product SKUs
7dreservation hold timer
RLSdatabase-level security

What this solves

Self-serve ordering, from stock check to invoice

Before this platform, distributors were calling or emailing Cantaport to check availability, placing orders by phone or PDF form, and waiting on the team for invoice copies — with no visibility into where their order was at.

The Trade Portal replaces all of that. Distributors self-serve from product discovery through to invoice download. The Cantaport team manages inventory, distributor accounts, and the full order pipeline from a dedicated admin dashboard — no shared systems, no crossed wires.

Distributor portal

Everything a distributor needs, in one place

Authorised distributors log in to a clean, purpose-built portal — no generic CRM, no shared spreadsheet. Every section is built around how a distributor actually interacts with a supplier.

Catalog

Full product catalog across all five series — LJ, PJR, MSD, USN, and KWC — with series filtering, product images, specifications, pricing, and live stock status badges.

Reserve

Distributors place a 7-day hold on any available product. A live countdown timer tracks the remaining hold time and the system prevents double-booking between concurrent distributors.

My Reservations

A dedicated view of all active holds. Distributors can release a reservation early or convert it directly to a confirmed order with a single action — no email or call needed.

My Orders

Full order history with a 4-step progress tracker — processing → confirmed → invoiced → shipped — so distributors always know exactly where their order is at.

My Invoices

Itemised invoices with GST breakdowns, overdue flagging, and print-to-PDF. Invoice copies are available on demand — no waiting on the Cantaport team.

Account Settings

Company name, ABN, address, and contact details — all editable in one place, and automatically pulled into every invoice generated on the account.

Admin portal

Complete control for the Cantaport team

The admin dashboard gives Cantaport full visibility across the entire operation — inventory, orders, distributor accounts, and revenue — from a single interface that distributors never see or access.

Dashboard

Live stats across active reservations, open orders, inventory levels, and revenue. Everything the Cantaport team needs at a glance before anything else.

Inventory

Full product table with a click-to-edit modal for name, pricing, stock quantity, and availability status. Changes are reflected immediately across all active distributor sessions.

Orders

All distributor orders in one view with inline status advancement buttons. No separate system needed to move an order from confirmed through to shipped.

Distributors

A live registry of every authorised distributor account — showing ABN, location, total order count, lifetime spend, and active reservation holds at a glance.

Platform

Scalable, secure and maintainable

Every technology choice is deliberate — selected for long-term reliability and maintainability, not trend-chasing. The platform is built to grow with Cantaport's distributor network, with clear separation between frontend, backend, and data layers.

Frontend

Next.js 16 (App Router)
Full-stack React framework with server components and route-group isolation
Tailwind CSS v4
Utility-first CSS with custom design tokens
TypeScript
Strict type safety across the full codebase
GSAP + ScrollTrigger
Smooth scroll animations on the marketing site

Backend & Data

Supabase (PostgreSQL)
Fully relational database with Row Level Security on all tables
Row Level Security (RLS)
Data access enforced at the database level — not in application code
Custom SQL functions
decrement_stock RPC for atomic stock updates in a single transaction

Auth & Storage

Supabase Auth
Email/password authentication for distributors
Cookie-based admin auth
Completely isolated from the distributor session layer
Product image storage
Served from the Next.js public directory — no external CDN required

Deployment

Vercel
Global edge deployment with automatic HTTPS and CI/CD
Single codebase
Marketing site, distributor portal, and admin portal in one Next.js project

Security & access

Separate portals, separate sessions

A B2B platform handling commercial inventory and invoicing needs access controls that distributors can trust and admins can rely on. Security is enforced at the database level — not just in application code.

Auth-gated at the middleware layer

The distributor portal redirects unauthenticated requests to login before any page content renders — the middleware runs before every route, not just on protected components.

Row Level Security on every table

Supabase RLS policies enforce data access at the database level. Products, reservations, orders, invoices, and distributor records all have RLS policies — even with the API key, you only see what you're authorised to see.

Admin session completely isolated

The admin portal uses a separate cookie-based auth layer — entirely disconnected from Supabase Auth. A distributor session cannot cross-authenticate into the admin portal under any circumstances.

Service role key stays server-side

All privileged database operations — including inventory updates and distributor management — run through server actions only. The service role key is never exposed in client-side code or API responses.

Notable features

Built for complexity, not retrofitted

Several parts of this build required more than standard CRUD logic — here's what makes the platform worth noting beyond the feature list.

Atomic stock management

A custom Postgres function handles stock decrements and availability status transitions in a single transaction. Concurrent reservations can never oversell the same product — the database enforces it, not the application.

Live reservation countdown

The 7-day hold timer counts down in real time on the distributor's screen. Urgency is visible without any server polling — making it clear when a reservation is about to expire and prompting action.

Print-ready invoices

Invoice pages render cleanly to PDF via browser print. Navigation, sidebars, and UI chrome are hidden via print CSS — no separate PDF generation library, no third-party service, no formatting work.

Single codebase, two portals

The public marketing site, distributor portal, and admin portal all live in one Next.js project using route-group isolation. One deployment, zero duplication, full separation of concerns.

Working demo

Built around how Cantaport actually works

Every screen in this platform is shaped around the real workflow of a shade system supplier — not a generic off-the-shelf solution. What you see below reflects the current state of the build.

Mobile App

Admin companion for the warehouse floor

A lightweight iPhone app designed for the Cantaport team — built for use in the warehouse, not at a desk. Scan products, process orders, and update stock levels on the go, with changes reflected instantly in the admin portal.

Barcode scanning

Point the camera at any product barcode to instantly pull up its inventory record, current stock level, active reservations, and pending orders — no manual lookup needed.

Pick & pack processing

Tick off line items as they're picked and packed in the warehouse. Status updates sync immediately to the distributor's portal so they always know when their order is on its way.

On-floor stock updates

Update quantities and availability status directly from the warehouse floor without going back to a desktop. Changes reflect across all active distributor sessions in real time.

The mobile companion app is part of Phase 2 of the Cantaport build — currently in scope and planned for delivery after the core web platform is complete.

Working prototype

Explore the demo

Both the admin portal and the distributor-facing portal are live and fully functional. Use the credentials below to explore the full experience.

Admin Portal
Private access — Cantaport team only

Full inventory management, order processing, distributor accounts, and the live dashboard. Use the demo account below to explore the admin experience.

URLcantaport.vercel.app/admin
Emailadmin@cantaport.com.au
PasswordCantaportDemo2026!
Open Admin Portal →
Distributor Portal
Open access — email login

Authorised distributors log in with their email to browse the catalog, place reservations, manage orders, and download invoices. Use one of the test accounts below to explore the distributor experience:

URLcantaport.vercel.app/platform/login
Emaildistributor@cantaport.com.au
PasswordCantaportDemo2026!
Open Distributor Portal →

Want something like this?

We build B2B platforms
from the ground up.

If you have a workflow that's held together by email chains and spreadsheets, we'd like to hear about it. Get in touch and we'll take it from there.

Chat on WhatsApp