Skip to content
FH
All projects
LiveInternal system

Full Stack · Enterprise · Inventory

EGI Optik Inventory System

Inventory, serial tracking, and stocktake for an optics company

Mobile-first internal inventory system for optics and laser stock, with receiving, issuing, serial and lot tracking, stocktakes, and barcode scanning.

Next.jsReactTypeScriptPostgreSQLDrizzle ORMBetter AuthS3PWA
Request a walkthrough

Client confidentiality applies. Source code and a live demo can be shared privately on request.

Barcode scan workstation in the EGI Optik inventory system

Overview

An internal inventory system for EGI Optik. It tracks optics and laser stock across warehouses and locations, records stock movements as a ledger, follows serial numbers and lots through their lifecycle, and supports barcode-driven scanning on the warehouse floor.

Problem & solution

The problem

Stock was tracked without a reliable ledger: serials and lots were hard to follow, stocktakes were manual, and technical documents could not be tied to the physical item being inspected.

What was built

A single Next.js full-stack application over PostgreSQL. Stock movements are written as immutable ledger entries with row-level locking on balances, files live in S3-compatible storage, and the UI is built mobile-first so scanning works on warehouse phones.

Key features

  • Goods receipt, issue, transfer, adjustment, and live stock balances
  • Products, SKUs, categories, and structured specification fields
  • Serial and lot lifecycles with calibration and document expiry tracking
  • Stocktake sessions with count lines and an apply step
  • Barcode/QR scan workstation with camera and hardware-scanner input
  • Product 360 and serial 360 views for full movement history
  • Role-based access, audit logging, and barcode label printing
  • Installable PWA for mobile warehouse use

Technical implementation

Next.js route handlers act as the API over a PostgreSQL ledger, with S3-compatible object storage and Better Auth protecting every role.

Application

Next.js App Router, mobile-first UI, PWA service worker

API

Route handlers with Zod validation and server-side role checks

Data

PostgreSQL + Drizzle ORM · 26 tables · ledger with SELECT FOR UPDATE

Files

S3/MinIO presigned uploads for SKU images and documents

Devices

Camera and HID barcode scanning through @zxing/browser

My contribution

  • Implemented master data, stock receipt/issue/transfer flows, and the stock ledger.
  • Added serial and lot tracking with stocktake sessions and application of count results.
  • Built product 360 and serial 360 views with movement history.
  • Set up production object storage with presigned uploads.
  • Added governance features, audit coverage, CI type-checking, and a UI refresh.
  • Fixed production authentication origin handling behind nginx.

Visual showcase

Barcode label preview for a stock keeping unit
Barcode label printing
EGI Optik Inventory System sign-in screen
Sign-in screen on the production deployment
View all