All work case study

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.

client Hachi Group · F&Brole Independent · solo buildtimeline Apr 2022 – Aug 2023stack Laravel · ExtJS · MySQL
wms.hachigroup.id
Production Plan screen
the brief

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

ClientHachi Group
DomainF&B · multi-outlet
RoleSolo developer
TimelineApr 2022 – Aug 2023
TypeInternal web app
LaravelEloquentExtJSMySQLQueuesScheduler
stack owned · 3/6
Design
Web
Mobile
API
Data
Infra
scope

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.

screens

Inside the system.

Live production screens. Tap any to enlarge.

under the hood

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.