All work
Project04

Scanapp

Scan EAN-13 barcodes with the phone camera, build orders against NopCommerce.

DisciplineMobile-first tool
Year2025
RoleCo-developer · Mobile scanner flow
SectorWholesale ops · NL/BE
Scanapp product interface screenshotSCANAPP· HERO · 16:9
Overview

Next.js 15 mobile-first warehouse and sales tool for scanning EAN-13 barcodes with a device camera, resolving products against NopCommerce, and building a customer-specific basket.

Collaborative project with a senior developer/colleague. My verified contribution covers the initial scaffold, Supabase auth, dashboard shells, barcode scanning, scanner/order state, NopCommerce product lookup, and client selection. later order placement and test infrastructure were added after handoff.

Challenge & Approach
The Challenge

What was getting in the way.

Field agents needed a faster way to build customer orders while moving through warehouses, stock rooms, or customer locations. The existing process was slow enough that the useful product shape became clear: customer first, camera first, quick product feedback, and mínimal friction between scans.

The Approach

How I built around it.

We consciously chose a PWA to move quickly while still giving field agents a mobile-first, installable experience with browser camera access. I built the scanner around ZXing and the browser camera APIs, then added audio and color-coded feedback, scan cooldowns, GTIN deduplication, multi-EAN product matching, pending-lookup guards, and a reducer-backed basket. Product lookup runs through authenticated server actions that resolve per-tenant NopCommerce credentials after Supabase login.

Stack — full breakdown
Frontend
Next.js 15React 19Tailwind CSS v4HeroUIZXing
Auth / data
Supabase SSRServer ActionsNopCommerce API
Scanner
@zxing/libraryMediaDevicesMediaStreamTrackEAN validation
State
React ContextuseReducerTanStack QueryZustand
Delivery
PWAHeroUIReact Hook FormZodRemixicon
Selected screens
Previous

Pitstop

Next

Temporal Workers