Skip to content

Kentucky-ai/opentakeoff

Repository files navigation

OpenTakeoff

The free, open-source takeoff canvas for flooring — open a plan, trace your areas, export your quantities.

Open the plan. Set the scale. Trace the rooms. Read the report. Export the quantities. No account. No upload. No install. It runs in your browser.

License: Apache 2.0 Live demo Built with React + Vite

▶ Try the live demo · Quick start · Features · Deploy it · Build on top · Contributing


OpenTakeoff — a flooring takeoff in progress on a floor finish plan

Until now there has been no open-source, web-based takeoff canvas at all — let alone one built for flooring. OpenTakeoff is that tool: a free, open-source alternative, given to the trade.

It started as the takeoff module of a private flooring estimating app, then got carved out, cleaned up, and released. This is the real measuring engine, not a demo — including One-Click Area, the flood-fill room tracer the $300/mo tools gate behind a subscription.

Built for flooring, useful for any takeoff. The measuring engine is general — area, linear, count, and deduct work on anything you'd scale off a plan (drywall, paint, concrete, sitework). What makes it flooring's tool is the finish-aware layer on top: conditions with CAD hatches, per-condition waste %, square-yard output, and a coverage-rate materials buy list nobody else hands the trade for free.

And there's nothing to set up. Open the page, drag in a plan, start measuring. Your PDFs and your takeoffs never leave your machine — there is no server in the loop.

Quick start

You don't need to install anything to use it — just open the live demo, drag in a plan, and go.

To run it yourself:

cd web
npm install
npm run dev        # http://localhost:5173

Drag demo/sample-plan.pdf onto the canvas. The scale auto-detects; pick a condition, hit One-Click Area, and click inside a room. Open Report to see the breakdown and export CSV / JSON.

Features

1. Open anything, instantly

Drag in a plan PDF, an image (a scan or a screenshot), or a whole .zip plan set straight off a bid platform. Zips are unpacked and images wrapped to PDF in your browser — multi-page and multi-sheet, with up to 4 sheets side-by-side. No upload step, no conversion service, no account.

2. A real measuring engine — not a counter with a ruler

One-Click Area is the headline: click inside a room and the linework bounds it, the polygon traces itself, and the vertices snap to true corners. Plus the full manual kit — Area, Rectangle, Linear, Surface-Area (walls), Count, and Deduct (for columns, voids, and openings). This is the same engine pulled out of a commercial estimating app, not a toy reimplementation.

3. Scale that matches real plan sets

Auto-detects the drawn scale note off the sheet, or calibrate from any known dimension (click two points, type the real length). Scale is remembered per sheet — because plan sets are never one uniform scale, and tools that assume they are get the numbers wrong.

4. Conditions that read like the drawing

A condition is one finish (LVP, carpet, tile, base, …). Each carries a line/fill color and a CAD hatch pattern (plank, herringbone, tile, terrazzo) so the canvas looks like the real drawing — plus a per-condition waste %, an ×N multiplier for repeated identical units, a default height for wall traces, and a thickness that turns a linear run into border/feature-strip SF.

5. Assemblies — the supporting materials, done right

Per condition, list the consumables that actually go on the order: adhesive, sealer, polyurethane, thinset, grout, cove-base adhesive. Each has a coverage rate and a basis (floor SF / linear LF / each), and the order quantity derives automatically — measured ÷ coverage, rounded up to whole units. Adhesive lines get a trowel picker that fills the spread rate from the notch size. This is the layer most takeoff tools punt on. It's shipped here.

6. Reports & export

A per-condition breakdown — Floor / Wall / Border SF, LF, EA, total SF, SY, with and without waste — plus a combined materials buy list. Export to CSV or JSON, or print it. Waste is applied only in the report (the order quantity), never to the live measured number, so your takeoff and your buy list stay honest about which is which.

7. A vector-sharp canvas + plan-set tools

