Search

Search all blog posts and tutorials by any word or term

Case studies · anonymized on purpose

Systems that run a business, not demos.

Every project below is in production or on its way there. Customers are not named and the exact purpose of each product is deliberately blurred — my customers' competitors read the web too. The engineering is described exactly.

01European manufacturer, industrial products

A warehouse management system, built from scratch

Stock, picking, packing, receiving, and reporting for a manufacturer's warehouse, integrated with their cloud ERP and running every day in production.

Before
Orders lived in the ERP, stock lived in spreadsheets and in people's heads, and packing meant walking to a PC to look things up.
After
One German-language web application covers the warehouse routine end to end. Open orders sync from the ERP on a schedule, packers scan barcodes on a tablet, and delivery notes print as PDFs.
Pallet racking in a modern warehouse
In production
  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind 4
  • MySQL
  • Docker

What I built

  • Dashboard with open orders, critical stock, and revenue at a glance
  • Order picking and packing with barcode scanning and delivery-note printing
  • Incoming goods, storage bins, product movements, and inventory valuation
  • Set products whose availability is computed from the bill of materials, not a stock flag
  • ERP integration over OAuth 2.0 with a service client for reads and a user client for actions attributed to a person
  • Read-only external API consumed by the web shop, with the contract kept in the repository
  • Four access levels, password plus passkey sign-in, bilingual release notes shown after every deployment

02Same manufacturer as the warehouse system

A B2B web shop that never holds its own stock

A business-to-business shop whose catalog is public, whose prices appear after staff approval, and whose availability comes live from the warehouse on every page view.

Before
Dealers ordered by email and phone. Availability questions went to the warehouse, and the answer was usually right by the time it came back.
After
The shop stores only the link between a catalog article and its warehouse article codes. Stock, weight, and deliverability are fetched from the warehouse system on each render — by design, with no cache to serve a stale number.
Palletized goods in an industrial warehouse
Launching
  • Next.js 16
  • React 19
  • TypeScript
  • PostgreSQL 18
  • Prisma 7
  • Docker
  • nginx

What I built

  • Public catalog, prices and ordering unlocked per customer account after manual approval by staff
  • Article variants mapped to warehouse codes in the admin area
  • Customer lifecycle: registration, company profile, review, activation, and suspension with an audit trail
  • Optional second factor for customers and staff: authenticator app or passkey, never both
  • Separate staff and customer principals sharing one session and passkey model
  • Two-image Docker release: the app and a schema image whose only job is to apply the database schema on the server

03US home-delivery operation, existing Delphi backend

A delivery app for drivers that works without a signal

An offline-first mobile web app for drivers on the road, talking to the customer's existing Delphi REST backend, plus a live driver map for the office wall.

Before
Drivers ran a native app that was hard to update and the backend, a Delphi TMS XData service over Firebird, was not going to be rewritten.
After
A client-side Next.js application that installs on the phone, keeps the day's deliveries in IndexedDB, and syncs when the network is back. The Delphi backend stayed, and I review every backend commit for compatibility with the app before the customer deploys it.
Delivery truck on a sunlit street
In production
  • Next.js (static export)
  • React 19
  • TypeScript
  • IndexedDB
  • MapLibre
  • Sentry
  • Delphi
  • TMS XData
  • Firebird

What I built

  • Route list with per-stop travel time, item counts, requested windows, and out-of-sequence delivery
  • Map view of the route with the driver's position
  • Text notification to the customer before arrival
  • Signature and document capture uploaded on sync, with duplicate-safe retries
  • Written backend compatibility reviews: every endpoint the app calls traced through the Delphi service contract, controllers, and DTOs
  • Office dashboard reading the Firebird database directly from Node.js: driver locations and routes on a large screen, refreshed automatically

04US public agency, property and inspection program

A twenty-year-old Delphi 7 application, on the web in a week

Delphi 7 and Firebird 1.5 rebuilt as a Next.js application with Prisma and PostgreSQL, the production data migrated, and an offline inspection app for the field.

Before
A Win32 desktop application from 2002: no Unicode, no high-DPI, a database engine whose last release predates the iPhone, and two decades of business rules nobody had written down.
After
A responsive web application with role-based access, property and incident workflows, reports, and a migration tool that moved the real data. A phased approach: analyze the legacy system, design the schema, migrate, verify, deploy.
Row houses along a residential street
In production
  • Next.js 16
  • React 19
  • Prisma 7
  • PostgreSQL
  • Vite PWA
  • WebCodecs
  • S3

