From manual work to a business-critical order portal

Zetprofiel is a steel bending shop in Heteren where virtually every order calls for a unique product: a different shape, different dimensions, a different coating. The business runs on craftspeople who feel exactly how far a sheet must stretch to close tightly on a sandwich panel, and who can determine the developed length (unfold). That makes the work valuable, but also fragile and hard to scale.

Technieken
React, TypeScript, AWS
Infra
AWS, Infrastructure as Code, CI/CD
Expertise
Backend, Frontend, DevOps

Client

Zetprofiel
Industry
Manufacturing
Location
Heteren

Team

Roland
Adriaan
Bauke
Heleen

Phased rollout

First internal, then self-service

The customer portal features are already there, ready to go live, but the outward rollout runs in deliberately chosen steps. The team digitizes internally first. Only then do customers order online themselves, without throwing the trusted work process overboard in one go.

  • Typed, strict contracts. One validated API contract is the source of truth, from which the frontend client is generated fully automatically. This helps us catch differences between backend and frontend, such as a field with the wrong type, during the build.

  • Framework at the edges. The business logic, the price, the order flow, the underlying physics, sits completely apart from the web framework. The framework lives only in thin adapters at the edge, so you can test the logic independently and take it to another domain. A later technical choice does not touch the core that way.

  • Loose coupling, tight boundaries. Components talk to each other exclusively via clear contracts. That makes the system agile: you add new functionality without a change rippling through the whole codebase.

Zetprofiel is a steel bending shop in Heteren where virtually every order calls for a unique product: a different shape, different dimensions, a different coating. The business runs on craftspeople. They feel exactly how far you must stretch a sheet to close tightly over a sandwich panel and can determine that unfold on the spot. That makes the work valuable, but also fragile and hard to scale.

Zetprofiel

The situation

Fast service that leans on manual work

At Zetprofiel there is a clear promise: an order that comes in in the morning often still lies on the construction site that same afternoon. Every order is then still drawn, calculated, and priced by hand by a craftsperson.

Zetprofiel wants to keep delivering quickly and allow customers to order online directly. The software therefore needs to perform calculations that craftspeople currently do by hand, such as the flat pattern dimensions and pricing. For many customers, this will be their first time ordering bent sheet metal online.

We draw everything in 2D and calculate all dimensions and the kilos ourselves. A price hangs on that. The app must do all of this itself.

The question behind the question

Further than an order widget

From day one it was about more than handling orders. The portal had to digitize the whole craft: the drawing, the unfold, the weight, the price, and the work order. It had to connect to how Zetprofiel already works with customers and functions efficiently internally. That choice was fixed; it was our job to keep that line sharp throughout the whole trajectory.

A ready-made order widget could be installed quickly, but offered too little support for the company's own design, reference photos, customer-specific pricing, and work orders. The custom portal needed to fit that existing way of working.

That is why we kept the direction crystal clear. First put the core in place solidly, connecting to the existing process, in phases. We deliberately left the link to the bending machines out of version one: first you digitize what already runs, then comes the step toward the machine.

Approach

Craft knowledge translated into deterministic software

The calculation chain

From drawing to work order

Every order follows the same lines: you draw on the canvas, the unfold with bend deduction follows according to DIN 6935, weight and price are locked at ordering, and production documents for the floor come out.

The portal runs in the browser around a central drawing module. In it you build a profile directly on the canvas or adjust a standard shape. Underneath runs a pure geometry core that works entirely without a screen and is extensively tested; that decoupling makes ongoing maintenance reliable. From that core we calculate the developed length with the bend deduction as laid down in DIN 6935. The bending physics thereby lives in tested functions and no longer in a spreadsheet or in someone's head.

Weight and price flow from the same data. The price build-up stays deliberately deterministic: material, operations, coating, linked to the customer-specific tier. It is all frozen at the moment of ordering. An old order can later be reconstructed exactly and a price change can never adjust existing work retroactively. Around every order the system generates a work-order PDF, including a QR code for the shop floor, plus an optimized cutting list to keep material waste small. We link invoicing robustly to the accounting package (SnelStart), a link that withstands repetition and error recovery.

We deliberately choose a few technical starting points, so ongoing development stays manageable in the long run:

  • Typed, strict contracts. One validated API contract is the source of truth, from which the frontend client is generated fully automatically. This helps us catch differences between backend and frontend, such as a field with the wrong type, during the build.
  • Framework at the edges. The business logic, the price, the order flow, the underlying physics, sits completely apart from the web framework. The framework lives only in thin adapters at the edge, so you can test the logic independently and take it to another domain. A later technical choice does not touch the core that way.
  • Loose coupling, tight boundaries. Components talk to each other exclusively via clear contracts. That makes the system agile: you add new functionality without a change rippling through the whole codebase.

The concrete result for Zetprofiel is a foundation that can continue flexibly and robustly, with as little Glossary · In briefvendor lock-inVendor lock-in is dependence on one supplier that makes switching to an alternative difficult, expensive or disruptive.Read more as possible. The software grows with the company that way.

What we add

  • Deep domain in code The bending physics according to DIN 6935, the unfold calculation, and the price build-up sit in tested, deterministic logic. No spreadsheet, no floating knowledge, but repeatable software that always gives the same result.

  • Honest advice that saves work Instead of a quick order widget we chose a custom portal, with a machine link later. That solves the real problem and avoids an interim solution you still have to replace later.

  • A foundation you can keep building on Typed contracts and logic that sits apart from the framework make it safe and manageable to add new functionality, and keep the customer free of lock-in.

Quality and continuity

Built to keep running

Software that day-to-day production depends on is not judged only on how it performs now, but especially on the certainty that it keeps doing so. The calculation and pricing logic sits fully under a Glossary · In brieftest coverageTest coverage measures which parts of the code execute during automated tests. It can count lines, functions and branches, among other things.Read more that guards that a change in one formula does not secretly introduce an error in another. Every code change runs through a tightly set Glossary · In briefCI/CDCI/CD is a way of working in which teams frequently merge software changes, check them automatically and use a defined sequence of steps to prepare or deploy them to production.Read more with least privilege to a separate acceptance and production environment. No change goes live without first being checked and tried. The full infrastructure runs on AWS and is recorded as Glossary · In briefinfrastructure as codeInfrastructure as code (IaC) is a practice in which infrastructure is described in configuration files and created and managed using software.Read more, in the customer's name. That last point is crucial for transferability and clear ownership.

A foundation to build on further

The portal runs in production. Zetprofiel's team now uses it daily to draw, calculate, and process orders.

So change management, not only technology. More important still is what stands now: a foundation to build on further. Customers who order online directly, tighter planning for large orders, and in time a link that further automates the workshop toward the machines. That way Zetprofiel can keep doing step by step what it is good at, while the software takes over more and more work.

We are very satisfied with how you pick everything up and how the whole takes shape.

Jeffrey van der Lugt — Planning bij Zetprofiel

Key takeaways

  • Deep, manual craft work translates well into deterministic, reliable software, as long as you truly understand the domain and do not only put a form together.

  • Honest advising pays off: a custom portal with a later machine link solved the real bottleneck where a ready-made widget would stall.

  • Typed contracts and logic apart from the framework ensure software stays flexible and robust to continue developing, with as little lock-in as possible.

  • A phased rollout spares day-to-day operations: first digitize within your own walls, then self-service.

OUR WORK

What else we do

CONTACT

Get in touch with us

Have a question or want to discuss your software? Leave your details and we will get back to you soon.