Case Studies/NAZ Marine Financial System
Mission-Critical Legacy Modernization

NAZ Marine: Replacing a 1990s Oracle 10g Terminal with a Local-First ERP

Billing, stock, purchasing, payroll, and Zakat software built solo for a ship-machinery and marine diesel spare-parts enterprise in Karachi β€” replacing an entrenched Oracle terminal with an intuitive zero-dependency system staff aged 40 to 70 mastered on day one.

25,278 LOC47 Production Screens45 REST Endpoints12 Days, SoloOffline-First Local Stack
ClientNAZ Marine (Ship Machinery)
RoleSolo Product Engineer
Delivery12 Days (Concept to Deployed)
Primary TechReact 18, Express, SQLite WAL
<1 minPer Invoice (Down from 5 min)
47Production Screens Shipped
100%Oracle DMP Migration Integrity
0Cloud or Internet Dependencies
00 β€” Motion Reel

The 31-Second System Walkthrough

1080p Β· Production Interface

Live screens pan across master customer ledgers, rapid keyboard sale invoicing, interactive Excel-style payroll sheets, and automated backup exports.

01 β€” The Brief

An Oracle Terminal Nobody Could Get Anything Out Of

NAZ MARINE had run its billing on an Oracle 10g terminal system for years. It worked, in the sense that bills got printed. Everything else about running the shop β€” stock, payroll, Zakat, even a simple quote β€” happened around it, in notebooks and spreadsheets, not through it.

MISSING: No Search
Finding an item meant drilling down Brand β†’ Model by hand, on every single line. One invoice took 2–5 minutes.
MISSING: Mouse-Only Bottlenecks
No keyboard path through any screen β€” slow, repetitive entry for staff who had spent decades on keyboard-driven terminals.
MISSING: No Estimates
No quotation module. Staff faked it with a customer literally named β€œEstimation” β€” which then polluted every sales report, customer list, and total.
BROKEN: Reports Nobody Could Use
A reporting section existed but gave the owner nothing usable. Purchases were logged as raw entries, never real purchase orders.
MISSING: No Native Payroll
Salary, advances, and loans tracked by hand in Excel β€” one workbook a year, seven years running.
MISSING: No Zakat Ledger
Monthly donations tracked in a separate spreadsheet, disconnected from the rest of the business books.
BROKEN: Print, Then Photograph It
No digital export of a bill. The workflow was: print a hard copy, then photograph the printout to send on WhatsApp.
MISSING: No Accounts, No Accountability
Every user shared the same access. No roles, no login trail, no way to know who changed what.
EXHIBIT β€” Actual legacy screen capture during remote diagnostic session. Brand picker with 32 choices and no search capability.
Actual legacy Oracle 10g terminal screen
02 β€” Same Task, Side by Side

Finding an Item: Before and After

Drag the interactive slider. On the left is the real legacy screen a cashier had to navigate for every single line of every invoice. On the right is the same step in the modern system.

BEFORE β€” Oracle Brand/Model Drilldown
AFTER β€” Instant Type-Ahead Search
BEFORE β€” Oracle Brand/Model DrilldownAFTER β€” Instant Type-Ahead Search

2–5 minutes of Brand β†’ Model drill-down per item β†’ under 60 seconds total: type a part code or keyword and go.

03 β€” The Build

Reverse-Engineer the Old System First, Then Rebuild What It Should Have Been

Before writing a single line of the new app, I captured the entire legacy system screen by screen β€” a full frame-by-frame walkthrough of the Oracle terminal β€” and mapped every menu, keyboard shortcut, and workflow it had. The new system had to feel natural to staff who had spent decades on that terminal: same menu structure, same F-key logic, rebuilt underneath and made lightning fast.

It runs entirely on one computer in the shop with no internet dependency β€” SQLite in WAL mode behind an Express API, a React 18/TypeScript frontend β€” and a one-time importer that reads the legacy system’s own .DMP / .LOG backup format directly, cross-checking every table’s row count against the old system’s log before a single record is trusted.

Shipped as a plug-and-play portable Windows build. No Node, no npm, nothing for the shop staff to install.

System Topology Diagram
ClientReact 18 + TypeScript47 screens Β· Vite Β· Tailwind
ServerExpress REST APINode.js Β· 45 endpoints
DataSQLite (WAL Mode)better-sqlite3 Β· Embedded
⟳ Scheduled backups β€” hourly / daily / weekly
↳ Oracle .DMP / .LOG importer, row-count verified
β–£ Windows packager β€” zero-install deploy
⌁ Activity log β€” every write attributed to a user
04 β€” The Screens

The Real App β€” Every Screenshot Is the Live System

Demo data shown throughout (sanitized from the shop’s real books). Click any screen to inspect full resolution in lightbox mode.

