Livna
A purpose built construction management system that runs a stable-building workshop end to end, from stock rates and parametric products to quotes, scheduling, and job profitability.
Dashboard: jobs on the floor, stock alerts, deadlines, and the rolling workshop schedule
Overview
Livna replaced the spreadsheets and whiteboards behind a horse-stable construction business. Every part the workshop buys, every product it fabricates, and every quote it sends lives in one system, so when a client asks for a stable front 400 mm wider, the price, the weight, the bill of materials, and the workshop hours all update from a single source of truth.
The system covers the full lifecycle: stock and suppliers, a parametric product builder, quoting with modifiers and markup, one-click quote-to-job conversion, capacity-based workshop scheduling, and profitability reporting on completed work.
From stock rate to quoted price
This is Livna's core calculation, live on this page. Drag the product dimensions and watch the change ripple through the bill of materials into the quote. It is the same pipeline the production system runs on every edit.
Stock rates and labour scaling are illustrative; the pricing rules mirror the production engine: per-metre vs per-unit resolution, dimension-dependent part lengths, modifiers before markup, GST last.
Stock
rates & measurementEach stock line is priced per metre or per unit according to its measurement type; the engine resolves which rule applies for every part.
Product: Stable Front, swing door
parametric assemblyPart lengths follow the product's dimensions: rails track product_length,
uprights track product_height, infill count is a formula of both.
Quote
modifiers → markup → GSTCalculation order is fixed: product prices → finish/infill modifiers on the product subtotal → markup → tax. Percentage modifiers never see the marked-up total, which is what keeps the engine free of circular pricing.
The calculation engine
Under the demo above sits the real thing. Every part in an assembly carries a dependency type: product_default_length, product_height, part_length, or a free formula over the product's dimensions, so a single product definition prices any size the client asks for. The pricing rule for each part is resolved from its stock line's measurement type, with a shared client/server implementation so the browser preview and the stored quote can never disagree.
Quotes then layer infill and finish modifiers (per-kg, per-m², percentage, or formula-driven), apply markup to the modified subtotal, and add GST last. Freight is deliberately excluded from markup. The order of operations is documented in the engine itself, because getting it wrong once (a percentage modifier reading a marked-up total) means circular pricing.
Product builder: parametric bills of materials
Products are built from frames: logical groupings of parts that map to how things are actually welded and assembled. Each part references live stock, carries its quantity and length rules, and rolls up to materials, weight, and workshop hours. A searchable parts palette sits alongside, so building a new product is drag, drop, and dimension.
Editing a stable front: assembly frames, material breakdown, workshop hours, parts palette
Quoting: dimensions on the quote itself
Sales don't go back to engineering for a resize. Length and height are editable directly on each quote line; the engine re-prices the assembly, recalculates weight, and updates infill and finish selections in place. A live stock check flags anything the quote needs that the floor doesn't have, and accepted quotes convert to jobs with every line item carried across.
Quote editor: per-line dimensions and weights, global modifiers, convert-to-job
Stock: one ledger for the whole floor
Every stock line carries its measurement type, default dimensions, weight per metre or per unit, and cost channels: the raw inputs the whole pricing pipeline stands on. Low-stock thresholds split quantity and length shortages, stock takes run on a schedule with an auditable log, and a forecast mode projects what's committed if quoted work lands.
Stock ledger: measurement types, cost channels, low-stock and stock-take health
Scheduling: hours against capacity
Workshop scheduling is done in hours, not vibes. Each job’s workshop hours, computed by the same engine that priced it, are laid against a configurable weekly capacity. The timeline shows confirmed and planning work together, flags weeks over 100%, and a horizon view answers the question every workshop manager asks: when can we actually fit this in?
Capacity scheduling: confirmed vs planning jobs against a 200h week
Jobs: from accepted quote to the floor
Accepting a quote creates the job: products, line items, dimensions, and pricing snapshots transfer automatically, so the floor builds exactly what was sold. Progress runs through a fifteen-step weighted workflow, from material order to installation, giving the dashboard an honest percent-complete rather than a gut feel.
Jobs: weighted workflow progress, due dates, planning vs on-the-floor
Reporting: the feedback loop
The Impact Radar analyses every assembly in the system (189 parts across 74 products and over a thousand components) to show which stock the business actually depends on, which is aging, and where vendor exposure concentrates. Job profitability closes the loop, comparing quoted values against actual costs so the next quote's margins are set with evidence.
Impact Radar: part proliferation & vendor exposure
Job profitability: quoted vs actual margin
Twenty seconds on the floor
A quick pass through the dashboard, product builder, quoting, and the workshop schedule.
Engineering notes
Livna is a SvelteKit application on Supabase Postgres with row-level security, deployed to Cloudflare Pages at the edge. Pricing logic ships as a shared client/server module so previews and persisted totals come from one implementation. Production is instrumented with Sentry, and the critical paths (quote-to-job conversion, stock adjustments, the pricing engine) are covered by Playwright end-to-end suites that run against both local and production builds.
Technology
Have a workshop still running on spreadsheets?
Livna started as one. Let's talk about what your operation needs.