DEV Community

Cover image for I built 73 free construction calculators with Next.js — and learned the hard way that Google won't index a new site just because it exists
Brent
Brent

Posted on

I built 73 free construction calculators with Next.js — and learned the hard way that Google won't index a new site just because it exists

Every construction calculator on the first page of Google has the same problem: you search "how much concrete do I need," land on the page, and before you can type a number you're fighting a cookie banner, a newsletter popup, an AI chatbot bubble, and three display ads that shift the layout while you're tapping.

So I built the version I actually wanted: ProjectCalc
— 73 free calculators for construction, home improvement, and DIY. No signup, no popups, no chatbot. It runs entirely in your browser and works on a 4G phone with one bar.

This post is half "Show Dev" and half a brutally honest field report on the part nobody warns you about: **getting a brand-new domain indexed by Google is its own engineering problem, and shipping good content is only step one.

What it is

73 calculators across the math contractors and homeowners actually need:

  • Carpentry — beam span, stair stringer, rafter length, floor joist span
  • Electrical — voltage drop, conduit fill, wire gauge, panel load (NEC)
  • Plumbing — drain, vent, and supply pipe sizing (IPC)
  • HVAC — Manual J heat load, BTU, duct CFM (ACCA)
  • Masonry — brick and block counts, mortar, rebar grids
  • Home & DIY — concrete, drywall, paint, mulch, gravel, tile
  • Finance — mortgage, loan, and car-payment calculators

Every calculator shows the formula, a worked example, common mistakes, and rules of thumb so you can sanity-check the result instead of trusting a black box.

The one feature I'm proudest of: a visual room sketcher that draws your room as you type the dimensions and pre-fills the matching calculator with the numbers — including L-shaped rooms with a corner bump-out. Draw the room once, get drywall sheets, paint gallons, and flooring square footage without re-entering anything.

The stack

Nothing exotic — boring on purpose, because boring is fast:

  • Next.js 16 (App Router), TypeScript
  • Vanilla CSS, no Tailwind — kept the bundle tight and the first paint instant
  • Static Site Generation — every calculator page prerenders to HTML, so there's no client round-trip to see content
  • Dynamic OG images via next/og on the edge runtime
  • 100% client-side math — your inputs never leave the page; there's no backend to send them to
  • Vercel for hosting, auto-deploy on push to main

The calculators are defined as plain data objects — slug, inputs, a pure calc()
function, and prose fields — so adding a new one is a config entry plus a companion blog post, not a new route.

Now the part that hurt: indexing

I launched, submitted my sitemap to Google Search Console, and waited for the calculator pages to show up in search.

They didn't.

Weeks in, GSC told the story: 1 page indexed (the homepage), and ~120 pages stuck in "Crawled – currently not indexed." Another batch sat in "Discovered currently not indexed." Zero technical errors — no 404s, no robots blocks, no canonical issues.
Google was fetching the pages fine and then *choosing not to index them.

If you've never hit this wall, here's what I learned digging into it:

  1. "Crawled – currently not indexed" is a verdict, not a bug.** It means Google fetched your page and decided it wasn't worth an index slot yet. You can't fix it with more schema or meta tags. I had valid JSON-LD, canonicals, breadcrumbs, the works. Didn't matter.

  2. A new domain has almost no crawl budget.** When I pulled the actual last CrawlTime` for each URL via the URL Inspection API, the truth jumped out: Google had crawled most pages once near launch and then basically never came back. Every content improvement I shipped afterward — expanded prose, code citations, diagrams —Google had never seen, because it hadn't re-crawled. I was tuning a page nobody was re-reading.

  3. The Indexing API doesn't work for normal pages.** I tried it. The official Indexing API is only for JobPosting and BroadcastEvent schema; for regular pages Google ignores it. My own crawl logs confirmed it triggered nothing.

  4. What actually moves it:** the manual "Request Indexing" button in GSC (forces a re-crawl of the current version), plus — the real lever — backlinks and real traffic arriving together. A young domain with zero inbound links gives Google no reason to spend crawl budget or trust. This post is, candidly, part of that fix.

The lesson I wish I'd internalized on day one: on-page SEO is table stakes; it's not a growth strategy. You can have technically perfect pages and still be invisible, because indexing is gated on trust, and trust is gated on signals you earn off your own site.

Try it / break it

It's live and free: projectcalc.app

I'd genuinely love feedback from this crowd — on the calculators, the sketcher UX, or the indexing saga if you've fought it too. What finally tipped your new domains over the line? Drop it in the comments.

Top comments (0)