feat: 5 home/energy calculators (concrete, gravel, wallpaper, BTU, EV charging)#3
Conversation
…, EV charging cost) Traffic-growth cohort via /dev-framework-rl (registry 162 -> 167). Low-competition, high-intent, affiliate-friendly calculators on the shared UI kit: - Concrete: slab/footing/column volume + bags (m/ft) - Gravel: tonnes + bulk bags for an area (m/ft) - Wallpaper: rolls needed with pattern repeat (unit-aware) - BTU: room air-con/heating sizing (m/ft, 20/25 BTU per sqft) - EV Charging Cost: per-charge, per-mile (grid-side), full-charge in GBP 898 unit tests pass, build clean (224 pages). Reviewed through plan eng/design critics, code-review, independent review, and 3 rounds of codex (gpt-5.5) which caught 9 real issues (all fixed): wallpaper feet-unit conversion, EV efficiency/clamp/copy, BTU metric handling + running-cost physics, concrete bagYield guard. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploying boring-maths with
|
| Latest commit: |
a7340f5
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://3297a06a.boring-maths.pages.dev |
| Branch Preview URL: | https://feat-home-energy-calculators.boring-maths.pages.dev |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6946489e8e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| : (INSULATION_FACTOR[inputs.insulation] ?? 1); | ||
|
|
||
| // Additive loads: kitchen appliance heat + extra occupants beyond two. | ||
| const kitchenBtu = inputs.roomUse === 'kitchen' ? KITCHEN_EXTRA_BTU : 0; |
There was a problem hiding this comment.
Do not add kitchen heat to heating demand
When mode is heating and the room type is kitchen, this still adds the 4,000 BTU appliance-heat allowance, so a default 180 sq ft kitchen is reported as 8,500 BTU/hr instead of the 4,500 BTU/hr heating load. Kitchen appliance heat is an extra cooling load, but it should not increase the heater size; this only affects heating-mode calculations for kitchens.
Useful? React with 👍 / 👎.
| <ButtonGroup | ||
| options={UNIT_OPTIONS} | ||
| value={inputs.unit} | ||
| onChange={(value) => updateInput('unit', value as ConcreteUnit)} |
There was a problem hiding this comment.
Preserve concrete dimensions when changing units
Changing the concrete unit only flips inputs.unit, leaving the existing dimension values untouched. If a user starts from the default 4 m × 3 m × 0.1 m slab, or enters metric dimensions and then selects feet, the same numbers are reinterpreted as feet, dropping the result from 120 bags to a few bags rather than showing the equivalent foot measurements. This affects any in-progress calculation when the unit toggle is used.
Useful? React with 👍 / 👎.
| <ButtonGroup | ||
| options={UNIT_OPTIONS} | ||
| value={inputs.unit} | ||
| onChange={(value) => updateInput('unit', value as GravelUnit)} |
There was a problem hiding this comment.
Preserve gravel dimensions when changing units
The gravel unit toggle also only updates unit, so existing dimensions are reinterpreted instead of converted. For example, the default 0.05 m depth becomes 0.05 ft after selecting feet, which cuts the calculated volume and tonnes by roughly two thirds; this gives misleading results whenever users switch units after values are present.
Useful? React with 👍 / 👎.
These pages predate this PR (untouched by the calculator work) but failed the repo's prettier --check gate, which scans all of src/. Formatting-only, no logic change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
What
Five new low-competition, high-intent, affiliate-friendly calculators (registry 162 -> 167), built and reviewed via a full
/dev-framework-rlepisode:Why
GSC shows the site is fully indexed but ranks pos 56-89 on saturated head terms (0 clicks). These target rankable long-tail where page-1 is achievable, and use simple verifiable geometry/arithmetic (no drifting statutory constants). Honest caveat: new pages take weeks to index/rank, so this expands rankable keyword surface rather than spiking traffic immediately; off-page authority is the deeper fix for the pos-80 saturation (out of scope here).
QA (gated)
Test plan
npx vitest run- 898 pass (31 new, hand-computed)npm run build- clean, 224 pages🤖 Generated with Claude Code