What I built

  • Data cleanup tooling the old system never had: address deduplication, duplicate person merge, property consolidation
  • PDF reports, Word templating, Excel export, and email notifications
  • Passkeys and authenticator codes for sign-in; S3 for documents and photos
  • Companion app for inspectors: photos and videos taken on site, stored on the phone, sent when back online
  • Videos transcoded on the phone with WebCodecs to a size that survives a field upload; uploads resumable per 8 MiB part
  • Idempotent batches so a send that dies halfway is simply tapped again
  • Native iOS and Android wrappers sharing the web app's passkey sign-in

05Nutrition sector, existing Delphi multi-tier app

A nutrition tracker with AI label scanning

A Delphi TMS WEB Core front end, XData backend, and Firebird database rebuilt on Next.js, Prisma, and PostgreSQL — then given a camera that reads nutrition labels.

Before
Tens of thousands of rows of real user history in Firebird, a web client that had reached the end of what its framework offered, and every new food item typed in by hand.
After
The rebuild took about four hours of supervised AI work after months of preparing the tooling. Then the feature the old app could never have had: photograph a product's label and the fields fill themselves.
Fruit and vegetable market stall
In production
  • Next.js 16
  • React 19
  • Prisma 7
  • PostgreSQL
  • Vision LLM
  • Chart.js

What I built

  • Food catalog, meals, daily weight, goals, and every chart recreated with dark mode
  • Live data migration tool with a progress UI
  • Vision model reads one or more label photos and returns every field with a confidence score; missing fields come back empty, not guessed
  • Streaming status so the user sees the model working instead of a spinner
  • Model provider is configuration: a cloud API or a local model on the customer's own hardware

06Financial data, small team

An intra-day market data feed with charts

An endpoint that ingests price messages for stock symbols from an Excel-driven source and turns them into intra-day charts, daily summaries, and exports.

Before
Quotes arrived in a spreadsheet and stayed there.
After
A small Next.js service with a validated JSON ingest endpoint, a database of quotes, per-symbol and multi-symbol charts over the last 24 hours, and import and export tools for the team.
Electronic stock price board
In production
  • Next.js 16
  • React 19
  • TypeScript
  • SQLite
  • Chart.js

What I built

  • Validated batch ingest with proper status codes for bad payloads
  • Intra-day and daily views, activity log, logon history
  • Import and export as archives for offline analysis

07FlixEngineering, LLC

Accounting and time tracking for my own company

The ORM application from my book, grown into the invoicing, expense, and time-sheet system that runs my own business.

Before
The Delphi application in Modern Software Development with Delphi was a teaching example: a desktop client, an API, and an ORM.
After
Its data model became a Next.js application I use every day: invoices with shareable customer links, expenses, bank transactions, and the hours that turn into those invoices. Eating my own cooking keeps the advice honest.
Pages of a handwritten medieval ledger
In production
  • Next.js 16
  • React 19
  • Prisma 7
  • PostgreSQL
  • Docker

What I built

  • Invoices and customer statements shared by tokenized links, no login needed by the customer
  • Expense and transaction tracking with reconciliation
  • Time sheets per project that roll up into invoices
  • Docker deployment with scripted backups

08Holger's Code, formerly a PHP site

This website

The page you are reading replaced a PHP site with a custom Next.js application and its own admin CMS. Everything I sell is running under your cursor.

Before
A PHP site with markdown files, no editor, and a growing list of things it could not do.
After
One Next.js codebase, shipped as a Docker image, with content in PostgreSQL and an admin area behind passkeys.
Laptop showing source code
Live
  • Next.js 16
  • React 19
  • Prisma 7
  • PostgreSQL
  • S3
  • Docker

What I built

  • Blog and tutorials in Postgres with an admin markdown editor, drafts, scheduled publishing, and one-click translations into German, Spanish, and Portuguese
  • Photo galleries with server-side uploads to S3, perceptual duplicate detection, EXIF display, and automatic re-encoding of videos so they play on every browser
  • Server-side PDF export for every article, full-text search, RSS, and social preview images rendered on the fly
  • Passkey login for the admin area, first-party click analytics with self-hosted geo lookup, no third-party trackers
  • A paywalled video course platform (in preparation, not live yet), a private offline Delphi documentation library (for my personal use only, due to licensing rights), and a GraphQL API

Photo credits

The photographs on this page are illustrative and do not show the customers' premises. They are served from this site under free licenses: Axisadman, Wikimedia Commons (CC BY-SA 3.0) · Cjp24, Wikimedia Commons (CC BY-SA 3.0) · rawpixel (CC0) · Andre Carrotflower, Wikimedia Commons (CC BY-SA 4.0) · Acabashi, Wikimedia Commons (CC BY-SA 4.0) · nappa, Wikimedia Commons (CC BY 2.0) · Wellcome Collection (CC BY 4.0) · Tirza van Dijk (CC0).

09 — Your project

The next one could be yours.

Tell me what runs your business today and what it should run on tomorrow. In English or German, from Florida or wherever you are.