Every job, routedand visible.
From the moment a job is expected to the minute it is signed off: routing, machine and operator allocation, shop-floor time, tooling custody and stock — on one append-only record that a foreman can read and an auditor can trust.
In use on the floor of a working engineering workshop during acceptance testing. No signed production client yet; we say so plainly.
Pump shaft repair — skim and re-sleeve bearing seats
Plant feed pump down; line stopped · required Tomorrow
CL-02 · SM 02:14:22Crusher eccentric shaft — turn and grind journals
Primary crusher stopped · required Friday
CL-03 · TN 00:47:05- J310044Awaiting customer
- J310042Tomorrow
- J310029Thursday
- J310036Friday
- J310038Next Wed
- J3100512 weeks
Know who has what, and which job it went to.
Job tracking, shop-floor time capture and tool-cupboard stock control for engineering workshops, on one auditable record.
Problems it answers
06 items · heard on the floor
- P.01
“Where is that job and what is holding it?” — one Job Control panel shows the single next action; the boards show what each stage is waiting for.
- P.02
“Who took the last box of inserts, and which job did they go to?” — every issue is on an append-only ledger with the person, the time, the station and the job or cost code.
- P.03
“Special tools walk out and never come back.” — reusable tools are borrowed and returned on the ledger, so who holds what is calculated from the record, not from memory.
- P.04
“The count never agrees with the book, and someone just types over the figure.” — a stocktake locks the items, records counts as evidence, and only an approved adjustment moves stock.
- P.05
“Two jobs on the same machine, or a trainee on a machine he is not signed off for.” — authorisation and single occupancy are checked by the server and enforced by database constraints.
- P.06
“The job took three days but nobody can say why.” — pauses carry a reason and a time class, so productive time, waiting and machine downtime are reported from the events.
Capabilities
08 groups · implemented- 01
Job tracking and Job Control
One place to move a job, one correct next step at a time.
- Validated unique job numbers, priority P1 / P2 / P3 (P1 requires a reason), expected, received and required-by dates, and an ordered production route.
- Lifecycle EXPECTED → RECEIVED → PLANNING → IN PRODUCTION → COMPLETED, with ON HOLD and CANCELLED; a job can be captured while it is still on the way.
- Job Control computes the single next step and refuses a stale page — there are no other movement endpoints.
- Audited exceptions on the same panel: priority change, hold and resume, cancel, and closing a job with unfinished operations only with a recorded override reason.
- Every job page shows the route, live tooling usage from the ledger and an activity feed derived from the audit trail.
- 02
Planning, allocation and authorisation
Only authorised, available people on available machines — enforced by the database, not the dropdown.
- Planning board with per-machine queues; drag-and-drop posts to the same endpoint as the buttons and never moves a job between statuses.
- Machine authorisation as a checkbox tree over workshop › area › machine, with AUTHORISED / TRAINING / SUSPENDED status and validity dates; grants are withdrawn, never deleted.
- Person-only eligibility for fitting, inspection and fabrication stages — “no machine” never means “no person”.
- Planned-time double-booking check (warn or refuse) and live single occupancy — one running operation per person and per machine — backed by database constraints.
- “Who is doing what”: people at work right now, paused work and what it still holds, machines not running.
- 03
Shop-floor time capture
Who worked on what, when, and why it stopped — reproducible from the events.
- Start, pause with reason, resume and complete from the station or from Job Control; every action is an append-only operation event.
- Configurable pause reasons with a category, a time class (productive, operator waiting, machine downtime, non-productive) and what the pause frees.
- Productive, waiting, machine-down and elapsed durations derived from the timeline; after-hours time against a configurable shift window.
- Corrections always carry a note; the original row is never edited and the corrected sequence must still validate.
- Machine status follows the work — AVAILABLE, RUNNING, OCCUPIED — while SETUP, MAINTENANCE, BREAKDOWN and OFFLINE are set by people.
- 04
Tool Cupboard station
Take, borrow and return tooling in a few taps, booked to a job — with no web login on the tablet.
- A shared tablet is paired once with a one-time code; workers sign in from name tiles with a short cupboard password that opens nothing but the cupboard.
- TAKE consumables through Category → Family → Variant picture tiles with “recently used” and “often used by you” strips, a basket, BOOK TO, REVIEW and CONFIRM.
- BORROW a special tool and RETURN it later from MY TOOLS; custody starts and ends on the ledger and is capped at what the worker actually holds.
- RETURN UNUSED puts usable consumables back against the original issue; RETURN DAMAGED records a broken consumable with no stock change.
- Unknown booking references are refused or recorded exactly as typed for the foreman to reconcile, by policy.
- 05
Stock ledger, locations and custody
One append-only ledger; stock never silently negative; mistakes corrected, never rewritten.
- Receive, issue, return, damaged, scrap, adjustment, reversal, transfer and stocktake movements — every one written through a single path that locks the item, checks the balance and writes the audit event in one transaction.
- Per-location balances over a Shop › Storage area › Section tree; “held at” on every list and export.
- Source-first bulk transfers with an all-or-nothing confirm; reverse or correct a wrong book-out in one audited, cross-referenced step.
- Item behaviour — consumable, reusable tool, general — snapshotted onto every ledger row, so reclassifying later never changes what already happened.
- Low-stock signalling on the dashboard, Stock Overview and a Low Stock page.
- 06
Stocktake
A count is evidence; only an approved adjustment moves stock.
- Numbered sessions with a scope (whole location, one category or selected items), blind or guided, DRAFT → COUNTING → REVIEW → CLOSED.
- Starting a count snapshots expected quantities and locks those items at that location against every other movement, whichever screen tries it.
- Count sheets save many lines in one request with per-row version checks; each count is an append-only evidence row.
- Review flags surplus, shortage, custody and not-counted lines; recounts, custody reconciliation and findings are separate actions.
- Count, review and approve are three separate capabilities; summary and variance reports export to Excel or CSV.
- 07
Tooling administration
Shape the tooling catalogue without a developer — and never move stock by accident.
- Category tree of any depth with per-category behaviour, pack size, minimum and target.
- Tool types with attribute templates; product families whose variants inherit defaults until overridden.
- Derived stock codes with a live duplicate check; merge two products through the ledger; delete only what nothing has ever used.
- Manufacturers (with aliases) kept distinct from suppliers (SKU, pack quantity, lead time, latest cost); replacement mapping and compatibility held as data.
- Quick Add at the shelf: WHERE → SEARCH → EXISTING or NEW → COUNT / RECEIVE, with supported manufacturers’ catalogues searched from what is printed on the box.
- 08
Dashboards, TV board and exports
The shop’s state on a wall or a desk — the same numbers everywhere.
- Foreman dashboard with a P1 attention area, overdue and due-today, machines running / available / occupied / down, and low stock; every card links to the rows it counted.
- TV production board that auto-refreshes, shown by a display account carrying no restricted data; priority always shown as text, never colour alone.
- Every data table exports to Excel or CSV with the same filters and sort, so the figure on screen equals the figure in the workbook.
- Performance screens per employee and per machine: planned versus actual, productive / waiting / down split, delay reasons and tooling counts.
- More than 160 permanent error codes, a unique incident reference on every refusal, and a one-tap report-a-problem with screenshot from every screen.
Wenbru Workshop Operations System
Pump shaft repair — skim and re-sleeve bearing seats
Karoo Pump Services·EN8 Ø120 × 340
- 01ReceiveNo resourceCOMPLETED
- 02Turn bearing seatsCL-02 · Sipho Maseko (SM)Machine + operatorIN PROGRESS
- 03Fit sleevesPerson onlyWAITING
- 04InspectPerson onlyNOT READY
- 05DispatchNo resourceNOT READY
- 4 × INS-CNMG-120408-P2507:41 · SMISSUE TO JOB · booked to J310042
- Tool Store A › Insert Drawer 3on hand 42 · min 20
- 06:52CREATEDExpected · P1 · Plant feed pump down; line stopped · Engineering
- 07:05RECEIVEDJob Control · single action · Foreman
- 07:31ALLOCATEDTurn bearing seats → CL-02 · SM · Foreman
- 07:40STARTTurn bearing seats · CL-02 · operation event · SM
Bill of features
08 items| Item | Feature | Description |
|---|---|---|
| P1 attention | Breakdown work first, always as text — never colour alone. | |
| Machine columns | Running and occupied follow the work; setup and maintenance are set by people. | |
| Operator custody | Who is on which job; single occupancy enforced by the database. | |
| Elapsed timers | Derived from START / PAUSE / RESUME events, not typed in. | |
| Hold with reason | Every pause carries a reason and a time class. | |
| Audit trail | Append-only; corrections are new rows. | |
| Tool Cupboard issue | Booked to the job from a shared tablet, no web login. | |
| Stock ledger | One write path; never silently negative. |
How it works
Know who has what, and which job it went to.
05 stages · ENQUIRY → BOARD · LEDGER · AUDIT
Pump shaft repair — skim and re-sleeve bearing seats
Karoo Pump Services·EN8 Ø120 × 340
- 01ReceiveNo resourceCOMPLETED
- 02Turn bearing seatsCL-02 · Sipho Maseko (SM)Machine + operatorIN PROGRESS
- 03Fit sleevesPerson onlyWAITING
- 04InspectPerson onlyNOT READY
- 05DispatchNo resourceNOT READY
- 4 × INS-CNMG-120408-P2507:41 · SMISSUE TO JOB · booked to J310042
- Tool Store A › Insert Drawer 3on hand 42 · min 20
- 06:52CREATEDExpected · P1 · Plant feed pump down; line stopped · Engineering
- 07:05RECEIVEDJob Control · single action · Foreman
- 07:31ALLOCATEDTurn bearing seats → CL-02 · SM · Foreman
- 07:40STARTTurn bearing seats · CL-02 · operation event · SM
Pump shaft repair — skim and re-sleeve bearing seats
Karoo Pump Services·EN8 Ø120 × 340
- 01ReceiveNo resourceCOMPLETED
- 02Turn bearing seatsCL-02 · Sipho Maseko (SM)Machine + operatorIN PROGRESS
- 03Fit sleevesPerson onlyWAITING
- 04InspectPerson onlyNOT READY
- 05DispatchNo resourceNOT READY
- 4 × INS-CNMG-120408-P2507:41 · SMISSUE TO JOB · booked to J310042
- Tool Store A › Insert Drawer 3on hand 42 · min 20
- 06:52CREATEDExpected · P1 · Plant feed pump down; line stopped · Engineering
- 07:05RECEIVEDJob Control · single action · Foreman
- 07:31ALLOCATEDTurn bearing seats → CL-02 · SM · Foreman
- 07:40STARTTurn bearing seats · CL-02 · operation event · SM
- Stage 0101/05
Job receipt
Engineering captures the job with its number, priority and required-by date — even before the work physically arrives.
ENQUIRY → EXPECTED JOB → RECEIVED - Stage 0202/05
Routing
An ordered route of operations across workshops and areas, each stage stating what it needs: machine and operator, person only, or nothing.
STANDARD ROUTE → JOB ROUTE - Stage 0303/05
Allocation
The planning board orders per-machine queues; the assign screen offers only authorised, available operators and warns of double-booking.
WAITING → ALLOCATED - Stage 0404/05
Shop-floor station
Machinists start, pause with a reason, resume and complete their own work; the Tool Cupboard books tooling to the job in a few taps.
START · PAUSE · RESUME · COMPLETE → TIME RECORD - Stage 0505/05
TV board & ledger
The wall board shows priorities, running machines and holds; every tool and insert is on the stock ledger, and every change on the audit trail.
EVENTS → BOARD · LEDGER · AUDIT
Workflows
03 workflows · 16 steps · read left to right
A job from arrival to completion
06 steps
- 01Create
Engineering captures number, description, customer, priority and route — as Expected if it is still on the way.
- 02Receive
When the work arrives the foreman presses the single action on Job Control.
- 03Allocate
Only authorised, available operators are offered for the machine; planned times are checked for double-booking.
- 04Start
The job goes In Production, the machine shows Running, a START event is written.
- 05Pause · resume
The machinist pauses with a reason; the timeline records what the pause freed and for how long.
- 06Complete
Completing a stage releases the machine and makes the next route step Waiting; after the last stage the foreman completes the job.
Taking consumables at the Tool Cupboard
05 steps
- 01Who are you?
Tap your tile and type your cupboard password.
- 02Take
Category → Family → Variant picture tiles, or search; tiles build the basket.
- 03Book to
One of your recent jobs, a current job, a standing code — or type a job number.
- 04Review · confirm
Every line and “Booked to …”; CONFIRM writes all lines or none.
- 05Done
ISSUED with the count; the station returns to the sign-in screen by itself.
Running a stocktake
05 steps
- 01Scope
Choose the location, whole or by category or items, blind or guided.
- 02Lock
Expected quantities are snapshotted; the items are locked against other movements and tiles show “Being counted”.
- 03Count
Type quantities line by line; save all counts in one request.
- 04Review
Accept matches, request recounts, reconcile custody, note variances.
- 05Approve
Post variances to the ledger — the one write that moves stock — then close.
Where it runs
04 surfaces · one record
- S.01Management web applicationBrowser-based and responsive; sidebar by business purpose; every link shown only when you hold the capability and the module is on.
- S.02Tool Cupboard tablet stationA shared, paired shop-floor tablet with touch-first chrome; sign-in by tile and cupboard password, never a web login.
- S.03TV production boardAn auto-refreshing wall display for the shop, shown by a display account carrying no restricted data.
- S.04Installable PWA and Android appAdd to Home Screen for a full-screen app with your icon; an Android wrapper of the same site, distributed internally.
Deployment & stack
07 deployment rules · 06 stack lines · 05 exclusions
- D.01One customer, one isolated cell: its own database, media volume and deployment identity. No shared-database multitenancy, no tenant column anywhere.
- D.02Deployment identity is recorded once and never changes; the environment is explicit and fail-closed — the application refuses to start without it.
- D.03Hosted by Wenbru as a dedicated cell: Docker Compose on a Linux host behind nginx with TLS.
- D.04Releases are built from a tagged commit into a tagged image and verified before deploy; rollback is re-tagging the previous image.
- D.05Daily backups with a signed manifest carrying identity, migration state and checksums; a restore refuses another customer’s backup.
- D.06Four append-only evidence trails: domain audit, stock ledger, operation time record and configuration audit. Corrections are new rows; nothing is edited in place.
- D.07More than 800 automated tests in the documented full-suite runs, including two-connection PostgreSQL concurrency tests.
- Python 3.11 · Django 5.2 — one server-rendered application, no SPA build chain
- PostgreSQL 16 in production; row locking and concurrency tested against PostgreSQL
- Docker Compose: one application container and one database container per customer
- Gunicorn behind nginx with TLS; WhiteNoise static files — no CDN, no telemetry
- PWA manifest and service worker; Android Trusted Web Activity wrapper
- Deliberately not used: microservices, queues, Kubernetes
- We do not run a shared multi-tenant database. Each customer runs in its own cell.
- We do not offer offline mode on the floor. The station refuses to submit rather than guess; it needs your Wi-Fi.
- We do not have a quality / inspection-gate module yet. Routes are one linear sequence today.
- We do not ship an iOS app. Web, Android tablets and an Android wrapper.
- We do not integrate with ERP or accounting packages today, and we do not send supplier orders automatically.
Engineering & workshops
Engineering and repair workshops — machine shops, pump, gearbox and rotating-equipment repair — with tens to hundreds of open jobs at a time
Built for
F.01 – F.04- Machine shops and repair workshops with a real tool cupboard and more jobs than a whiteboard can hold
- Foremen who want one truthful record instead of three spreadsheets
- Shops where breakdown work must be seen first
- Stores staff tired of stock that never agrees with the book
Probably not for
N.01 – N.04- Businesses looking for a full ERP, accounting or job-costing package
- Shops that need inspection gates, QCP or non-linear routing today
- Floors without network coverage, or teams that need offline tablets
- iOS-only teams
Straight answers
Q.01 – Q.06 · plain answers
Bring us a job card.
Send one job the way it runs today — paper, WhatsApp, spreadsheet. We will show you how it runs in Wenbru.