Skip to content
Ramdan Firdaus
←All work

01Side project

Factory Floor ERP

Barcode scans, FIFO boards and smart lamps running a real factory.

For
Freelance, for a rubber parts manufacturer in a bonded zone
Role
Top contributor, full stack
Period
2024 → Now
WAREHOUSE / RAW MATERIALFIFO BoardMQTT CONNECTEDSCAN LOTRM-2409-017NBR COMPOUND · 25.0 KGQTY VALIDRACK MAPLAMP ON → C-04A-01A-02A-03A-04A-05A-06B-01B-02B-03B-04B-05B-06C-01C-02C-03C-04C-05C-0601WEIGHINGDONE02FIFO BOARDSCANNED03RACKWAITING04STOCK INWAITING$ publish lamp/C-04/set {"state":"ON"} ▍

Illustration redrawn for this portfolio. Not a screenshot, no client data.

200+
backend modules in the system
4
scan stages guarded by one state machine
13
Redux Toolkit slices behind the React pages
5
production stages traced per unit

Context

A manufacturing ERP covering incoming material, the warehouse, press lines, subcontractors and customs reporting. I'm the top contributor on a small team and built most of the React front end plus the warehouse and reporting modules behind it.

The factory sits inside a bonded zone, so every gram of material has to be traceable from the purchase order to the customs report. The system has grown to more than 200 backend modules on CodeIgniter 3 (HMVC) and MySQL, with React pages embedded where the workflow needs to feel fast.

Most of my work lives on the shop floor: operators with barcode scanners, a FIFO board, racks with lamps, and supervisors who need to see what is stuck. The software has to be correct first and forgiving second, because a wrong scan becomes a wrong stock number.

Stack

  • PHP
  • CodeIgniter 3 (HMVC)
  • MySQL 8
  • React
  • Redux Toolkit
  • Ant Design
  • Webpack 5
  • MQTT
  • PhpSpreadsheet
  • Docker

Interactive

Try to skip a stage

A simplified model of the real scan flow. Each station only accepts a lot in the right status, and the FIFO board scan is what switches the rack lamp on.

Lot

RM-2409-017

NBR compound, 25.0 kg

ORDERED

Rack lamps

A-03
A-04
A-05
B-03
B-04
B-05
C-03
C-04
C-05

Waiting for a scan. Start at Weighing, or try to skip a stage.

Scan the stations in order.

What I built

  1. 01

    Four stage scan pipeline

    Weighing, FIFO board, rack and stock in, modeled as a status guarded state machine. A lot can only move to the next stage, and lot level quantity checks stop incoming material from being used twice.

  2. 02

    Smart lamps over MQTT

    Scanning an order at the FIFO board lights the lamp on the matching rack. I wrote a dependency free MQTT publisher in PHP over raw TCP sockets, and isolated broker outages so a dead lamp never blocks a scan.

  3. 03

    Incoming material chain

    Lot ordering with real time FIFO depletion tracking, delivery schedules linked to purchase orders with data snapshots, and a monitoring dashboard that flags negative stock, fully used lots and expiry.

  4. 04

    Subcontractor billing

    Daily billing that prices checking and finishing output against per part price lists and splits totals per press line, plus productivity dashboards with daily completion rates per subcontractor.

  5. 05

    WIP completion dashboard

    Traces every production unit across five stages from press to packing, surfaces the incomplete ones and offers a bulk fix that realigns skipped stage records.

  6. 06

    Customs reporting

    A spare part stock balance report built on a stored procedure with opening balances anchored to stock opname, date indexes for speed and a configurable reporting cutoff.

  7. 07

    Reconciliation tooling

    Transactional CLI scripts with a dry run mode that true up the material ledger against physical counts. They fixed a live accounting mismatch without a risky manual edit.

  8. 08

    Login hardening

    Captcha on login with a provider switch between a hosted challenge and a self hosted image grid challenge that needs no external service.

Next case study

Bee Media Book Inventory→

Warehouse stock control with a storefront style public catalog.

Bee MediaKatalogKoleksiPENERBIT BEE MEDIATemukan buku favoritmudi katalog kamiCari judul, penulis, ISBN, atau kode...CariKoleksi cerita anak →Rp 85.000Stok 24Rp 62.500Stok 8Rp 120.000HabisRp 48.000Stok 51Rp 99.000Stok 3