Short write‑ups of problems we hit running a real commerce operation and what we changed in the code because of them. No product announcements; just the reasoning.
We built an internal messenger into the ERP instead of sending the warehouse to a third-party app. Why it had to be separate from customer chat, why the first users were pickers on tablets, transparent translation between languages, chats that start from an order, and the rule that staff chat is work — so HR may read it.
A warehouse note that is "blocked" with nothing blocking it is the worst kind of bug — invisible until a picker is standing there with no button. We replaced four cached flags and six readers with two generated columns, one predicate and an alarm.
Selling through a wholesale marketplace means the order is not yours: the buyer edits it after you have picked it, the marketplace sets the discount and the commission, the items can change after dispatch, and the only truth is their payload. The shops we run on such a marketplace taught us more about ownership than any other integration — six rules, each with the afternoon behind it.
The factory still runs on paper: a tally per worker per task, totted up on Friday. The manufacture module that replaces it is built, tested, imported from the old system locally, and not yet on the floor. Part I is the model — artefacts, recipes as ordered tasks with raw materials per step, job orders that expand into a work queue, and a "task session" that is the single payable fact, with the pay rate frozen at the moment it closes — and the decision to make every product a trade unit first so a candle made on Tuesday can be sold online on Wednesday.
Our pickers and packers work on cheap tablets with a Bluetooth scanner, on the same web application the office uses — same URL, same codebase, no app store. How a browser tells a barcode from a person typing, what the server does with a scan (match → location → pick, in one round‑trip), and why "it feels like an app" is a design discipline, not a framework.
Stock in aiku is never a number you set; it is the sum of movements you record — purchase, pick, return, transfer, production, found, write‑off, audit. How 88,000 stock items across 45,000 locations stay honest: a location‑stock row per bay, a picking location per item, audits as movements with a delta and a reason, a lock that stops a low count being audited mid‑pick, and the "error" naming rule that keeps a retired SKU from ever being picked again.
Shopify first, in 2024; then WooCommerce, TikTok Shop, Magento, Amazon, eBay, Allegro, Wix, and a wholesale marketplace with its own rules. Two years of connecting other people's platforms to our warehouse — the model that survived all of them (platform, channel, portfolio), the lesson about who owns the truth, and the small ugly things that each platform taught us.
From the packing bench, one tap books the shipment, prints the label and writes the tracking number onto the delivery note — for eight carrier integrations across four countries, each with its own dialect: SOAP here, REST there, XML that breaks on an ampersand, a service that refuses more than one parcel, cash‑on‑delivery that must go on exactly one box. What the shipment object has in common everywhere, what each carrier taught us, and why every integration ships with a "manual" twin.
Running a third‑party fulfilment business inside the same system as your own warehouse: pallets, boxes and oversize items that belong to someone else, stored items inside them, rental agreements with clauses, and a recurring bill that consolidates itself on the customer's cycle. Why a pallet's lifecycle needs twenty states and a separate "booked in" from "received", and how the 3PL customer sees all of it in their own portal.