Master Entries(2 screens)
Accounts Master (Customer)
Accounts Master (Customer)
Every party you sell to, with bills, items and lifetime total at a glance.
Item Detail β€” Price History
Item Detail β€” Price History
Stock, sales and every price change on one item, charted over time.
Transactions(3 screens)
Sale Invoice
Sale Invoice
Keyboard-first entry, live running total, and F-key shortcut bar at the bottom.
Printed Invoice
Printed Invoice
One keystroke from form to crisp thermal and laser print-ready bills.
Estimate & Quotation
Estimate & Quotation
A real quotation screen β€” reserves no stock and completely isolates reports from dummy accounts.
Records & Reports(3 screens)
Sale Bills Ledger
Sale Bills Ledger
Every bill, filterable, with Print, WhatsApp Image, and Copy actions.
Purchases & POs
Purchases & POs
Real purchase orders with per-line stock reception and supplier tracking.
Sale Reporting & Analytics
Sale Reporting & Analytics
Date-ranged, party-filtered analytics with one-click Excel and PDF export.
Payroll & Zakat(4 screens)
Staff Salary & Advance
Staff Salary & Advance
Pay monthly salary, give cash advances, or issue staff loans per employee.
Interactive Salary Sheet
Interactive Salary Sheet
Excel-like typing (Enter goes down, Tab goes right) replacing 7 years of standalone workbooks.
Physical Salary Envelope Slip
Physical Salary Envelope Slip
Custom slip sized and formatted to fit the shop’s physical payroll cash envelopes.
Zakat & Online Payments
Zakat & Online Payments
Native Islamic charitable donation ledger tied directly into business cashflows.
Backup, Migration & Control Panel(4 screens)
Scheduled Backup
Scheduled Backup
Hourly, daily, and weekly local snapshots with single-click USB drive replication.
Import from the Old System
Import from the Old System
Reads Oracle .DMP/.LOG directly with verified row-count audits before go-live.
User Roles & Scopes
User Roles & Scopes
Granular permissions for Owner, Manager, Accountant, Cashier, and Warehouse.
Tamper-Evident Activity Log
Tamper-Evident Activity Log
Audit trail tracking every save, edit, print, login, and even failed print attempts.
05 β€” Operational Shift

What Actually Changed for the Shop

A direct feature-by-feature comparison between the legacy Oracle terminal and the modernized NAZ MARINE platform:

AreaBefore β€” Oracle 10gAfter β€” NAZ MARINE
Invoicing Speed
Brand β†’ Model drill-down, 2–5 minutes per bill
Type-ahead instant search, under 1 minute
Estimates & Quotes
Faked with dummy "Estimation" client, corrupting sales totals
Dedicated Estimate module completely isolated from ledger
Purchasing Workflow
Raw entries with no real purchase orders or receipts
Structured Purchase Orders, supplier ledgers, and PO export
Staff Payroll
Manual Excel file, one separate workbook per year since 2020
Native Payroll module β€” salary, cash advances, loans, envelope slips
Zakat Tracking
Disjointed paper notebook and spreadsheet disconnected from books
Native Zakat ledger reconciled with cash drawer inflows
Sharing Invoices
Print to paper, then take a phone camera photograph for WhatsApp
Single F10 hotkey creates a crisp WhatsApp-ready PNG image
Access Control
Single shared admin account across all staff, zero accountability
Role-based profiles (Owner, Accountant, Cashier) with audit trail
Price & Master Maintenance
No batch tools; duplicates and naming errors piled up for years
Bulk Price Adjuster, Merge Accounts/Items, duplicate prevention
Stock Ledger
No real inventory tracking; manual physical checks
Full stock ledger with historic purchase & quantity logs
Database Backups
Irregular manual backups done by external IT technician
Scheduled hourly / daily / weekly backups with 1-click export
06 β€” Impact

What It's Worth to the Owner

< 1 min

To generate a sale invoice, purchase invoice, salary voucher, or Zakat entry β€” down from 2–5 minutes of manual item lookup per invoice, with payroll and Zakat now live in the same system instead of seven years of standalone spreadsheets.

47Screens Shipped
45REST Endpoints
12Days, Solo Concept to Deployed
100%Verified Legacy Migration Match
0Internet Dependency Required
7 β†’ 1Years of Salary Spreadsheets Folded Into One System
07 β€” Role & Stack

Built Solo, End to End

Product scope, UI design, backend, legacy data migration, and the Windows packaging that let a shop with no IT staff install it by copying a folder β€” all one person, one build.

Frontend
React 18 + TypeScript

47 screens, Vite, and tailored Tailwind CSS tuned for high information density.

Backend
Node.js + Express

45 REST endpoints executing atomic transactions and strict accounting math.

Data Store
SQLite (WAL Mode)

High-speed local write-ahead log database via better-sqlite3 with zero database server setup.

Migration
Oracle 10g Importer

Reads legacy .DMP / .LOG dumps directly, verified with strict row-count checks.

Exports
html2canvas + Printers

Native PNG generation for WhatsApp sharing alongside hardware ESC/POS and laser printouts.

Delivery
Windows Packager

Zero-install folder structure running without Node or npm required on-site.

Need a Mission-Critical System Modernized?

Whether you are replacing an entrenched legacy database, modernizing an internal ERP, or building complex mobile and desktop systems, I deliver production software fast, lean, and without agency fluff.