In production

A warehouse system for a parts trader

I set up this system and built it alone in its first year: orders from webshop, marketplace and counter in one workflow, from picking to shipping. After that it was developed further together with a colleague.

Role
Set up, built alone in the first year
Period
Since February 2025
Stack
TypeScript, Next.js, drizzle-orm, Bun, MySQL, Docker
Status
In production
WebshopOrder syncPicking listPhoto checkLabelPush messagewith the parts API, one workflowlabels for pickup and for fitting
A sketch instead of screens: the client stays anonymous.

The problem

A parts trader sells through its own webshop, an online marketplace and the counter. Every channel had its own orders, and booking stock out twice was a real risk.

What I built

I set up the repository and built it alone in its first year, on Next.js and MySQL, with drizzle-orm on Bun. The orders come together in one workflow, with a picking list on the warehouse worker's phone.

After that the system was developed further together with a colleague. What was built later, together or by the colleague, is not listed here as my work.

What matters technically

  1. Order sync with the webshop and the parts API

    Orders from the webshop and data from the parts API come together in the system, so the warehouse works from one list.

  2. A picking list with product photos and a photo check

    Every item on the picking list shows a product photo, with a photo check beside it, so the right part leaves the warehouse.

  3. Labels for pickup and fitting

    The system makes the labels for parts that are picked up and for parts that are fitted.

  4. Push notifications

    Notifications reach the warehouse workers' phones as push messages.

  5. The vehicle module

    Vehicles and their data live in the same system as the orders and the stock.

  6. The CI and Docker build

    Every change is built automatically into a Docker image with GitHub Actions.

Measured

Counted in the repository. The number of tables is that of the current schema, after the further development.

first commit: I set up the repository
01-02-2025
tables in the current schema
31
How measured
git log --reverse --format=%ad --date=short | head -1
grep -c 'mysqlTable(' app/server/db/schema.ts

Measured on 27-10-2026 in the project's repository.

Need something similar, or a team that builds systems like this?

info@bitvire.com