<?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: Shahzeb Yasir</title>
    <description>The latest articles on DEV Community by Shahzeb Yasir (@shahzeb_yasir_f2bb7f1d693).</description>
    <link>https://dev.to/shahzeb_yasir_f2bb7f1d693</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%2F4101551%2F08f8c43b-f259-4627-a99d-caab7a8c09a3.png</url>
      <title>DEV Community: Shahzeb Yasir</title>
      <link>https://dev.to/shahzeb_yasir_f2bb7f1d693</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shahzeb_yasir_f2bb7f1d693"/>
    <language>en</language>
    <item>
      <title>I Built DeutschRechner.de — 500+ German Calculators With a Friend</title>
      <dc:creator>Shahzeb Yasir</dc:creator>
      <pubDate>Sun, 30 Aug 2026 16:17:14 +0000</pubDate>
      <link>https://dev.to/shahzeb_yasir_f2bb7f1d693/i-built-deutschrechnerde-500-german-calculators-with-a-friend-4cg3</link>
      <guid>https://dev.to/shahzeb_yasir_f2bb7f1d693/i-built-deutschrechnerde-500-german-calculators-with-a-friend-4cg3</guid>
      <description>&lt;p&gt;I just launched &lt;a href="https://deutschrechner.de" rel="noopener noreferrer"&gt;deutschrechner.de&lt;/a&gt; — a free calculator site for Germany. Not one calculator, or ten. &lt;strong&gt;511 calculators across 22&lt;br&gt;
  categories&lt;/strong&gt;, plus &lt;strong&gt;over 100 long-form guide articles&lt;/strong&gt;, built and shipped by two friends in our spare time. It's in German, for a German audience, but the&lt;br&gt;
  build story — the architecture decisions and the content-at-scale problem — is the part I think is worth sharing here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F80pzh2hnxaslv8fezh69.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F80pzh2hnxaslv8fezh69.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;## The idea&lt;/p&gt;

&lt;p&gt;Germany has a lot of official numbers that change every year and a lot of rules nobody outside a tax advisor's office actually understands: Rentenwert,&lt;br&gt;
  Kindergeld, Pfändungsfreigrenzen, Soli-Freigrenze, Besoldungstabellen, Elterngeld-Bezugsformen. There are existing calculator sites for this. What I kept running&lt;br&gt;
  into as I researched them, category by category, was two different failure modes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Breadth gaps.&lt;/strong&gt; Big, entire categories that just weren't covered anywhere — Mathematik, Statistik, Wissenschaft/Physik, Engineering, Business/Controlling,
Bildung, Religion &amp;amp; Kalender. I ended up cataloguing this properly: of ~340 calculators on the largest existing German site, only about 70 had &lt;em&gt;any&lt;/em&gt; topical
overlap with categories like these — the rest simply didn't exist as tools anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Depth gaps.&lt;/strong&gt; Where a calculator on the same topic did exist, it was often shallow in a specific, avoidable way: asking the user to already know the number
they came there to calculate. A rent-cost calculator that wants you to type in your Nebenkosten-per-square-meter — which is usually exactly what someone doesn't
know and is trying to estimate. An income-tax calculator with two input fields where the real German tax code has a dozen decision-relevant variables
(Werbungskosten, Vorsorgeaufwendungen, Kinderfreibetrag-Günstigerprüfung, church tax by state, disability allowances by Grad der Behinderung...).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the plan became: cover the breadth gap with genuinely new categories, and on every calculator — old topic or new — actually model the real rule set instead of&lt;br&gt;
  a linear approximation.&lt;/p&gt;

&lt;p&gt;## Tech approach&lt;/p&gt;

&lt;p&gt;Deliberately boring, on purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Static-first&lt;/strong&gt; — pages are generated up front, not rendered per-request, so there's no server to babysit and no runtime slowdown as the page count grows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured content, not hardcoded copy&lt;/strong&gt; — every calculator's text lives as data (YAML), separate from the page code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla TypeScript&lt;/strong&gt;, no React/Vue/Svelte anywhere in the dependency tree — a calculator is fundamentally "type numbers into fields, see a result update,"
and that doesn't need a component framework or a hydration story&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## Content as a schema, not a template&lt;/p&gt;

