尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗English · Українська
A web calculator for sheet-metal ductwork. You list the duct fittings of a ventilation system (straight ducts, elbows, reducers, tees, crosses, caps, branch-in collars) with their sizes, and it returns the sheet-metal area of every item, the metal thickness by the Ukrainian norm, a metal list grouped by thickness with the number of sheets to order, the insulation area and a cost estimate from your own prices.
Live: https://hvac-duct-calculator-rho.vercel.app
The interface is in Ukrainian by default, with an English version: the УКР / EN switch at the top right changes the language, and the browser remembers the choice. The tool is built for duct designers and sheet-metal shops in Ukraine. Everything is calculated in the browser; there is no backend and nothing is stored apart from the language choice.
| Fittings folded into tiles, with the results table | Totals, metal and insulation lists with prices |
|---|---|
On a phone the side panel becomes a column of round buttons at the screen edge, with a quick menu of common kinds and a searchable list of all of them.
19 kinds, named by the designations a Ukrainian spec uses.
In the English interface the same kinds have short English codes (C = circular, R = rectangular): CD, RD ducts; CE, RE elbows; CR, RR, RC reducers; CTap, RTap collars; CT, CRT, RT, RCT tees; CX, CRX, RX, RCX crosses.
| Group | Kinds |
|---|---|
| Straight ducts | round (КПв), rectangular (ППв) |
| Elbows | round (КВд), rectangular (ПВд), any angle |
| Reducers | round (КП), rectangular (ПП), rectangular to round (ППК) |
| Caps | round, rectangular |
| Branch-in collars | round (Квр), rectangular (Пвр) |
| Tees | round (КТ), round with a rectangular branch (КПТ), rectangular (ПТ), rectangular with a round branch (ПКТ) |
| Crosses | round with round branches (ККХ), round with rectangular branches (КПХ), rectangular with rectangular branches (ППХ), rectangular with round branches (ПКХ) |
Tees and crosses subtract the branch openings from the main duct; thickness follows the main duct.
The reference is a calculation spreadsheet that a practising HVAC engineer has used on real projects for years. The calculator was built against it, not just inspired by it:
src/lib/calc/__fixtures__/ and are committed by hand, separately from the code. Each case is marked basis: 'geometry' (derived independently from first principles) or basis: 'excel' (follows the spreadsheet's convention). Tests are never adjusted to make code pass.TODO(confirm) mark and listed in a register instead of being guessed. His answers are logged in docs/engineer-answers.md.Every engineering decision has its own record in docs/adr/ (context, decision, consequences, source), indexed in docs/decisions.md.
src/lib/calc/ pure TypeScript core: geometry, thickness, waste factor, sheet count,
air properties and pressure drop. No framework, no validation library.
src/lib/validation/ Zod schemas around the core; errors are stable codes, not text
src/lib/form/ form layer: raw text -> validated input -> results; defaults and warnings
src/lib/i18n/ every user-visible string (Ukrainian and English dictionaries)
src/components/ React components; props only, no calculation
Next.js (App Router), React, TypeScript (strict), Tailwind CSS, Zod, Vitest. Deployed on Vercel with Vercel Web Analytics. CI on GitHub Actions runs typecheck, lint and tests on every pull request.
Requires Node 24 (see .nvmrc).
npm ci
npm run dev # http://localhost:3000
npm test # unit tests (Vitest)
npm run typecheck
npm run lint