<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Brent </title>
    <description>The latest articles on DEV Community by Brent  (@sabanite08).</description>
    <link>https://dev.to/sabanite08</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3918308%2Fa9e60be0-138b-4561-aca6-7fea9a3be6b8.png</url>
      <title>DEV Community: Brent </title>
      <link>https://dev.to/sabanite08</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sabanite08"/>
    <language>en</language>
    <item>
      <title>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</title>
      <dc:creator>Brent </dc:creator>
      <pubDate>Mon, 08 Jun 2026 22:05:39 +0000</pubDate>
      <link>https://dev.to/sabanite08/i-built-73-free-construction-calculators-with-nextjs-and-learned-the-hard-way-that-google-wont-1p63</link>
      <guid>https://dev.to/sabanite08/i-built-73-free-construction-calculators-with-nextjs-and-learned-the-hard-way-that-google-wont-1p63</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;So I built the version I actually wanted: &lt;strong&gt;&lt;a href="https://projectcalc.app" rel="noopener noreferrer"&gt;ProjectCalc&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
— 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;73 calculators across the math contractors and homeowners actually need:&lt;/p&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The one feature I'm proudest of: a &lt;strong&gt;visual room sketcher&lt;/strong&gt; 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;p&gt;Nothing exotic — boring on purpose, because boring is fast:&lt;/p&gt;

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

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

&lt;h2&gt;
  
  
  Now the part that hurt: indexing
&lt;/h2&gt;

&lt;p&gt;I launched, submitted my sitemap to Google Search Console, and waited for the calculator pages to show up in search.&lt;/p&gt;

&lt;p&gt;They didn't.&lt;/p&gt;

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

&lt;p&gt;If you've never hit this wall, here's what I learned digging into it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;"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 &lt;em&gt;yet&lt;/em&gt;. You can't fix it with more schema or meta tags. I had valid JSON-LD, canonicals, breadcrumbs, the works. Didn't matter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;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 &lt;em&gt;once&lt;/em&gt; near launch and then basically never came back. Every content improvement I shipped afterward — expanded prose, code citations, diagrams —Google had &lt;strong&gt;never seen&lt;/strong&gt;, because it hadn't re-crawled. I was tuning a page nobody was re-reading.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Indexing API doesn't work for normal pages.** I tried it. The official Indexing API is only for &lt;code&gt;JobPosting&lt;/code&gt; and &lt;code&gt;BroadcastEvent&lt;/code&gt; schema; for regular pages Google ignores it. My own crawl logs confirmed it triggered nothing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What actually moves it:** the manual "Request Indexing" button in GSC (forces a re-crawl of the &lt;em&gt;current&lt;/em&gt; version), plus — the real lever — &lt;strong&gt;backlinks and real traffic arriving together.&lt;/strong&gt; 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.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The lesson I wish I'd internalized on day one: &lt;strong&gt;on-page SEO is table stakes; it's not a growth strategy.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it / break it
&lt;/h2&gt;

&lt;p&gt;It's live and free: &lt;strong&gt;&lt;a href="https://projectcalc.app" rel="noopener noreferrer"&gt;projectcalc.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>nextjs</category>
      <category>seo</category>
    </item>
    <item>
      <title>I built 73 free construction calculators in 11 days with Next.js. Here's what shipped, what broke, and what I learned about SEO for a brand-new domain</title>
      <dc:creator>Brent </dc:creator>
      <pubDate>Thu, 07 May 2026 16:06:31 +0000</pubDate>
      <link>https://dev.to/sabanite08/i-built-73-free-construction-calculators-in-11-days-with-nextjs-heres-what-shipped-what-broke-4pp6</link>
      <guid>https://dev.to/sabanite08/i-built-73-free-construction-calculators-in-11-days-with-nextjs-heres-what-shipped-what-broke-4pp6</guid>
      <description>&lt;p&gt;I built &lt;a href="https://projectcalc.app" rel="noopener noreferrer"&gt;ProjectCalc&lt;/a&gt; — a free library of 73 calculators for construction, home improvement,&lt;br&gt;
  and DIY projects. No signup, no popups, no AI chatbot, runs entirely in your browser. Stack: Next.js 16 (App Router) +&lt;br&gt;
   TypeScript + vanilla CSS, deployed on Vercel.&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://github.com/sabanite08/projectcalc" rel="noopener noreferrer"&gt;github.com/sabanite08/projectcalc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;## Why&lt;/p&gt;