Zoom in and the linework stays razor-sharp: past ~1.15× the visible region re-renders straight from the PDF vectors at your current zoom — Bluebeam/AutoCAD-style — instead of magnifying a fixed bitmap, so fine callouts and hatching never blur. It overlays just what's on screen, so there's no giant full-sheet bitmap to hold. Plus a visual gallery (G) to pick and open sheets, Regroup to restore a side-by-side composition in one click, per-sheet Hi-Res base rendering, Snap (beta) to plan lines and corners, and a separate markup layer (revision clouds, callouts, text notes) that's never counted in the totals.

8. Yours, locally

Every drawing, scale, condition, and markup autosaves to your browser (IndexedDB + localStorage). Nothing is uploaded, there's no account, and there's no server in the default build. Host the static build yourself and it stays exactly that way.

OpenTakeoff report — per-condition breakdown and materials buy list

What's in the box

Area What you get
Ingest PDF, image, or .zip plan set — unpacked in-browser, multi-page, up to 4 sheets side-by-side
Scale Auto-detect the drawn scale note, or calibrate from a known dimension — per sheet
Measure One-Click Area (flood-fill), Area, Rectangle, Linear, Surface-Area (walls), Count, Deduct
Conditions Color + CAD hatch per finish, waste %, ×N multiplier, height, thickness → border SF
Assemblies Per-condition supporting materials with coverage rates → rounded order quantities, trowel picker
Report Per-condition Floor/Wall/Border SF, LF, EA, SY, with/without waste + materials buy list
Export CSV, JSON, print
Markups Revision clouds, callouts, text notes — separate layer, never counted
Storage IndexedDB + localStorage — client-only, nothing uploaded
Deploy One static build, hostable on Netlify, Vercel, GitHub Pages, S3, or any static host

Run it / deploy it

To use it, all you need is a browser. To self-host, it's one static build you can drop anywhere — there's no backend, no database, no environment to stand up.

cd web
npm install
npm run build      # → web/dist/  (static; host it anywhere)

Deploy to Netlify

The repo ships a root netlify.toml, so the button above is genuinely one-click. The same web/dist/ works on Vercel, GitHub Pages, Cloudflare Pages, S3 — anywhere that serves static files.

Build on top of it

OpenTakeoff is Apache-2.0: fork it, change it, ship it — for your own crew or as the base of your own product. The codebase is deliberately small and readable so you can add the features you want:

Run npm run typecheck && npm test && npm run build before a PR; keep the geometry libs pure and tested; never commit real plans. See CONTRIBUTING.md and the user guide.

Tech stack

  • Frontend: React 18 + Vite, plain JSX
  • Drawing: raw HTML5 Canvas + SVG (no charting/canvas frameworks)
  • Geometry: TypeScript (oneclick.ts, sheets.ts)
  • PDF rendering: pdf.js
  • Plan-set ingest: fflate (zip) + pdf-lib (image → PDF), lazy-loaded
  • Storage: IndexedDB + localStorage — no backend required
  • Tests: node --test + tsx
  • No paid dependencies. See THIRD-PARTY-NOTICES.md.

Status

OpenTakeoff is a working tool, not a preview. The measuring engine — One-Click Area, conditions, assemblies, the report and exports — is the production engine carved out of a commercial flooring estimating app. Snap is marked beta. It's used on real commercial flooring bids; issues and pull requests are welcome.

A note from the maker

I run estimating for a commercial flooring company. Every takeoff tool I've used costs four figures a year — so I built the one I actually wanted, and I'm giving it to the trade.

This is the real measuring engine, not a teaser. One-Click Area is the same flood-fill room tracer the expensive tools gate behind a subscription. Open a plan, trace your rooms, hand off a clean report — free, and nothing ever leaves your computer.

— Michael · Kentucky Ai

License

Apache License 2.0 — use it, fork it, ship it, build on top of it. Given to the flooring community. See NOTICE for attribution.

About

Free, open-source PDF takeoff & estimating for flooring (and any trade) — open a plan, set the scale, trace areas with one-click room detection, add waste % and a materials buy list, then export your quantities. Runs entirely in your browser.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors