Work · Next.js · PWA

Lightweight WMS for an architecture studio

A phone/tablet PWA for sample and material stock: camera barcode scanning, product catalogue, Code128 labels, stock movement history, roles, and CSV. In production and used daily by the client.

My role Builder: PWA UX, barcode/label flows, role model, Prisma schema, Auth.js, and VPS deploy with pm2 plus backups.

Stack Next.js App Router · Prisma · PostgreSQL · Tailwind · Auth.js · PWA · pm2 on a small VPS

Status In production · used daily

Context
An architecture studio needed a light stock system for samples and materials — catalogue, receipts/issues/transfers, and labels — that works on the floor from a phone or tablet. Constraint: no heavy ERP; clear roles (warehouse / architect / admin); reliable backups on a small VPS.
Intervention

Shipped a PWA on Next.js App Router with Prisma + PostgreSQL, Auth.js, and floor-friendly barcode/label flows.

Phase 1 — Catalogue and movements

Product catalogue with stock movement history for receipts, issues, and transfers. CSV export for handoff to other tools.

Phase 2 — Camera barcodes and Code128 labels

Phone/tablet camera scanning for barcodes, plus Code128 label generation so shelf and sample tags stay consistent with the catalogue.

Phase 3 — Roles and VPS ops

Roles for warehouse, architect, and admin via Auth.js. Deployed on a small VPS with pm2 and backups so daily use survives restarts.

Risks & how they were handled
  • Wrong stock counts → movement history as the audit trail; roles limit who can mutate.
  • Phone UX friction → PWA with camera scanning instead of a desktop-only workflow.
  • Host failure → pm2 process management and scheduled backups on the VPS.
What I'd do differently
  • Add offline draft queues earlier for flaky site Wi-Fi.
  • Codify backup restore drills as a checklist, not only cron.
Outcome
Before: sample and material stock lived in ad-hoc lists with weak movement history. After: a production PWA used daily — catalogue, camera barcodes, Code128 labels, receipts/issues/transfers, warehouse/architect/admin roles, and CSV — on Next.js App Router, Prisma, PostgreSQL, Tailwind, and Auth.js.

System map

Sample or material on the floor

phone / tablet

Camera barcode scan

PWA

Code128 labels

print path

WMS PWA

Movements ledger

receipt · issue · transfer

Roles

warehouse · architect · admin

What it does

Keeps a live catalogue of samples and materials

Records receipts, issues, and transfers

Exports CSV for handoff

Floor scanning and labels feed a production catalogue with a clear movement history.

What shipped

  • Phone/tablet warehouse Floor staff scan barcodes and print Code128 labels on a PWA used daily — Next.js App Router.
  • Stock movement history Receipts, issues, and transfers with warehouse / architect / admin roles.
  • VPS ops Runs on a small VPS with Prisma + PostgreSQL, Auth.js, pm2, and backups.

Stack Next.js Prisma PostgreSQL Tailwind Auth.js PWA pm2

In production · used daily

← Hey Rosalie Next: Znam swoje auto →