&lt;p&gt;Every existing construction calculator on Google is buried under cookie banners, popup signups, AI chatbots, and ads.&lt;br&gt;
  The Reddit answer to "how much concrete do I need" is always a screenshot from someone else's calculator because the&lt;br&gt;
  original site is unusable.&lt;/p&gt;

&lt;p&gt;So I built the version I wanted: dead simple, fast, no friction.&lt;/p&gt;

&lt;p&gt;## What shipped&lt;/p&gt;

&lt;p&gt;73 calculators across 6 categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Carpentry&lt;/strong&gt; — beam span, header size, stair stringer, rafter length, floor joist span, snow load, plywood sheets,
lumber cuts, framing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Electrical&lt;/strong&gt; — voltage drop (NEC), conduit fill (Chapter 9), wire gauge (Table 310.16), panel load (NEC 220),
circuit breaker (240.6), conduit bending, generator sizing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plumbing&lt;/strong&gt; — drain/vent/supply pipe sizing (IPC), trap size, pressure loss (Hazen-Williams), fixture units&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HVAC&lt;/strong&gt; — Manual J load, BTU sizing, duct CFM, refrigerant charge, static pressure, mini-split sizing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Home &amp;amp; DIY&lt;/strong&gt; — concrete, drywall, paint, hardwood, roofing, tile, gravel, mulch, sod, pavers, fence, deck stain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finance&lt;/strong&gt; — mortgage, car payment, personal loan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus a &lt;a href="https://projectcalc.app/sketch" rel="noopener noreferrer"&gt;visual room sketcher&lt;/a&gt; that draws your room as you type dimensions, then jumps&lt;br&gt;
  you into the matching calc with the numbers pre-filled. Handles L-shapes too.&lt;/p&gt;

&lt;p&gt;Each calc shows the formula, worked example, common mistakes, and rules of thumb so you can sanity-check the result.&lt;br&gt;
  Code references documented (NEC, IPC, IRC, ACCA) where applicable.&lt;/p&gt;

&lt;p&gt;## Stack&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16&lt;/strong&gt; with App Router, TypeScript, vanilla CSS (no Tailwind — wanted to keep the bundle tight)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt; for hosting + auto-deploy on push to main&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Static generation&lt;/strong&gt; for every calc page — they're all SSG'd, so first paint is sub-second&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single source of truth&lt;/strong&gt;: &lt;code&gt;lib/calculators.ts&lt;/code&gt; defines all 73 calcs as a typed array. The dynamic route
&lt;code&gt;/[slug]/page.tsx&lt;/code&gt; renders any of them. Adding a calc = adding one entry.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;  &lt;span class="c1"&gt;// Calculator type — every calc is one entry in lib/calculators.ts&lt;/span&gt;
  &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;Calculator&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;category&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;construction&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;home&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;finance&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;utility&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;trade&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Carpentry&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Masonry &amp;amp; Siding&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Electrical&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Plumbing&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;HVAC&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;desc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;formula&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;metaTitle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;metaDesc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;seoIntro&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;howToUse&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;workedExample&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;commonMistakes&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;rulesOfThumb&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CalcInput&lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="nl"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Record&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;CalcResult&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This was the highest-leverage decision in the whole codebase. New calculator = one new entry in the array, zero new&lt;br&gt;
  components.&lt;/p&gt;

