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.
01 — European 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.

- 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
02 — Same 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.

- 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
Read more
03 — US 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.

- 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
04 — US 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.

- 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
05 — Nutrition 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.

- 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
06 — Financial 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.

- 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
07 — FlixEngineering, 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.

- 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
08 — Holger'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.

- 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.