&lt;p&gt;The real risk at 500+ pages isn't running out of topics, it's every page starting to read the same, which is exactly what tanks programmatic-feeling sites in&lt;br&gt;
  search. The fix I landed on: every calculator's data has required fields that are structurally impossible to fill in generically — &lt;code&gt;formula&lt;/code&gt; (the actual&lt;br&gt;
  expression, in words and in math), &lt;code&gt;examples&lt;/code&gt; (worked numbers), &lt;code&gt;commonMistakes&lt;/code&gt; (the specific ways people get this calculation wrong), &lt;code&gt;faq&lt;/code&gt;. You can't&lt;br&gt;
  lorem-ipsum a &lt;code&gt;commonMistakes&lt;/code&gt; array; you have to actually understand the calculation to write it. Pushing the specificity requirement into the data model,&lt;br&gt;
  instead of trusting a style guide, turned out to be the single highest-leverage decision in the whole project.&lt;/p&gt;

&lt;p&gt;## Staying accurate at scale&lt;/p&gt;

&lt;p&gt;German statutory figures update on their own schedules — Rentenwert, Kindergeld, and similar constants show up across dozens of calculators that all need to&lt;br&gt;
  agree with each other. I ran an audit that flagged &lt;em&gt;internal inconsistencies&lt;/em&gt; first (the same named constant with two different values across sibling calculators&lt;br&gt;
  is a cheap, reliable signal something's wrong, before you even know which value is right), then resolved each flagged item against a real primary source. That&lt;br&gt;
  pass alone caught 42 calculators still running 2024/2025-era figures. For the 100+ guide articles, I used AI-assisted batches to keep production moving, but&lt;br&gt;
  every batch had a hard rule: pull numbers only from the calculator's own source data, never invent them, and I spot-read outputs myself and ran a coverage script&lt;br&gt;
  before trusting anything as done.&lt;/p&gt;

&lt;p&gt;## Getting the small things right&lt;/p&gt;

&lt;p&gt;The detail I didn't expect to matter as much as it did: sitemap &lt;code&gt;lastmod&lt;/code&gt;. The default behavior either omits it or stamps every URL with the build timestamp,&lt;br&gt;
  which means every one of 500+ pages looks like it changed today, every single deploy — a signal that actively misleads crawlers and trains them to stop trusting&lt;br&gt;
  your &lt;code&gt;lastmod&lt;/code&gt; at all. I built a small pass that reads each page's real &lt;code&gt;updatedDate&lt;/code&gt; out of its content data and serializes an honest, per-URL &lt;code&gt;lastmod&lt;/code&gt; into&lt;br&gt;
  the sitemap instead. Maybe 20 lines of code, more useful than most of the actual "SEO features" on the site.&lt;/p&gt;

&lt;p&gt;## Challenges&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Staying accurate is a moving target, not a one-time task.&lt;/strong&gt; A calculator that was correct at launch will quietly go stale as figures update.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breadth vs. depth is a constant trade-off.&lt;/strong&gt; It's tempting to keep adding new topics; the harder discipline is going back and deepening what already exists
once a real gap shows up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;500+ pages means 500+ places a small bug hides.&lt;/strong&gt; A single wrapper-selector typo silently zeroed out results on one calculator until a full functional audit
caught it. At this scale, "looks right in the three pages I checked by hand" isn't a real verification strategy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## What's next&lt;/p&gt;

&lt;p&gt;More guide-article depth, periodic legal-figure re-audits as 2026/2027 numbers roll in, and now — actually getting the site in front of people, which is a big&lt;br&gt;
  part of why I'm writing this.&lt;/p&gt;

&lt;p&gt;## Why I'm sharing this&lt;/p&gt;

&lt;p&gt;Mostly because "I built X" posts about scale usually skip the boring architecture decisions that actually made the scale possible without it turning into slop —&lt;br&gt;
  the content schema, the accuracy audits, the honest sitemap. If you're building anything content-heavy at scale, I'm happy to go deeper on any of this — the&lt;br&gt;
  content schema, the audit approach, the overall setup. The site itself is in German (deutschrechner.de), but I'd genuinely like feedback from this community on&lt;br&gt;
  the architecture side regardless of whether you read German.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>seo</category>
    </item>
  </channel>
</rss>