&lt;p&gt;## What worked&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Static generation + small bundle.&lt;/strong&gt; Every page prerenders to plain HTML at build time. Lighthouse scores 95+ across&lt;br&gt;
  the board. First Contentful Paint under 1s on a slow 3G simulation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Schema.org structured data on every page.&lt;/strong&gt; WebApplication + FAQPage on calc pages, BreadcrumbList everywhere,&lt;br&gt;
  ItemList on the homepage telling Google "this site has 73 calculators." Costs nothing, helps a lot for SERP features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Companion blog posts.&lt;/strong&gt; Every calculator has a 700-1,000 word companion blog post. Cross-linked to the calc and to&lt;br&gt;
  related calcs. This builds an internal link graph that Google can crawl efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual sketcher as a differentiator.&lt;/strong&gt; Most calculator sites are forms. The room sketcher (live SVG drawing as you&lt;br&gt;
  type) is the one feature competitors don't have. Useful AND a unique selling point.&lt;/p&gt;

&lt;p&gt;## What didn't work (yet)&lt;/p&gt;

&lt;p&gt;This is the unsexy part nobody talks about when they launch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Google AdSense rejected the site for "low value content"&lt;/strong&gt; at day 8. The calc pages themselves were too thin —&lt;br&gt;
  just a form + short intro. Spent today rewriting every calc page to 800-1,200 words of contextual content (how to use&lt;br&gt;
  it, worked example, common mistakes, rules of thumb). Will reapply in 2-4 weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. impact.com Marketplace declined the site.&lt;/strong&gt; Almost certainly traffic — was 8 days old. Direct Home Depot&lt;br&gt;
  affiliate also declined. Falling back to CJ Affiliate, ShareASale, FlexOffers as alternatives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Google Search Console shows 94 of ~140 pages "Crawled - currently not indexed."&lt;/strong&gt; Site age + zero backlinks =&lt;br&gt;
  Google being conservative. The fix is time (re-crawl after the prose expansion) plus earning a few backlinks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Reddit's site-wide spam filter killed my launch post&lt;/strong&gt; within minutes. Brand-new account + link post =&lt;br&gt;
  auto-removed. Need to build comment karma over a couple weeks before link posts clear.&lt;/p&gt;

&lt;p&gt;## Lessons&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;For a new domain in any commercial niche, plan for 8-12 weeks of rejection-by-default before signals start coming
through.&lt;/strong&gt; Google, AdSense, affiliate networks, Reddit, HN — they all have new-site/new-account filters that exist
because of the spammers who came before you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Static + structured + cross-linked is table stakes for SEO.&lt;/strong&gt; It's not a strategy, it's the floor. The strategy is
the content depth on each page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The single highest-leverage decision was the calculator schema.&lt;/strong&gt; Adding a calc takes 10 minutes. If I had started
with bespoke pages, adding the 50th calc would have been a 4-hour task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vulnerability beats hype.&lt;/strong&gt; I'd rather post about getting denied by 3 affiliate networks than pretend I'm crushing
it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## Try it&lt;/p&gt;

&lt;p&gt;&lt;a href="https://projectcalc.app" rel="noopener noreferrer"&gt;projectcalc.app&lt;/a&gt; — click any calculator, no signup, runs in your browser.&lt;/p&gt;

&lt;p&gt;Feedback I'm looking for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Honest critique on whichever calc you click into first&lt;/li&gt;
&lt;li&gt;Calcs you wish existed — if it's reasonable scope I'll add it&lt;/li&gt;
&lt;li&gt;Anything broken on mobile (tested but limited devices)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Source on &lt;a href="https://github.com/sabanite08/projectcalc" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; — issues and PRs welcome, especially formula corrections&lt;br&gt;
   with code citations.&lt;/p&gt;

&lt;p&gt;What's the most over-engineered website you've ever needed for a 30-second math problem?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>showdev</category>
      <category>seo</category>
    </item>
  </channel>
</rss>
