Warehouse Management System
for Hachi Group
A multi-outlet warehouse and central-kitchen platform for an Indonesian F&B group — procurement, stock movement, recipe-based production planning, and inter-warehouse transfers in one system, built end to end on Laravel and ExtJS.

Spreadsheets don’t scale to a restaurant group.
Hachi Group runs multiple restaurant outlets fed by central kitchens and warehouses. Tracking ingredients, work-in-progress, and finished items across all of them by hand breaks down fast — especially with perishable F&B stock, recipes, and daily transfers between locations.
They needed one system to standardize the item master across every outlet, run procurement from dozens of suppliers, move stock between warehouses and outlets, plan production from recipes, and reconcile exactly where every unit went each day.
I built it as a single independent project — the Laravel backend, the ExtJS front end, and the MySQL data model — designed to hold up under high-volume daily operations.
at a glance
One system, the whole operation.
The platform covers the full warehouse lifecycle — from raising a supplier PO to reconciling closing stock.
Procurement
Pemesanan Supplier, Penerimaan Supplier, Return Supplier — with approval status.
Inventory & opname
General Inventory, Partial Daily, Partial Weekly, BAP Form.
Production
Production Plan, Produksi, Item Production, Forecast Penjualan.
Movement & transfers
Outlet & warehouse orders/dispatch, Stock Transfer, Perpindahan Lokasi, Kitchen Receiving.
Reporting
Pergerakan Stok, Laporan & Tools, Excel export.
Master & access
Shared item master, multi-outlet / multi-warehouse, department dimension, admin roles.
Inside the system.
Live production screens. Tap any to enlarge.

Production Plan. Recipe-driven planning. A WIP item like Bihun Paket explodes into its recipe items and raw materials, with per-outlet, per-warehouse, per-department context — then generates the warehouse PO needed to produce it.

Stock Movement. One reconciled ledger per item — opening stock through receipts, outlet shipments, supplier returns, BAP, location moves, production, transfers, and sales, all the way to closing stock — across hundreds of SKUs and every outlet.

Supplier Purchase Orders. Multi-outlet, multi-supplier procurement with approval states (Approved / Closed), generated PO numbers tied to each warehouse, and printable order documents.
Built to hold high-volume days.
The hard part of a WMS isn’t the screens — it’s keeping a fast-moving stock ledger correct across many locations.
Laravel core
Eloquent ORM, middleware, queued jobs, and the task scheduler handle heavy writes and background processing without blocking operators during peak hours.
ExtJS workspace
A tabbed, multi-document UI with server-side grids — paging and filtering over hundreds of SKUs — plus one-click Excel export for the ops and finance teams.
Multi-location data model
A shared item master with per-location stock ledgers, supplier and warehouse entities, and outlet / warehouse / department dimensions on every movement.
Recipe / BOM engine
WIP items decompose into recipe items and raw materials, so a production plan can explode finished dishes into the ingredients to order and produce.
Reconciling ledger
Every movement type folds into a single opening → closing balance, so Stok Awal + ins − outs = Stok Akhir always ties out per item, per day.
Approval workflows
Procurement and transfers move through explicit states (Approved / Closed) so warehouse and finance stay in sync on what’s committed.