Skip to main content
All work
Manufacturing ERPWeb + Mobile

Darmabox

Consolidating work that used to live across several disconnected apps — from costing a custom box to the accounting entry posting itself.

Form kalkulasi dan pratinjau tata letak plano berdiri berdampingan, jadi berapa box yang muat per lembar terlihat selagi angkanya masih bisa diubah — bukan setelah penawaran terlanjur dikirim.
Client
Darmabox — custom box manufacturer, Malang
Industry
Packaging manufacturing
Our role
Product definition, system architecture, and full development — web, server, and floor app
Duration
8 months (November 2025 – June 2026)
Year
2026
StackGoVue 3FlutterPostgreSQLRedisDocker

Scope at a glance

18

modules in the agreed scope

3

connected apps: office web, server, floor app

8

user roles with separately governed access

14

cost-rate tables the owner can edit without a developer

The problem

Darmabox's daily work was spread across several third-party apps that did not talk to each other. Order data lived in one place, invoices were produced in another, the production board in a third. The same figures were retyped repeatedly, and when the three disagreed, nobody could say which was right.

The sharpest pain was costing. The price of a custom box depends on dozens of interlocking cost components — sheet size, how many boxes fit per sheet, dies, die-cutting, lamination, screen printing, hot stamping, embossing, spot UV, PVC windows, glue, dividers. All of it was worked out by hand in spreadsheets.

The consequence was not merely slowness. The answer changed depending on who did the maths, and there was no way to confirm which number was correct before a quote had already gone out to the customer.

Constraints

  • Material prices move constantly. Cost formulas had to be editable by the owner, without calling a developer every time a rate changed.
  • Production-floor operators share tablets, and the signal down there cannot be relied on.
  • Customers communicate over WhatsApp, not through an app. The system had to meet that habit rather than fight it.
  • Every monetary rule follows Indonesian practice: VAT, deposits, staged deposit-and-settlement invoices, and addresses based on the official administrative hierarchy.

Approach

The costing engine was separated from the database

The costing function was written without database access — numbers in, numbers out. This makes calculations easier to test without setting up database state. On this project, the test code grew to roughly twice the size of the calculation code itself.

Two calculation paths are compared through testing

The system computes the same figure along two paths: one produces the total, while the other produces the itemised breakdown. A dedicated test checks that they remain identical and helps identify differences before a change is released.

Every cost rate moved into tables the owner can edit

Fourteen kinds of rate — cutting, die-cutting, dies, glue, screen printing, lamination, hot stamping, embossing, spot UV, windows and more — are not buried in code but stored as data, editable from a menu. A rise in material prices no longer means waiting for a developer's release schedule.

Selling prices follow an approval flow

Cost and selling price are separated. Staff can run calculations, while the selling price passes through draft → pending approval → approved, with specific permissions for the owner and finance team. This helps maintain control over pricing and margin.

One figure flows through the entire chain

A calculation can be saved as a product and then used in an order, production card, delivery note, invoice, payment, and accounting entry. This flow reduces the need to re-enter the same figures in several places.

WhatsApp is disabled in test environments

The system runs in three separate environments, and WhatsApp is disabled in the two non-production environments. This separation reduces the risk of test messages reaching customers.

Screens

The costing form and the plano layout preview stand side by side, so how many boxes fit per sheet is visible while the numbers can still change — not after the quote has already gone out.
The costing form and the plano layout preview stand side by side, so how many boxes fit per sheet is visible while the numbers can still change — not after the quote has already gone out.
Each material's reference price is stored as editable data. The right-hand panel explains which figure is used while no actual cost is available, making the basis of the estimate easier to review.
Each material's reference price is stored as editable data. The right-hand panel explains which figure is used while no actual cost is available, making the basis of the estimate easier to review.
One order carries its status, its invoices, and its accounting entry on the same page. A deposit is deliberately booked as customer funds held rather than revenue until the goods ship — the books follow when the work is done, not when the money arrives.
One order carries its status, its invoices, and its accounting entry on the same page. A deposit is deliberately booked as customer funds held rather than revenue until the goods ship — the books follow when the work is done, not when the money arrives.
A production card draws down stock only after each material is approved individually, and a shortfall is flagged on that material's own row — not as a single banner at the top of the screen that is easy to scroll past.
A production card draws down stock only after each material is approved individually, and a shortfall is flagged on that material's own row — not as a single banner at the top of the screen that is easy to scroll past.
The same calculator runs in the floor app, breakdown included. The per-piece cost is pinned to the bottom of the screen so it stays readable while the form is scrolled — out on the floor that figure is what someone is after, not the form.
The same calculator runs in the floor app, breakdown included. The per-piece cost is pinned to the bottom of the screen so it stays readable while the form is scrolled — out on the floor that figure is what someone is after, not the form.
The production board and its task detail travel to the phone, so a job's status can be changed from the production floor without walking back to an office computer.
The production board and its task detail travel to the phone, so a job's status can be changed from the production floor without walking back to an office computer.

Observed outcomes

Work that used to be spread across several apps now runs in one system: costing, sales, purchasing, inventory, the production board, and double-entry bookkeeping all sit in the same place and share the same numbers.

Costing became a more standardised process. Rates are stored as shared data, the formula is applied consistently, and each result can be traced component by component.

The owner can follow the business from a phone — dashboard, stock, orders, even approving purchase orders — without sitting at an office computer.

An honest note: the business impact has never been measured. We hold no before-and-after data, so we make no savings claims on this page.

Ready when you are / →

Working through a similar need?

Tell us about the situation. Together, we can map the need, possible approaches, and an initial scope.

We usually reply within one business day.