CAM · Fiber laser
Mitsubishi GX-F80 · parts come from items with a laser opStores
{{ soHead }}Prototypes
{{ ppDigest }}Open a STEP in the CAD engine and press Start prototype — every step arrives here with its gate closed.
Clear it to see all {{ ppTotal }} prototypes.
Bend deduction
Coupons in, bend table out — millimetres throughout. The table is the mean of its samples, never typed.Each tool is a real piece of steel with a profile, a length made of segments and a load rating. Drop its DXF or STEP and the profile becomes the tool's face — shown wherever the tool is named — rather than a number typed from a catalogue.
A bend needs tooling as long as the flange, and the load has to be inside what the tool and the press are rated for. Both come from the library: the segments you own, and the ratings on each tool.
A tool set is a punch and a die from the library, on a named machine. In an air bend the die decides the inside radius — about 0.16 × V — so swapping the V is a different row in the bend table even with the same punch.
A sheet sold as 1/8″ measures 3.00 to 3.17 mm, and every bend on it is wrong by the difference if you trust the label. Each flat carries the thickness a coupon actually measured; every deduction and every flat pattern reads that figure when it exists.
| Flat | Name | Nominal | Measured | Δ | Coupons | ||
|---|---|---|---|---|---|---|---|
| {{ lk.num }} | {{ lk.name }} | {{ lk.nom }} | {{ lk.meas }} | {{ lk.delta }} | {{ lk.n }} | {{ lk.state }} |
CAD Engine
{{ qeFileLabel }}Open a STEP file: every part is unfolded and timed from the laser cut chart and press-brake feed, PEM / captive hardware is detected from the product tree, and one click reproduces the file's build tree as items with BOM + routing — then quotes it. Drop a DXF instead and it is read as a finished flat: contours measured and timed, material and thickness picked here.
Recognized from the STEP product tree. On Create items this becomes a BOM line at its parent's hardware-insertion op.
Items
{{ itemCount }} items · {{ attentionCount }} need attention| Item | Home | Customer | Sub | Audit | Name | Type | On hand | Available | Cost | Price @1 | Status | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.number }} |
{{ r.name }} | {{ r.typeLabel }} | {{ r.onHand }} | {{ r.avail }} | {{ r.cost }} | {{ r.price }} |
|
||||||
|
Used inside
|
|||||||||||||
Flag rules
The colored flag next to every item is decided by the first enabled rule (top to bottom) whose condition matches. Reorder, recolor, or disable rules — changes apply everywhere immediately.
Operations & costing
Every op the CAD Engine generates is hard-linked to the library tool named here, so its metrics drive the cost. Setting a link also adopts every existing unlinked op on that work centre — orphans stop existing.
Work-center rates drive every operation cost in the system; the operation library is the set of reusable, pre-costed steps estimators pull into routings. Rate changes reprice items instantly and mark their pricing stale.
| Work center | Stations | Crew | Machine $/hr | Labor $/hr | Burdened $/hr | Used by | |
|---|---|---|---|---|---|---|---|
| {{ w.burdened }} | {{ w.usedBy }} |
Cost @10 = (setup ÷ 10 + run) × burdened rate. These operations become the picker when adding steps to an item's build tree. Work you send out is priced from the services library below.
Default alloy per CAD material
A CAD model names a family — "Aluminum", "Mild Steel". The rack holds alloys. This is which one a drawing means when it does not say, so a quote can point at real stock instead of a placeholder.
Outside services
Work sent out — coating, plating, heat treat. The library only names the service and ties its vendors, with how long each takes. What a vendor charges — price breaks, lot charge, freight, minimum — is set on the operation in the item's build tree, where the part and its quantities are known.
Raw Materials
purchased stock — expand a row to manage vendors & pricing{{ sec.label }}
{{ sec.desc }} {{ sec.count }}| Vendor | Vendor PN | Lead (d) | MOQ | Current price $ / {{ rm.venPriceUom }} | |
|---|---|---|---|---|---|
Powder coat
{{ pcCount }}Tick the parts that need coating and send one enquiry to as many coaters as you like. You answer in plain words — where it lives, how rough a life it has, what colour — and the enquiry is written for you in the coater's language.
{{ pcId }}
{{ pcStLabel }}{{ pcSub }}
{{ cqId }}
for {{ cqVendor }}{{ cqCount }} · please give a price per part
Outside Process
{{ ospSummary }}Work sent outside the shop — plating, coating, heat treat. A draft appears when a job with an outside operation is released and goes ready once the ops before it finish. Issuing raises a real PO in Purchasing; the parts then ride the Shipping board (pack → ship on a printed ticket, partials allowed) and come back through Receiving, where booking them completes the operation on the job.
Purchasing Demand
{{ buyCount }} materials need a buy · est. {{ poTotal }}What to buy to fulfill current sales orders: firm demand exploded down every BOM, netted against available stock and min levels, rounded to vendor MOQs. The shadow column shows the extra exposure if open quotes convert — buy it early or watch it.
The same lines go to every vendor named here. Print each vendor's copy from the register, key their answers as they land, and award the winner — that raises the PO.
Requests For Quote
print per vendor · key answers · award the winnerPurchase orders
{{ poShowing }} · {{ poCommit }} committedVendor performance
on-time percentage from the promised date against the date the goods actually landedQuotes
{{ qHeadline }}Live quotes reprice automatically whenever the item's cost, routing or margin changes. Send a quote to lock its price; reopen or revise it if the customer asks for a change.
Customers
Who buys from you, and what they can do in their portal. Portal access lets a customer log in to see their parts, order status live from job tracking, place POs, and upload CAD for new parts — uploads land here flagged for engineering review before any price is shown.
{{ portalGateTitle }}
{{ portalGateLead }}
Ask us for an invitation link and you can choose a PIN of your own.
{{ portalGateNote }}
{{ portalName }}
Something we've never made — we'll review and price it.
Something we've never made — we'll review it and come back with a price.
Drop the STEP here. Engineering reviews the model, builds the process, and pricing appears once approved — the part shows as Awaiting review & pricing in your parts list until then.
Ask for one on the Place an order tab and it will appear here once we send it.
Tell us what is wrong and we will send back an authorisation number. Please do not ship anything until you have that number — parts arriving without one cannot be identified.
Prices shown are suggestions from what you've paid before or your quantity-break pricing. We review every uploaded PO and confirm pricing before production starts.
Prices are live from your quantity-break pricing and stay provisional until we confirm the order.
Prices lock at the total-commitment tier and stay provisional until we confirm. Once approved, each dated delivery is released to production automatically ahead of its date.
{{ poDoneMsg }}. We'll confirm pricing and dates, then it appears in Order tracking.
Vendors
The master vendor list. Attach vendors and pricing to materials on the Raw materials page — this page owns who they are, terms and default lead times.
Laser ops can’t reach the floor without a DXF. Raise the engineering flag: the job stays scheduled, engineering gets a resolve-by date, Arthur chases it, and the job releases itself the moment the cut file lands.
{{ pdocFoot }}
Equipment
Every machine in the shop lives here — lasers, brakes, welders, ovens. Machines with a cut-speed chart drive CAD-based run times; link any machine to an operation on the Operations & costing page.
No machine matches that. Clear the search to see all {{ eqTotal }}.
What this machine charges work by. Operations linked to it get one quantity field per metric — cost work by hours, distance, bends, hits… your choice.
| Thickness | Code | Fast ({{ eqUnitSpeed }}) | Med ({{ eqUnitSpeed }}) | Slow ({{ eqUnitSpeed }}) | Etch ({{ eqUnitSpeed }}) | fp (sec) |
|---|---|---|---|---|---|---|
| {{ sp.thickness }}{{ sp.gauge }} | {{ sp.code }} |
{{ sp.fastF }} | {{ sp.medF }} | {{ sp.slowF }} | {{ sp.etchF }} | {{ sp.pierceSec }} |
{{ itNotes }}
{{ dotReason }}
| Qty | Rolled cost /ea | Margin % | Price | Override | Effective | Actual margin |
|---|---|---|---|---|---|---|
| {{ b.cost }} | {{ b.computed }} |
$ | {{ b.effective }} | {{ b.margin }} |
Prices stay frozen until refreshed — cost changes raise the amber warning but never silently move the sell price. ↻ re-freezes a row at today's cost and gross margin; an override pins the row outright.
Cost last changed {{ costUpdatedAt }} · price last set {{ priceUpdatedAt }}. Editing margin or overrides marks pricing current.
| {{ bc.h }} | ||||||||
|---|---|---|---|---|---|---|---|---|
| {{ br2.label }} | ||||||||
|
|
{{ c2.v }} | |||||||
| Rolled cost /ea | {{ t2.v }} | |||||||
| Outside work added after margin | {{ x2.v }} | |||||||
Live quotes reprice automatically as the item's cost or routing changes, until marked sent — sent quotes freeze at their snapshot.
The last working day a PO can be placed and still reach the operation that needs it — that operation's scheduled start, less the vendor's quoted lead time, on the shop calendar.
| Job | Operation | Qty | Needed | Order by | Lead |
|---|---|---|---|---|---|
| {{ ob.job }} | {{ ob.op }} | {{ ob.qty }} | {{ ob.needBy }} |
|
{{ ob.lead }} |
| Vendor | Vendor PN | Lead | MOQ | Last price |
|---|---|---|---|---|
| {{ v.vendor }} | {{ v.vendorPN }} | {{ v.leadDays }} d | {{ v.moq }} | {{ v.lastPrice }} |
| Vendor | Vendor PN | Lead d | MOQ | Price $ | |
|---|---|---|---|---|---|
| {{ v.vendor }} |
| PO | Vendor | Qty | Price | Due | Status |
|---|---|---|---|---|---|
| {{ p.po }} | {{ p.vendor }} | {{ p.qty }} | {{ p.price }} | {{ p.due }} | {{ p.status }} |
Counted in sheets, per size, at the bin it lives in — that is what someone walking the aisle can verify. Price flows from weight, so $/sheet and the costing rate can never disagree.
{{ puSummary }}
Changing cost marks dependent manufactured items' pricing stale and reprices live quotes — watch the status flags.
| Order | Date | Qty | Unit price | Extended | Status |
|---|---|---|---|---|---|
| {{ so.so }} | {{ so.date }} | {{ so.qty }} |
|
{{ so.ext }} | {{ so.status }} |
This is the one setting the whole system reads — it decides where finished parts go, whether stock levels apply, and how a shortage is answered.
A bin orders only when nothing upstream can fill it. A low float fetches from stores and never buys; stores, and a point-of-use bin with no stores behind it, buy.
{{ cdNote }}
Everything attached here reaches the operator on the floor terminal, where it opens full screen without leaving the job. Scope a document to one operation and only that station sees it.
| Document | Kind | Reference | Date | |
|---|---|---|---|---|
| {{ c.doc }} | {{ c.kind }} | {{ c.ref }} | {{ c.date }} |
The quote is now a sales order. Confirm it on the sales-order board to create its jobs.
{{ fpCond }}
{{ adjNote }}
Inventory
Live stock across the shop — fed by receiving (POs in), job completions (finished parts in, materials consumed) and shipping (goods out). Type a counted quantity to record a cycle-count adjustment.
Sales orders
Every order in one list. Confirm creates the jobs, Ship deducts stock and closes the order; orders whose job finishes on the floor turn Ready automatically. Click a row for lines, PO documents and partial shipments.
Orders land in New — needs confirmation. Jobs are only created when you drag the order to In production.
Documents & labels
Everything the shop puts on paper. Documents are the PDFs customers and vendors receive; labels are what goes on the parts and the racks. The preview beside each is the real renderer — what you see is what prints.
Set the size in inches, pick what appears, and choose where it prints from — shipping labels print from Shipping and sales orders, travelers from job tracking, item and QC labels from the item page, receiving labels at check-in.
Receiving
Incoming material checked in against its purchase order. Receiving a line adds the quantity to stock, records the put-away location, and moves the PO to Received on the purchasing board automatically.
Shipping
Open sales-order lines, staged in two steps: Pack pulls finished parts from stock onto the dock (inventory drops immediately), Ship sends whatever is packed. Pack less than the full order for a partial shipment — the line stays open for the remainder, and unpacking returns parts to stock.
Invoicing
Every despatch raises an invoice against its sales order the moment it ships — one invoice per order per ship day, numbered from the shipment records. QBO sync hooks in here once the ERP is live.
Jobs
Builds parts for inventory with no sales order behind it. The job goes through the same approve → release flow, and finished parts land in stock.
Every open sales-order line becomes a job. Approve it, schedule the due date, then release it to the floor — held jobs vanish from the operators' Ready list instantly.
{{ jdId }}
Operator metrics
This page is owner and admin only.
Operator metrics
{{ omNote }}
Departments
yellow at % · red wd earlyGroup work centers into departments. Each earns points against the smart schedule — on-time and early ops score, behind-schedule ops cost, zero scrap pays a bonus. Points reset monthly; hit an achievement threshold and the reward is on the house.
Point metrics — how ops score against the schedule
Achievements — points thresholds & rewards
Points log
Arthur
His Monday briefing, what the shop looks like right now, and a place to ask about it. Arthur reads the live numbers on this page — he never changes anything.
This week's numbers
the same figures Arthur answers fromAdmin — bug reports & ideas
Dashboard
Jobs running over estimated cost
Quoted vs actual — finished jobs
Late-risk alerts
Schedule
{{ schedSummary }}A plan rebuilt from the floor as things change: remaining op time is dispatched to each work center — hot jobs first, then your drag order, then earliest due — on the shop calendar. Drag cards to re-prioritize; edit due dates and hot flags right here.
Parts do not arrive at the next station the moment an op ends — they are moved, counted and queued. The scheduler leaves this gap after every operation, and every promised date, quote lead time and pull-in answer is built on it.
The run order re-plans and re-freezes at each time below. No times = shift end. It always also re-plans at first open of the day, on HOT arrivals and material receipts, or by hand with Recompute.
Work-center queues
Quality
{{ qStd }}Raised from the floor by whoever was holding the part. A flag is not a nonconformance yet — decide whether it becomes one. Closing it releases anything held and lets the operator finish the op.
Every nonconformance, from checkpoint failures on the floor to customer returns and bad vendor material. Records carry containment, root cause, corrective and preventive action, disposition and the cost of the failure.
A customer sending parts back, authorised against the order line they came from. Every RMA raises an NCR, so root cause and corrective action are recorded where an audit expects to find them.
Settings
Shop-wide switches. These change how the whole system behaves, not one page of it.
Locations
{{ locTotal }}Every place stock can sit, nested as deep as your building needs. Zones are drawn on the shop plan; everything below them is racks, shelves, carts and bins. Receiving, job completion and shipping all write to these locations.
{{ locMvNote }}
Messages
{{ msgUnreadN }} unreadChannels and direct messages for talk, tickets for issues. Anything the floor flags, engineering freezes, quality raises or purchasing shorts lands here as a ticket you can pass to a person and walk through open, acknowledged, in progress and resolved.
Backup & restore
A complete copy of the system in one file. Take one before every update, and keep it somewhere other than this computer — a backup that lives on the machine it is protecting is not a backup.
Parts, orders, jobs, purchasing, quotes, messages, customers, users, settings and the photographs.
{{ bkLastNote }}
Checks the logic, not the database: every number the money depends on, computed by the same functions the app uses, plus the corrections a person makes — change the yield, the consumption, a work-centre rate, the margin, the material price, the cut time — and whether each one reaches the price. Then it opens all 35 screens and proves each one painted, which is why the full run takes about half a minute; Numbers only skips that and finishes instantly. Runs on a copy of the shop, so nothing it does is saved.
{{ wfNote }}
{{ wrNote }}
The database check below proves the connection. This proves the app's own path: it creates a record, edits it two ways, deletes it, and re-reads the shop from the server after each step. Captured is the shape that breaks quietly — a handler that grabbed the record before saving — and it is how a renamed user reverts or a deleted order comes back.
Run this after every update. It writes a test record to each table, changes one field, reads it back, confirms the change stuck, and deletes it — retrying once if the connection drops mid-request. Nothing it writes appears anywhere in the system.
{{ stFailNote }}
{{ stLiveNote }}
Kept inside the system, without being asked: one before the app changes under you, one at the start of each working day. The last six are held; older ones drop off. They carry everything except CAD files — the download above is still what protects you against losing this computer.
Users & roles
{{ uCount }}You can add and manage floor operators. Full user & role administration needs the "Manage users & roles" permission.
What a person costs, without individual wages in the app. Standard cost always uses the work center's labour rate, so quotes stay stable; actual cost uses the grade of whoever did the work, which is what makes a welder on the brake show up as a labour variance instead of a saving.
Preset roles ship with sensible permissions — adjust any of them, or duplicate one as a custom role. The Admin role is locked so you can't lock yourself out.
Open this on a shop tablet and it lands on the floor sign-in every time — no office door, and no way back to one. Bookmark it, or add it to the home screen.
Clock the floor crew out after this many minutes without activity on the kiosk — walk-away protection. Office and admin sessions are never signed out; you sign in once. 0 turns it off.
An operation left running is closed at the end of the shift it was started on — but only after this long with no sign of life on it. The window lets people stay late without being cut off mid-job: anything logged on the op restarts the countdown. The shift-end figure is what stands, and the extra time is held for the operator to confirm. 0 turns it off.
{{ stubName }}
This module is scoped but not built yet — we started with Items, the core the rest hangs off. Quoting, jobs, the floor kiosk and user roles come next.