The problem
The existing apps in the SHK / building-services market each cover only one slice — manufacturer catalogues, formula calculators, training apps, or normsdatenbanken. None of them sit in front of a planner who has just walked into a Heizungsraum and wants a fast, explainable orientation: how big is the heat load, what kühllast does the Serverraum need, what Luftwechselrate does this Versammlungsraum want, where do I have to plan the Trinkwasser-Zapfstellen. Reproducing DIN / VDI / VOB / BKI text would be a legal minefield, and full design-grade Auslegung is outside the scope of a phone app — but a guided orientation tool with own-authored Richtwerte and clear Disclaimer is exactly the gap.
How we built it
- 01Built a four-Gewerk tree (Heizung, Lüftung, Kälte, Sanitär) on a consistent four-level pattern: `Rubriken → Arten → Detail (V/N/Normen) → Auslegung`. Each Gewerk lives in its own `src/data/<gewerk>/` and `app/<gewerk>/` folder so a fifth one is a copy-paste-and-fill task.
- 02Kept all engine logic in pure TypeScript under `src/lib/engine/` — `estimateHeatDemand`, `estimateCost`, `identifySystem`, `assessNeeds`, plus an `explain` module that emits the per-factor breakdown used in the result UI. 258 ts-jest tests across 19 suites cover engine, costs, climate, traverse, integration pipelines, tree integrity.
- 03Wrote every Richtwert ourselves (W/m² base values, correction factors, Kosten-Bänder, Luftwechsel- and Zapfstellen-Tabellen) so we don't reproduce DIN / VDI / VOB / BKI text. Every result screen carries an explicit Disclaimer that the output is rough orientation, not normative Auslegung.
- 04Added smart features that pay for themselves on every run: PLZ → Klimazone auto-lookup, Fördermittel hints (BEG / KfW) inlined on result screens, Warmwasser-Bedarfsberechnung, Heizkörper-Orientierung, HTML → PDF export for Heizlast + Kosten via a share wrapper, and an offline AsyncStorage history of past assessments.
- 05Shipped v1.0.0 with branding, eas.json profiles (preview APK / production app-bundle / dev client), GitHub Actions CI (lint + test on push/PR), a manual `build-apk.yml` workflow, and Play Store listing + Datenschutz copy ready to go.
Outcome
v4.0 complete — all four Gewerke active, all Rubriken populated. Lüftung: 5 Rubriken, 25 Systeme, 8 Normen, Luftwechsel-Tabelle (22 Raumtypen). Heizung: 6 Subflows (Heizlast, Kosten, Identify, Needs, Checks, Warmwasser, Heizkörper). Kälte: 3 Rubriken, 11 Systeme, 7 Normen, Kühllast-Richtwerte. Sanitär: 3 Rubriken, 12 Systeme, 9 Normen, Zapfstellen + Anschlusswerte. 258 of 258 tests passing, German UI throughout with proper umlauts, no external state-management library, no backend.
Stack
Expo 52 · React Native 0.76 · TypeScript strict · ts-jest · AsyncStorage for offline history · HTML → PDF via the platform share sheet · GitHub Actions for CI + APK builds · EAS for store builds.
Next up
v5.0 planned: DWD Open Data for precise location-specific Klimadaten, BKG Open Data for extended PLZ-Geo-Mapping, Destatis Baupreisindex for time-indexed Kosten-Bänder, plus a Pilot-Firmen-Feldback loop to calibrate the Kosten-Bänder. All four require a network stack, which the current offline-only build deliberately avoids.
More case studies
- Mobile AppsMieter App
German tenant-rights companion. 8-city Mietspiegel, Mietpreischeck, Nebenkostenprüfung, PDF export.
- Mobile AppsVerein App
Offline-first DSGVO-konformer Vereinsmanager: members, fees, events, docs, announcements. Free under 25 active members.
- Mobile AppsCalculator Batch
33 niche calculator apps from one shared Flutter codebase. 250 tests, two-round audited, AdMob + $2.99 Pro IAP wired across the entire fleet.