← All work

Web app · 2026

Marchant & Sons

A building contractor’s whole job in one system: a quote form that prices itself, an office that turns enquiries into priced quotes, and a client portal where the customer follows their own build and approves the changes that alter the price.

Try it, live

This isn’t a mock-up. It’s the real application, running on this server with its own database. You get a private copy. Price an enquiry in the office, win it, then approve a variation as the client and watch the contract value move.

Open the live demo →

Trades software usually means a spreadsheet for the quote, a WhatsApp group for the site, and a filing cabinet for the argument at the end. This is the alternative: one database, three honest views onto it.

The customer, before they are a customer

The quote form is the part that wins work. Tick the scope (rear extension, kitchen fit-out, structural opening) and a running estimate adds up in front of you from the range jobs like that genuinely land in. Nobody has to ring anybody to find out whether they are in the right postcode financially, which is the question that stops most people enquiring at all.

The office

Enquiries arrive priced by nobody and leave priced properly. The quote is built line by line as labour, materials and plant, each with a quantity and a rate, so the customer can see what every part costs. A margin goes on the lot, VAT on top of that, and the screen compares the finished figure against what the form originally told them to expect, because that gap is a conversation worth having before it becomes a complaint.

Winning a quote is one button. It creates the job at the quoted total and generates a five-stage payment schedule from it, with the rounding swept into the final line so the parts always add back up to the contract exactly.

Behind that sit a project board by stage, a site diary, and a crew planner: five people, five days, who is on which site.

The client portal

The customer signs in with their project reference and sees the stage timeline, the site diary written on site that day, the payment schedule, and anything waiting on their decision.

That last one is the piece that matters. A variation, meaning a change that moves the price, sits as proposed until the client approves it. Approved, it joins the contract value. Declined, it never touches it. The office dashboard follows the same instant, because both screens are adding up the same rows. That is the whole argument for building software properly rather than keeping two copies of the truth.

The one screen that is a proper app

The quote builder in the office is a Preact application talking to a JSON API. Add a line or drag the margin slider and the cost, the margin, the VAT and the total move immediately, with no page reload.

Two decisions in it are worth knowing about. It never does money arithmetic: every figure on screen came back from the server in the last response, so what the office sees live and what the customer would be sent cannot drift apart. And it is an enhancement rather than a foundation, so the server still renders a complete quote screen out of ordinary forms, and turning JavaScript off costs you nothing but the page reloads.

There is no build step and no bundler. Preact and htm are the published ES modules, served from this site because its content security policy allows scripts from nowhere else. The whole framework layer is about 16KB.

The parts people ask about

The office holds every customer's address, contract value and payment history, so it sits behind a real sign-in: a session, a constant-time password check, and every screen behind it refusing to load without one. The demo prints the password on the login page so you can walk straight in, but the mechanism is the one a client build uses.

The client can also push their payment dates and the handover into Google Calendar, Apple Calendar or Outlook. That is a genuine integration, and it needs no accounts, no keys and no third-party service.

Why it is the heaviest demo here

Because construction is where "one honest source of truth" stops being a slogan. Nine tables, three audiences, and every figure on every screen derived rather than stored.

What it does

  • Self-pricing quote form built from a scope list with real cost ranges
  • Line-by-line quote builder: labour, materials, plant, margin and VAT
  • Winning a quote generates the job and its payment schedule
  • Client portal with stage timeline, site diary and payment schedule
  • Variations the client approves or declines, moving the contract value
  • Crew planner and a project board the office runs the week from
  • Payment dates and handover exported to Google or Apple Calendar
  • Quote builder is a Preact app on a JSON API, with a no-JavaScript fallback
  • Office behind a session login, protecting the customer data it holds
  • Printable quotation on the letterhead, priced without showing the margin
  • Confirmation emails written as real email: tables, inline styles, plain text alternative
  • Two staff accounts: the foreman never receives the contract values