All work

Professional work / AssetWorks LLC / 2026

Replatforming a field asset-validation product

Moved a legacy Oracle and SOAP web product to a modern TypeScript stack, without breaking the mobile apps field teams were already using.

Went live in October 2026

16
mobile API endpoints covering the full mobile contract
4
codebases audited to define the migration surface
1 flag
per device for instant rollback to the legacy backend
12
destructive actions audited for data-loss safety

The problem

Field teams scan physical assets and confirm their records with mobile apps that talk to a legacy Oracle database through Java SOAP services. The web product needed to move to a modern stack, but devices in the field could not all be updated at once, and any break in the mobile contract would stop people in the middle of an inventory.

My role

Primary developer on the new web application and the bridge that lets the existing mobile apps run against it: architecture, implementation, migration design, and verification.

  1. Field devices
    • Android app (Kotlin)
    • iOS app (Swift)
    • Hardware scanners and RFID
  2. Legacy path
    • Java SOAP services
    • Oracle database
  3. Bridge
    • Per-device backend flag
    • 16-endpoint mobile API
    • Dual-write device registration
  4. New platform
    • Next.js web app
    • Fastify services
    • PostgreSQL
    • AWS S3 images
Migration path. Existing mobile apps keep their contract while traffic moves, device by device, to the new platform.

What I did

  1. Find the real contract before replacing it

    Ran an AI-assisted audit across four codebases (web, Java web services, database code, and the Android/iOS apps) to pin down which SOAP methods the mobile apps actually call. Several methods that existed in the code were not used at all, which narrowed the work.

  2. Rebuild on Next.js, Fastify, and PostgreSQL

    Rebuilt the web app as a Next.js frontend over Fastify services and PostgreSQL, run locally as a multi-service Docker Compose stack. Replaced mock screens with live queries and worked through PostgreSQL edge cases during integration.

  3. Bridge the mobile apps, with rollback per device

    Built a 16-endpoint mobile API covering the full mobile contract: auth, subsets, field settings, validation download and upload, cycle counts, sync, and lookups. I compared three migration options and chose routing inside the existing service, controlled by a per-device flag, so any device can be switched back instantly.

  4. Move data and files deliberately

    Designed a new PostgreSQL schema for mobile device registration to replace legacy Oracle tables, with a dual-write path during the transition. I chose schema-level isolation over a second database so cross-schema joins, backups, and monitoring stay simple. Moved image attachments to AWS S3 with presigned downloads.

  5. Protect people from data loss

    Audited every destructive action in the app (12 in all) and added confirmations where three were missing. Added a recovery-restore feature that runs as one atomic transaction and checks that a snapshot belongs to the same customer before restoring it.

Stack

  • TypeScript
  • Next.js
  • React
  • Fastify
  • Node.js
  • PostgreSQL
  • Docker Compose
  • AWS S3
  • Oracle (legacy)
  • SOAP (legacy)
  • Tailwind CSS