Funding Programs
Government and institutional funding programs for building renovations. Covers federal (KfW, BAFA), state (IFB Hamburg), regional, and municipal programs. Programs are versioned to track rule changes over time.
Source Files
| Layer | Path |
|---|---|
| Schema | backend/src/db/schema.ts |
| Routes | backend/src/routes/funding-programs.ts |
| Admin Routes | backend/src/routes/admin/funding-programs/ (programs.ts, versions.ts, measures.ts, loans.ts) |
| Admin Pages | frontend/src/pages/admin/FundingProgramsList.tsx, FundingProgramDetail.tsx |
| Admin Forms | frontend/src/pages/admin/FundingProgramForm.tsx, FundingProgramVersionForm.tsx, FundingProgramMeasureForm.tsx, FundingProgramLoanForm.tsx |
| Queries | frontend/src/lib/queries/fundingProgramQueries.ts |
Database Tables
| Table | Purpose |
|---|---|
funding_programs | Main entity — name, provider, type, validity period |
funding_program_versions | Versioned rules — rates, max amounts, bonuses/limits/requirements jsonb, validity windows |
funding_program_measures | Eligible measure definitions per version (types, rates, caps) |
funding_program_loans | Loan definitions per version (per-dwelling amounts, subsidy rates) |
Key Fields — Programs
| Field | Type | Notes |
|---|---|---|
name | varchar(255) | Program name (e.g., “KfW BEG WG”) |
provider | varchar(255) | Issuing body — KfW, BAFA, IFB Hamburg, etc. |
type | enum | federal, state, regional, municipal, private |
isActive | boolean | Whether the program is currently accepting applications |
validFrom / validTo | timestamp | Program availability window |
Key Fields — Versions
| Field | Type | Notes |
|---|---|---|
versionNumber | varchar | Version identifier |
baseFundingRate | decimal | Base percentage for funding calculation |
maxFundingAmount | decimal | Cap per application |
maxEligibleCosts | decimal | Maximum eligible renovation costs |
bonuses | jsonb | Array of bonus definitions (percentage, flat, per-unit) with applicability rules |
applicationUrl | varchar | Link to official application form |
Mock Data
Pivot: “seeding” is retired (Database Seeding is historical). Real German funding programs now load as mock/demo data from
backend/src/db/mocks/(kfw-beg-wg.ts,kfw-beg-em-heating.ts,bafa-beg-em-building-envelope.ts,ifb-hamburg-funding.ts) — only whenAUTO_MOCK=true(local/pr-preview/development).
| Program | Provider | Type |
|---|---|---|
| KfW BEG WG | KfW | Federal (loan-based) |
| KfW BEG EM | KfW | Federal (grant/heating) |
| BAFA BEG EM | BAFA | Federal (grant-based) |
| IFB Hamburg | IFB | State (regional) |
Förderung domain terms (Förderung, Tilgungszuschuss, …) stay German as proper nouns; identifiers are English.
Bonus System
Versions support a flexible bonus structure stored in the bonuses JSONB column:
- Calculation types:
percentage,flat_amount,per_unit - Apply-to targets:
eligible_cost,funding_amount,area,quantity - Scoping rules: filter by measure IDs, measure types, measure categories, component types
Relationships
Funding Program 1──* Funding Program Versions
Funding Program Version 1──* Funding Program Measures
Funding Program Version 1──* Funding Program Loans
Funding Program Version *──* Funding Applications (via applications)
Features
- Version management — different rules over time (validity windows +
isActiveflag) - Measure definitions per version specifying eligible renovation types and rates
- Loan definitions for loan-based programs (KfW) with per-dwelling calculations
- Bonus configuration with hierarchical applicability rules
- Admin management via Admin Dashboard with CRUD for programs, versions, measures, loans
- Calculator integration via Financial Calculations and
backend/src/lib/funding-calculator.ts
Related Pages
Funding Applications | Measures | Financial Calculations | Energy Calculations | Admin Dashboard | Quotes | Invoices | Database Architecture