diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml new file mode 100644 index 0000000..39016eb --- /dev/null +++ b/.github/workflows/links.yml @@ -0,0 +1,32 @@ +name: Dead links + +on: + push: + branches: [main] + schedule: + - cron: '0 8 * * 1' # every Monday 08:00 UTC + +jobs: + lychee: + name: Link check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Check links + uses: lycheeverse/lychee-action@v2 + with: + args: > + --config .lychee.toml + '**/*.html' + fail: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create issue on scheduled failure + if: failure() && github.event_name == 'schedule' + uses: peter-evans/create-issue-from-file@v5 + with: + title: 'Dead links detected' + content-filepath: ./lychee/out.md + labels: bug, content diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml new file mode 100644 index 0000000..cf57c1a --- /dev/null +++ b/.github/workflows/qa.yml @@ -0,0 +1,130 @@ +name: QA + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + + # ── 0. Build freshness ────────────────────────────────────────────────────── + build-fresh: + name: Build freshness check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + run: pip install -r requirements.txt + - name: Check generated files match templates + run: python3 build.py --check + + # ── 1. Typos ──────────────────────────────────────────────────────────────── + typos: + name: Typo check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: crate-ci/typos@v1 + + # ── 2. German spelling ───────────────────────────────────────────────────── + cspell-de: + name: German pages spelling + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Spell-check German pages + run: | + npx --yes \ + -p cspell \ + -p @cspell/dict-de-de \ + -p @cspell/dict-de-at \ + cspell lint --config cspell.de.json + + # ── 3. English spelling ──────────────────────────────────────────────────── + cspell-en: + name: English pages spelling + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Spell-check English pages + run: | + npx --yes \ + -p cspell \ + cspell lint --config cspell.en.json + + # ── 4. HTML validity ──────────────────────────────────────────────────────── + html: + name: HTML validation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20' + - run: npm install -g html-validate + - name: Validate HTML + run: | + html-validate \ + index.html \ + kern/ \ + technology/ \ + references/ \ + includes/nav.html \ + includes/footer.html + + # ── 5. Meta descriptions ──────────────────────────────────────────────────── + meta: + name: Meta descriptions + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Every KERN page must have a meta description + run: | + missing=0 + while IFS= read -r file; do + if ! grep -qi '" + exit 1 + fi + echo "All KERN pages have meta descriptions ✓" + + # ── 6. Image size budget ──────────────────────────────────────────────────── + images: + name: Image size budget + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Warn on images > 500 KB + run: | + limit=$((500 * 1024)) + oversized=0 + while IFS= read -r img; do + size=$(stat -c%s "$img") + if [ "$size" -gt "$limit" ]; then + kb=$((size / 1024)) + echo "::warning file=$img::${kb} KB — consider compressing (budget: 500 KB)" + oversized=$((oversized + 1)) + fi + done < <(find images/ -type f \( \ + -iname "*.jpg" -o -iname "*.jpeg" \ + -o -iname "*.png" -o -iname "*.gif" \ + -o -iname "*.webp" \)) + + if [ "$oversized" -gt 0 ]; then + echo "$oversized image(s) over budget — see warnings above" + else + echo "All images within 500 KB budget ✓" + fi diff --git a/.gitignore b/.gitignore index 10c0d8a..11bb812 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,24 @@ -new/node_modules \ No newline at end of file +new/node_modules +.venv +__pycache__ +*.pyc +*.pyo +*.pyd +*.db +*.sqlite3 +*.log +*.env +*.DS_Store +.idea +.vscode +*.swp +*.swo +*.bak +*.tmp +*.egg-info +dist +build +*.egg +*.egg-info +*.egg-info/ +*.egg-info/* diff --git a/.htmlvalidate.json b/.htmlvalidate.json new file mode 100644 index 0000000..aa39ffa --- /dev/null +++ b/.htmlvalidate.json @@ -0,0 +1,19 @@ +{ + "extends": ["html-validate:recommended"], + "rules": { + "attr-quotes": "error", + "no-dup-attr": "error", + "no-dup-id": "error", + + "no-inline-style": "off", + "require-sri": "off", + "void-style": "off", + "no-trailing-whitespace": "off", + "long-title": "off", + "tel-non-breaking": "off", + "script-type": "off", + "no-unknown-elements": "off" + }, + "elements": ["html5"], + "transform": {} +} diff --git a/.lychee.toml b/.lychee.toml new file mode 100644 index 0000000..8342f7d --- /dev/null +++ b/.lychee.toml @@ -0,0 +1,39 @@ +# Lychee link checker configuration +# Docs: https://lychee.cli.rs/usage/configuration/ + +timeout = 20 +max_retries = 3 +retry_wait_time = 3 +threads = 8 + +# 429 = Too Many Requests (rate-limited, not a dead link) +accept = ["200..=299", "429"] + +exclude_loopback = true +include_mail = false + +exclude = [ + # JavaScript pseudo-links + "^javascript:", + "^#$", + + # Google services — blocked in CI environments + "googletagmanager\\.com", + "googleapis\\.com", + "google\\.com/maps", + "google\\.com/recaptcha", + + # Social platforms — aggressively rate-limit CI IPs + "linkedin\\.com", + "twitter\\.com", + "x\\.com", + "instagram\\.com", + "facebook\\.com", + + # Localhost and staging + "localhost", + "127\\.0\\.0\\.1", +] + +# Output dead links to a file so the scheduled issue workflow can attach it +output = "lychee/out.md" diff --git a/.typos.toml b/.typos.toml new file mode 100644 index 0000000..c2da4e9 --- /dev/null +++ b/.typos.toml @@ -0,0 +1,55 @@ +[files] +extend-exclude = [ + # Binary / generated / legacy directories + "images/**", + "archive/**", + "slides/**", + "ttf/**", + "csv/**", + "data/**", + "showcase/**", + "media/**", + "news/**", + # German content pages are checked by cspell-de + "de/**/*.html", + "locales/de.yaml", + # Old Webflow CSS/JS + "company/css/**", + "company/js/**", + # Backup files + "*.bak", + "*.min.js", +] + +[default.extend-words] +# Energy sector protocols and standards +MIOTY = "MIOTY" +EEBUS = "EEBUS" +SunSpec = "SunSpec" +aFRR = "aFRR" +FCR = "FCR" +SCADA = "SCADA" +OCPP = "OCPP" +BESS = "BESS" +HEMS = "HEMS" + +# Austrian / German regulatory terms +EnFG = "EnFG" +EAG = "EAG" + +# Brands and product names +KERN = "KERN" +Lumenaza = "Lumenaza" +cybergrid = "cybergrid" +VERBUND = "VERBUND" +TTTech = "TTTech" +joulie = "joulie" +egon = "egon" + +# Place names +Heiligenkreuz = "Heiligenkreuz" +Wetzlas = "Wetzlas" +Steiermark = "Steiermark" + +# German words used in content +Stadtwerke = "Stadtwerke" diff --git a/404.html b/404.html index 26c5f2d..b7c8d79 100644 --- a/404.html +++ b/404.html @@ -14,8 +14,8 @@ } :root { - --primary-green: #00ff88; - --dark-bg: #0a0a0a; + --primary-green: #F59E0B; + --dark-bg: #1C2333; --text-primary: #ffffff; --text-secondary: #e0e0e0; --text-muted: #999999; @@ -49,10 +49,10 @@ @keyframes glow { 0%, 100% { - text-shadow: 0 0 20px rgba(0, 255, 136, 0.5); + text-shadow: 0 0 20px rgba(245, 158, 11, 0.5); } 50% { - text-shadow: 0 0 40px rgba(0, 255, 136, 0.8); + text-shadow: 0 0 40px rgba(245, 158, 11, 0.8); } } diff --git a/README.md b/README.md new file mode 100644 index 0000000..5239fd4 --- /dev/null +++ b/README.md @@ -0,0 +1,134 @@ +# riddleandcode.com — Static Site + +Bilingual static site for [riddleandcode.com](https://riddleandcode.com). Pages are generated from templates and locale files by a Python build script. + +## Prerequisites + +Python 3.8+ and PyYAML: + +```bash +pip install -r requirements.txt +``` + +## Building + +```bash +python3 build.py +``` + +This reads every file under `templates/` and renders it twice — once in English (output to the repo root) and once in German (output to `de/`). + +**Example:** +``` +templates/kern/for-utilities.html → kern/for-utilities.html (EN) + → de/kern/for-utilities.html (DE) +templates/includes/nav.html → includes/nav.html (EN) + → de/includes/nav.html (DE) +``` + +Currently produces **30 files** across both languages. + +## How it works + +### Templates (`templates/`) + +HTML files with `{{ key }}` placeholders. The build substitutes every placeholder with the value from the active locale file. + +```html +

{{ ku_h1 }}

+

{{ ku_lead }}

+``` + +`
` blocks (ASCII diagrams, code loops) are kept as static content and not templated, to avoid YAML escaping complexity.
+
+### Locale files (`locales/`)
+
+| File | Language |
+|------|----------|
+| `locales/en.yaml` | English |
+| `locales/de.yaml` | German  |
+
+Keys are grouped by page using a prefix convention:
+
+| Prefix | Page |
+|--------|------|
+| `shared_` | Strings reused across pages |
+| `nav_` | Navigation bar |
+| `footer_` | Footer |
+| `ki_` | `kern/index.html` |
+| `ku_` | `kern/for-utilities.html` |
+| `ka_` | `kern/for-aggregators.html` |
+| `kc_` | `kern/for-communities.html` |
+| `kp_` | `kern/for-platforms.html` |
+| `rp_` | `references/index.html` |
+| `tech_` | `technology/index.html` |
+| `au_` | `company/about-us.html` |
+| `git_` | `company/get-in-touch.html` |
+| `med_` | `company/media.html` |
+| `car_` | `company/career.html` |
+| `news_` | `company/news.html` |
+
+### Navigation prefix (`nav_prefix`)
+
+Internal links in nav and footer templates use `{{ nav_prefix }}`:
+
+```html
+{{ nav_products }}
+```
+
+| Locale | Value | Resulting link |
+|--------|-------|----------------|
+| `en.yaml` | `"/"` | `/kern/` |
+| `de.yaml` | `"/de/"` | `/de/kern/` |
+
+### Runtime component loading (`scripts/main.js`)
+
+The nav and footer are loaded at runtime via `fetch()`. `main.js` detects whether the current URL starts with `/de/` and loads the correct include:
+
+- EN pages → `includes/nav.html`, `includes/footer.html`
+- DE pages → `de/includes/nav.html`, `de/includes/footer.html`
+
+## Adding a new page
+
+1. Create `templates/
/page.html` with `{{ key }}` placeholders. +2. Add the corresponding keys to both `locales/en.yaml` and `locales/de.yaml`. +3. Run `python3 build.py`. + +## Checking for stale builds (CI) + +```bash +python3 build.py --check +``` + +Renders into a temp directory and diffs against the working tree. Exits non-zero if any generated file is out of date. Used by the GitHub Actions `build-fresh` job. + +## Serving locally + +Any static file server works. For example: + +```bash +python3 -m http.server 8089 +``` + +Then open [http://localhost:8089](http://localhost:8089). + +## Directory structure + +``` +templates/ Source templates (edit these, not the output) + includes/ nav.html, footer.html + index.html + kern/ + company/ + references/ + technology/ +locales/ + en.yaml English strings + de.yaml German strings +build.py Build script +requirements.txt Python dependencies (pyyaml) +scripts/main.js Runtime: component loading, nav, animations +styles/main.css Global stylesheet +includes/ Generated EN nav/footer (do not edit directly) +de/ Generated DE output (do not edit directly) +``` diff --git a/csv/Riddle & Code - MYPWR Animation PopUps.csv b/archive/csv/Riddle & Code - MYPWR Animation PopUps.csv similarity index 100% rename from csv/Riddle & Code - MYPWR Animation PopUps.csv rename to archive/csv/Riddle & Code - MYPWR Animation PopUps.csv diff --git a/csv/Riddle & Code - News.csv b/archive/csv/Riddle & Code - News.csv similarity index 100% rename from csv/Riddle & Code - News.csv rename to archive/csv/Riddle & Code - News.csv diff --git a/csv/Riddle & Code - Partners.csv b/archive/csv/Riddle & Code - Partners.csv similarity index 100% rename from csv/Riddle & Code - Partners.csv rename to archive/csv/Riddle & Code - Partners.csv diff --git a/csv/Riddle & Code - Presses.csv b/archive/csv/Riddle & Code - Presses.csv similarity index 100% rename from csv/Riddle & Code - Presses.csv rename to archive/csv/Riddle & Code - Presses.csv diff --git a/csv/Riddle & Code - Showcases.csv b/archive/csv/Riddle & Code - Showcases.csv similarity index 100% rename from csv/Riddle & Code - Showcases.csv rename to archive/csv/Riddle & Code - Showcases.csv diff --git a/csv/Riddle & Code - Team Members.csv b/archive/csv/Riddle & Code - Team Members.csv similarity index 100% rename from csv/Riddle & Code - Team Members.csv rename to archive/csv/Riddle & Code - Team Members.csv diff --git a/csv/Riddle & Code - Wallets.csv b/archive/csv/Riddle & Code - Wallets.csv similarity index 100% rename from csv/Riddle & Code - Wallets.csv rename to archive/csv/Riddle & Code - Wallets.csv diff --git a/csv/animations/64228db8262cf0997e5f13e6_prosumer.jpg b/archive/csv/animations/64228db8262cf0997e5f13e6_prosumer.jpg similarity index 100% rename from csv/animations/64228db8262cf0997e5f13e6_prosumer.jpg rename to archive/csv/animations/64228db8262cf0997e5f13e6_prosumer.jpg diff --git a/csv/animations/642295c9f612a8dd220f42fe_Power_Utility.jpg b/archive/csv/animations/642295c9f612a8dd220f42fe_Power_Utility.jpg similarity index 100% rename from csv/animations/642295c9f612a8dd220f42fe_Power_Utility.jpg rename to archive/csv/animations/642295c9f612a8dd220f42fe_Power_Utility.jpg diff --git a/csv/animations/6422963c3fc26ce623d62f21_Hardware_manufacture.jpg b/archive/csv/animations/6422963c3fc26ce623d62f21_Hardware_manufacture.jpg similarity index 100% rename from csv/animations/6422963c3fc26ce623d62f21_Hardware_manufacture.jpg rename to archive/csv/animations/6422963c3fc26ce623d62f21_Hardware_manufacture.jpg diff --git a/csv/animations/642296a934cc6ac7de7a20c4_electric_car.jpg b/archive/csv/animations/642296a934cc6ac7de7a20c4_electric_car.jpg similarity index 100% rename from csv/animations/642296a934cc6ac7de7a20c4_electric_car.jpg rename to archive/csv/animations/642296a934cc6ac7de7a20c4_electric_car.jpg diff --git a/csv/animations/642297483fc26c4497d639bb_Green_energy.jpg b/archive/csv/animations/642297483fc26c4497d639bb_Green_energy.jpg similarity index 100% rename from csv/animations/642297483fc26c4497d639bb_Green_energy.jpg rename to archive/csv/animations/642297483fc26c4497d639bb_Green_energy.jpg diff --git a/csv/animations/642299370c32f3640e349ee8_energy_communities.jpg b/archive/csv/animations/642299370c32f3640e349ee8_energy_communities.jpg similarity index 100% rename from csv/animations/642299370c32f3640e349ee8_energy_communities.jpg rename to archive/csv/animations/642299370c32f3640e349ee8_energy_communities.jpg diff --git a/csv/animations/66c5e422bb966018fe823ad2_chart.png b/archive/csv/animations/66c5e422bb966018fe823ad2_chart.png similarity index 100% rename from csv/animations/66c5e422bb966018fe823ad2_chart.png rename to archive/csv/animations/66c5e422bb966018fe823ad2_chart.png diff --git a/csv/download_images.py b/archive/csv/download_images.py similarity index 100% rename from csv/download_images.py rename to archive/csv/download_images.py diff --git a/csv/news/6413f00b2d930698cdfa5299_r&c_3.jpg b/archive/csv/news/6413f00b2d930698cdfa5299_r&c_3.jpg similarity index 100% rename from csv/news/6413f00b2d930698cdfa5299_r&c_3.jpg rename to archive/csv/news/6413f00b2d930698cdfa5299_r&c_3.jpg diff --git a/csv/news/6413f0da1251e37b735acc0b_r&c_2.jpg b/archive/csv/news/6413f0da1251e37b735acc0b_r&c_2.jpg similarity index 100% rename from csv/news/6413f0da1251e37b735acc0b_r&c_2.jpg rename to archive/csv/news/6413f0da1251e37b735acc0b_r&c_2.jpg diff --git a/csv/news/6413f1692d9306f4d0fa6a8d_r&c_comunity_program_divider.jpg b/archive/csv/news/6413f1692d9306f4d0fa6a8d_r&c_comunity_program_divider.jpg similarity index 100% rename from csv/news/6413f1692d9306f4d0fa6a8d_r&c_comunity_program_divider.jpg rename to archive/csv/news/6413f1692d9306f4d0fa6a8d_r&c_comunity_program_divider.jpg diff --git a/csv/news/642c2b6c6585b9f96bfe17ab_Visuals for social media -5.jpg b/archive/csv/news/642c2b6c6585b9f96bfe17ab_Visuals for social media -5.jpg similarity index 100% rename from csv/news/642c2b6c6585b9f96bfe17ab_Visuals for social media -5.jpg rename to archive/csv/news/642c2b6c6585b9f96bfe17ab_Visuals for social media -5.jpg diff --git "a/csv/news/645e4c94cdc5c707267bf5fc_Stanz Roll-up (900 \303\227 900px)-12.png" "b/archive/csv/news/645e4c94cdc5c707267bf5fc_Stanz Roll-up (900 \303\227 900px)-12.png" similarity index 100% rename from "csv/news/645e4c94cdc5c707267bf5fc_Stanz Roll-up (900 \303\227 900px)-12.png" rename to "archive/csv/news/645e4c94cdc5c707267bf5fc_Stanz Roll-up (900 \303\227 900px)-12.png" diff --git a/csv/news/66003cf1c5ce9c8f1929b724_Calian 2020 _MB.jpeg b/archive/csv/news/66003cf1c5ce9c8f1929b724_Calian 2020 _MB.jpeg similarity index 100% rename from csv/news/66003cf1c5ce9c8f1929b724_Calian 2020 _MB.jpeg rename to archive/csv/news/66003cf1c5ce9c8f1929b724_Calian 2020 _MB.jpeg diff --git a/csv/news/67c5c35db7879dc09010d86a_IMG-20250228-WA0001.jpg b/archive/csv/news/67c5c35db7879dc09010d86a_IMG-20250228-WA0001.jpg similarity index 100% rename from csv/news/67c5c35db7879dc09010d86a_IMG-20250228-WA0001.jpg rename to archive/csv/news/67c5c35db7879dc09010d86a_IMG-20250228-WA0001.jpg diff --git a/csv/news/image_11402.jpg b/archive/csv/news/image_11402.jpg similarity index 100% rename from csv/news/image_11402.jpg rename to archive/csv/news/image_11402.jpg diff --git a/csv/news/image_25588.jpg b/archive/csv/news/image_25588.jpg similarity index 100% rename from csv/news/image_25588.jpg rename to archive/csv/news/image_25588.jpg diff --git a/csv/news/image_27003.jpg b/archive/csv/news/image_27003.jpg similarity index 100% rename from csv/news/image_27003.jpg rename to archive/csv/news/image_27003.jpg diff --git a/csv/news/image_54686.jpg b/archive/csv/news/image_54686.jpg similarity index 100% rename from csv/news/image_54686.jpg rename to archive/csv/news/image_54686.jpg diff --git a/csv/news/image_84862.jpg b/archive/csv/news/image_84862.jpg similarity index 100% rename from csv/news/image_84862.jpg rename to archive/csv/news/image_84862.jpg diff --git "a/csv/news/wien-testet-blockchain-anwendung-fuer-energieversorgung-16466577.html\"" "b/archive/csv/news/wien-testet-blockchain-anwendung-fuer-energieversorgung-16466577.html\"" similarity index 100% rename from "csv/news/wien-testet-blockchain-anwendung-fuer-energieversorgung-16466577.html\"" rename to "archive/csv/news/wien-testet-blockchain-anwendung-fuer-energieversorgung-16466577.html\"" diff --git a/csv/partners/64141c3faca7c61f8dca7388_641415879d689f12a00f1001_partner-logos_0023_adapa.png b/archive/csv/partners/64141c3faca7c61f8dca7388_641415879d689f12a00f1001_partner-logos_0023_adapa.png similarity index 100% rename from csv/partners/64141c3faca7c61f8dca7388_641415879d689f12a00f1001_partner-logos_0023_adapa.png rename to archive/csv/partners/64141c3faca7c61f8dca7388_641415879d689f12a00f1001_partner-logos_0023_adapa.png diff --git a/csv/partners/64141c401d3feef51527d326_641415872810c5e04bd8c3df_partner-logos_0036_blockchain_turkyie.png b/archive/csv/partners/64141c401d3feef51527d326_641415872810c5e04bd8c3df_partner-logos_0036_blockchain_turkyie.png similarity index 100% rename from csv/partners/64141c401d3feef51527d326_641415872810c5e04bd8c3df_partner-logos_0036_blockchain_turkyie.png rename to archive/csv/partners/64141c401d3feef51527d326_641415872810c5e04bd8c3df_partner-logos_0036_blockchain_turkyie.png diff --git a/csv/partners/64141c402676dc37e3507ebb_64141586dba36712d8b400a5_partner-logos_0009_Borse-Stuttgart.png b/archive/csv/partners/64141c402676dc37e3507ebb_64141586dba36712d8b400a5_partner-logos_0009_Borse-Stuttgart.png similarity index 100% rename from csv/partners/64141c402676dc37e3507ebb_64141586dba36712d8b400a5_partner-logos_0009_Borse-Stuttgart.png rename to archive/csv/partners/64141c402676dc37e3507ebb_64141586dba36712d8b400a5_partner-logos_0009_Borse-Stuttgart.png diff --git a/csv/partners/64141c405b5e4a3a88e7445d_641415871d3feed865273675_partner-logos_0025_Coinstone-Capital.png b/archive/csv/partners/64141c405b5e4a3a88e7445d_641415871d3feed865273675_partner-logos_0025_Coinstone-Capital.png similarity index 100% rename from csv/partners/64141c405b5e4a3a88e7445d_641415871d3feed865273675_partner-logos_0025_Coinstone-Capital.png rename to archive/csv/partners/64141c405b5e4a3a88e7445d_641415871d3feed865273675_partner-logos_0025_Coinstone-Capital.png diff --git a/csv/partners/64141c408a61435306f68cc5_64141586be9e527578aa7f3e_partner-logos_0005_Brandl-Talos.png b/archive/csv/partners/64141c408a61435306f68cc5_64141586be9e527578aa7f3e_partner-logos_0005_Brandl-Talos.png similarity index 100% rename from csv/partners/64141c408a61435306f68cc5_64141586be9e527578aa7f3e_partner-logos_0005_Brandl-Talos.png rename to archive/csv/partners/64141c408a61435306f68cc5_64141586be9e527578aa7f3e_partner-logos_0005_Brandl-Talos.png diff --git a/csv/partners/64141c4097f1d1ce4fd0c637_6414158650fd80c474d66fb8_partner-logos_0011_Austrian-Blockchain-Center.png b/archive/csv/partners/64141c4097f1d1ce4fd0c637_6414158650fd80c474d66fb8_partner-logos_0011_Austrian-Blockchain-Center.png similarity index 100% rename from csv/partners/64141c4097f1d1ce4fd0c637_6414158650fd80c474d66fb8_partner-logos_0011_Austrian-Blockchain-Center.png rename to archive/csv/partners/64141c4097f1d1ce4fd0c637_6414158650fd80c474d66fb8_partner-logos_0011_Austrian-Blockchain-Center.png diff --git a/csv/partners/64141c409d689fe3e30f813e_6414192c2f7f81217fa88323_BMW.png b/archive/csv/partners/64141c409d689fe3e30f813e_6414192c2f7f81217fa88323_BMW.png similarity index 100% rename from csv/partners/64141c409d689fe3e30f813e_6414192c2f7f81217fa88323_BMW.png rename to archive/csv/partners/64141c409d689fe3e30f813e_6414192c2f7f81217fa88323_BMW.png diff --git a/csv/partners/64141c40dba36781a6b4905d_641415869d689f43920f1000_partner-logos_0006_Bitkom.png b/archive/csv/partners/64141c40dba36781a6b4905d_641415869d689f43920f1000_partner-logos_0006_Bitkom.png similarity index 100% rename from csv/partners/64141c40dba36781a6b4905d_641415869d689f43920f1000_partner-logos_0006_Bitkom.png rename to archive/csv/partners/64141c40dba36781a6b4905d_641415869d689f43920f1000_partner-logos_0006_Bitkom.png diff --git a/csv/partners/64141c40f4c32a740fac794e_6414158750fd80d7e4d66fc1_partner-logos_0030_Coinfirm.png b/archive/csv/partners/64141c40f4c32a740fac794e_6414158750fd80d7e4d66fc1_partner-logos_0030_Coinfirm.png similarity index 100% rename from csv/partners/64141c40f4c32a740fac794e_6414158750fd80d7e4d66fc1_partner-logos_0030_Coinfirm.png rename to archive/csv/partners/64141c40f4c32a740fac794e_6414158750fd80d7e4d66fc1_partner-logos_0030_Coinfirm.png diff --git a/csv/partners/64141c410a541a54e97ca0b2_64141586be9e521e02aa7f3d_partner-logos_0007_Deutsche-Telekom.png b/archive/csv/partners/64141c410a541a54e97ca0b2_64141586be9e521e02aa7f3d_partner-logos_0007_Deutsche-Telekom.png similarity index 100% rename from csv/partners/64141c410a541a54e97ca0b2_64141586be9e521e02aa7f3d_partner-logos_0007_Deutsche-Telekom.png rename to archive/csv/partners/64141c410a541a54e97ca0b2_64141586be9e521e02aa7f3d_partner-logos_0007_Deutsche-Telekom.png diff --git a/csv/partners/64141c413df6efd84c333d19_641415868a61437b18f60903_partner-logos_0016_Dyne.png b/archive/csv/partners/64141c413df6efd84c333d19_641415868a61437b18f60903_partner-logos_0016_Dyne.png similarity index 100% rename from csv/partners/64141c413df6efd84c333d19_641415868a61437b18f60903_partner-logos_0016_Dyne.png rename to archive/csv/partners/64141c413df6efd84c333d19_641415868a61437b18f60903_partner-logos_0016_Dyne.png diff --git a/csv/partners/64141c4150fd801c01d6cc77_641415872810c5dcb2d8c3de_partner-logos_0035_Eloop.png b/archive/csv/partners/64141c4150fd801c01d6cc77_641415872810c5dcb2d8c3de_partner-logos_0035_Eloop.png similarity index 100% rename from csv/partners/64141c4150fd801c01d6cc77_641415872810c5dcb2d8c3de_partner-logos_0035_Eloop.png rename to archive/csv/partners/64141c4150fd801c01d6cc77_641415872810c5dcb2d8c3de_partner-logos_0035_Eloop.png diff --git a/csv/partners/64141c4150fd803d8fd6cc76_641415860eac7c57adf3245f_partner-logos_0017_Intel.png b/archive/csv/partners/64141c4150fd803d8fd6cc76_641415860eac7c57adf3245f_partner-logos_0017_Intel.png similarity index 100% rename from csv/partners/64141c4150fd803d8fd6cc76_641415860eac7c57adf3245f_partner-logos_0017_Intel.png rename to archive/csv/partners/64141c4150fd803d8fd6cc76_641415860eac7c57adf3245f_partner-logos_0017_Intel.png diff --git a/csv/partners/64141c415b5e4ab938e74460_64141587eb117921b1f2b449_partner-logos_0037_EFS.png b/archive/csv/partners/64141c415b5e4ab938e74460_64141587eb117921b1f2b449_partner-logos_0037_EFS.png similarity index 100% rename from csv/partners/64141c415b5e4ab938e74460_64141587eb117921b1f2b449_partner-logos_0037_EFS.png rename to archive/csv/partners/64141c415b5e4ab938e74460_64141587eb117921b1f2b449_partner-logos_0037_EFS.png diff --git a/csv/partners/64141c416452a982f54763ff_6414158650fd8015bfd66fb7_partner-logos_0012_Deloitte.png b/archive/csv/partners/64141c416452a982f54763ff_6414158650fd8015bfd66fb7_partner-logos_0012_Deloitte.png similarity index 100% rename from csv/partners/64141c416452a982f54763ff_6414158650fd8015bfd66fb7_partner-logos_0012_Deloitte.png rename to archive/csv/partners/64141c416452a982f54763ff_6414158650fd8015bfd66fb7_partner-logos_0012_Deloitte.png diff --git a/csv/partners/64141c41aca7c6203eca738b_64141587be9e527ae0aa7f43_partner-logos_0022_Daimler-Mobility.png b/archive/csv/partners/64141c41aca7c6203eca738b_64141587be9e527ae0aa7f43_partner-logos_0022_Daimler-Mobility.png similarity index 100% rename from csv/partners/64141c41aca7c6203eca738b_64141587be9e527ae0aa7f43_partner-logos_0022_Daimler-Mobility.png rename to archive/csv/partners/64141c41aca7c6203eca738b_64141587be9e527ae0aa7f43_partner-logos_0022_Daimler-Mobility.png diff --git a/csv/partners/64141c41c8908b3dd91ec0fb_641415872810c5adcfd8c3dd_partner-logos_0028_Edp.png b/archive/csv/partners/64141c41c8908b3dd91ec0fb_641415872810c5adcfd8c3dd_partner-logos_0028_Edp.png similarity index 100% rename from csv/partners/64141c41c8908b3dd91ec0fb_641415872810c5adcfd8c3dd_partner-logos_0028_Edp.png rename to archive/csv/partners/64141c41c8908b3dd91ec0fb_641415872810c5adcfd8c3dd_partner-logos_0028_Edp.png diff --git a/csv/partners/64141c41c8908b94921ec0fe_64141586f4c32a826dac1195_partner-logos_0001_Iota.png b/archive/csv/partners/64141c41c8908b94921ec0fe_64141586f4c32a826dac1195_partner-logos_0001_Iota.png similarity index 100% rename from csv/partners/64141c41c8908b94921ec0fe_64141586f4c32a826dac1195_partner-logos_0001_Iota.png rename to archive/csv/partners/64141c41c8908b94921ec0fe_64141586f4c32a826dac1195_partner-logos_0001_Iota.png diff --git a/csv/partners/64141c41cf050a125483d78a_641415860ee69afefbac7ec7_partner-logos_0021_Dena.png b/archive/csv/partners/64141c41cf050a125483d78a_641415860ee69afefbac7ec7_partner-logos_0021_Dena.png similarity index 100% rename from csv/partners/64141c41cf050a125483d78a_641415860ee69afefbac7ec7_partner-logos_0021_Dena.png rename to archive/csv/partners/64141c41cf050a125483d78a_641415860ee69afefbac7ec7_partner-logos_0021_Dena.png diff --git a/csv/partners/64141c420ee69a46afad0218_641415872676dc7d53500418_partner-logos_0026_IPDB.png b/archive/csv/partners/64141c420ee69a46afad0218_641415872676dc7d53500418_partner-logos_0026_IPDB.png similarity index 100% rename from csv/partners/64141c420ee69a46afad0218_641415872676dc7d53500418_partner-logos_0026_IPDB.png rename to archive/csv/partners/64141c420ee69a46afad0218_641415872676dc7d53500418_partner-logos_0026_IPDB.png diff --git a/csv/partners/64141c420ee69a51c2ad021b_641415870a541af4ba7bfa14_partner-logos_0031_Jolocom.png b/archive/csv/partners/64141c420ee69a51c2ad021b_641415870a541af4ba7bfa14_partner-logos_0031_Jolocom.png similarity index 100% rename from csv/partners/64141c420ee69a51c2ad021b_641415870a541af4ba7bfa14_partner-logos_0031_Jolocom.png rename to archive/csv/partners/64141c420ee69a51c2ad021b_641415870a541af4ba7bfa14_partner-logos_0031_Jolocom.png diff --git a/csv/partners/64141c420ee69ad901ad0220_6414158614fcdd2740822bbf_partner-logos_0015_RIAT.png b/archive/csv/partners/64141c420ee69ad901ad0220_6414158614fcdd2740822bbf_partner-logos_0015_RIAT.png similarity index 100% rename from csv/partners/64141c420ee69ad901ad0220_6414158614fcdd2740822bbf_partner-logos_0015_RIAT.png rename to archive/csv/partners/64141c420ee69ad901ad0220_6414158614fcdd2740822bbf_partner-logos_0015_RIAT.png diff --git a/csv/partners/64141c421d3feef18127d3af_641415879d689f2f9c0f1002_partner-logos_0032_Lora-Alliance.png b/archive/csv/partners/64141c421d3feef18127d3af_641415879d689f2f9c0f1002_partner-logos_0032_Lora-Alliance.png similarity index 100% rename from csv/partners/64141c421d3feef18127d3af_641415879d689f2f9c0f1002_partner-logos_0032_Lora-Alliance.png rename to archive/csv/partners/64141c421d3feef18127d3af_641415879d689f2f9c0f1002_partner-logos_0032_Lora-Alliance.png diff --git a/csv/partners/64141c4225deb15d93f96cdd_6414158614fcdde12c822bbe_partner-logos_0019_Layer-2.png b/archive/csv/partners/64141c4225deb15d93f96cdd_6414158614fcdde12c822bbe_partner-logos_0019_Layer-2.png similarity index 100% rename from csv/partners/64141c4225deb15d93f96cdd_6414158614fcdde12c822bbe_partner-logos_0019_Layer-2.png rename to archive/csv/partners/64141c4225deb15d93f96cdd_6414158614fcdde12c822bbe_partner-logos_0019_Layer-2.png diff --git a/csv/partners/64141c423df6ef175b333d25_64141586f4c32aae8fac1194_partner-logos_0008_Montana.png b/archive/csv/partners/64141c423df6ef175b333d25_64141586f4c32aae8fac1194_partner-logos_0008_Montana.png similarity index 100% rename from csv/partners/64141c423df6ef175b333d25_64141586f4c32aae8fac1194_partner-logos_0008_Montana.png rename to archive/csv/partners/64141c423df6ef175b333d25_64141586f4c32aae8fac1194_partner-logos_0008_Montana.png diff --git a/csv/partners/64141c423df6efc17a333d26_6414158625deb11d89f8f3e8_partner-logos_0002_Nxp.png b/archive/csv/partners/64141c423df6efc17a333d26_6414158625deb11d89f8f3e8_partner-logos_0002_Nxp.png similarity index 100% rename from csv/partners/64141c423df6efc17a333d26_6414158625deb11d89f8f3e8_partner-logos_0002_Nxp.png rename to archive/csv/partners/64141c423df6efc17a333d26_6414158625deb11d89f8f3e8_partner-logos_0002_Nxp.png diff --git a/csv/partners/64141c42eb117924a0f316bc_64141587eb1179772cf2b448_partner-logos_0034_Ocean-Protocol.png b/archive/csv/partners/64141c42eb117924a0f316bc_64141587eb1179772cf2b448_partner-logos_0034_Ocean-Protocol.png similarity index 100% rename from csv/partners/64141c42eb117924a0f316bc_64141587eb1179772cf2b448_partner-logos_0034_Ocean-Protocol.png rename to archive/csv/partners/64141c42eb117924a0f316bc_64141587eb1179772cf2b448_partner-logos_0034_Ocean-Protocol.png diff --git a/csv/partners/64141c42eef44ba7a5d9b7b7_64141586be9e521a05aa7f3f_partner-logos_0003_Liquid.png b/archive/csv/partners/64141c42eef44ba7a5d9b7b7_64141586be9e521a05aa7f3f_partner-logos_0003_Liquid.png similarity index 100% rename from csv/partners/64141c42eef44ba7a5d9b7b7_64141586be9e521a05aa7f3f_partner-logos_0003_Liquid.png rename to archive/csv/partners/64141c42eef44ba7a5d9b7b7_64141586be9e521a05aa7f3f_partner-logos_0003_Liquid.png diff --git a/csv/partners/64141c4314fcdd869c82b80f_641415870a541a55c37bfa13_partner-logos_0020_Trusted-IoT-Alliance.png b/archive/csv/partners/64141c4314fcdd869c82b80f_641415870a541a55c37bfa13_partner-logos_0020_Trusted-IoT-Alliance.png similarity index 100% rename from csv/partners/64141c4314fcdd869c82b80f_641415870a541a55c37bfa13_partner-logos_0020_Trusted-IoT-Alliance.png rename to archive/csv/partners/64141c4314fcdd869c82b80f_641415870a541a55c37bfa13_partner-logos_0020_Trusted-IoT-Alliance.png diff --git a/csv/partners/64141c43208e551179f67eaf_641415862f7f810005a84c3b_partner-logos_0013_Wien_Energie.png b/archive/csv/partners/64141c43208e551179f67eaf_641415862f7f810005a84c3b_partner-logos_0013_Wien_Energie.png similarity index 100% rename from csv/partners/64141c43208e551179f67eaf_641415862f7f810005a84c3b_partner-logos_0013_Wien_Energie.png rename to archive/csv/partners/64141c43208e551179f67eaf_641415862f7f810005a84c3b_partner-logos_0013_Wien_Energie.png diff --git a/csv/partners/64141c4350fd80b3ebd6cc9a_641415861251e327895cf99b_partner-logos_0010_Securosys.png b/archive/csv/partners/64141c4350fd80b3ebd6cc9a_641415861251e327895cf99b_partner-logos_0010_Securosys.png similarity index 100% rename from csv/partners/64141c4350fd80b3ebd6cc9a_641415861251e327895cf99b_partner-logos_0010_Securosys.png rename to archive/csv/partners/64141c4350fd80b3ebd6cc9a_641415861251e327895cf99b_partner-logos_0010_Securosys.png diff --git a/csv/partners/64141c43eb1179194ef316bf_641415860ee69a906fac7ec6_partner-logos_0004_Zu%CC%88hlke.png b/archive/csv/partners/64141c43eb1179194ef316bf_641415860ee69a906fac7ec6_partner-logos_0004_Zu%CC%88hlke.png similarity index 100% rename from csv/partners/64141c43eb1179194ef316bf_641415860ee69a906fac7ec6_partner-logos_0004_Zu%CC%88hlke.png rename to archive/csv/partners/64141c43eb1179194ef316bf_641415860ee69a906fac7ec6_partner-logos_0004_Zu%CC%88hlke.png diff --git a/csv/partners/6416c95721beab6082cfb357_planetmint.png b/archive/csv/partners/6416c95721beab6082cfb357_planetmint.png similarity index 100% rename from csv/partners/6416c95721beab6082cfb357_planetmint.png rename to archive/csv/partners/6416c95721beab6082cfb357_planetmint.png diff --git a/csv/partners/6462323fb7b07d68efe01051_logo-blue.png b/archive/csv/partners/6462323fb7b07d68efe01051_logo-blue.png similarity index 100% rename from csv/partners/6462323fb7b07d68efe01051_logo-blue.png rename to archive/csv/partners/6462323fb7b07d68efe01051_logo-blue.png diff --git a/csv/partners/66c5fedabe901b674c26fed0_forte_digital_gmbh_logo.jpeg b/archive/csv/partners/66c5fedabe901b674c26fed0_forte_digital_gmbh_logo.jpeg similarity index 100% rename from csv/partners/66c5fedabe901b674c26fed0_forte_digital_gmbh_logo.jpeg rename to archive/csv/partners/66c5fedabe901b674c26fed0_forte_digital_gmbh_logo.jpeg diff --git a/csv/presses/64101123523ba6a5762b806b_r&c__0008_Press_-BTC-Echo.png b/archive/csv/presses/64101123523ba6a5762b806b_r&c__0008_Press_-BTC-Echo.png similarity index 100% rename from csv/presses/64101123523ba6a5762b806b_r&c__0008_Press_-BTC-Echo.png rename to archive/csv/presses/64101123523ba6a5762b806b_r&c__0008_Press_-BTC-Echo.png diff --git a/csv/presses/6410112fdbfbb910cb18fecd_r&c__0007_Press_-Coindesk.png b/archive/csv/presses/6410112fdbfbb910cb18fecd_r&c__0007_Press_-Coindesk.png similarity index 100% rename from csv/presses/6410112fdbfbb910cb18fecd_r&c__0007_Press_-Coindesk.png rename to archive/csv/presses/6410112fdbfbb910cb18fecd_r&c__0007_Press_-Coindesk.png diff --git a/csv/presses/6410113a96dd6dd0da70d973_r&c__0006_Press_-Cointelegraph.png b/archive/csv/presses/6410113a96dd6dd0da70d973_r&c__0006_Press_-Cointelegraph.png similarity index 100% rename from csv/presses/6410113a96dd6dd0da70d973_r&c__0006_Press_-Cointelegraph.png rename to archive/csv/presses/6410113a96dd6dd0da70d973_r&c__0006_Press_-Cointelegraph.png diff --git a/csv/presses/6410115b8a2f464e931271d2_r&c__0004_Press_-Der-Standard.png b/archive/csv/presses/6410115b8a2f464e931271d2_r&c__0004_Press_-Der-Standard.png similarity index 100% rename from csv/presses/6410115b8a2f464e931271d2_r&c__0004_Press_-Der-Standard.png rename to archive/csv/presses/6410115b8a2f464e931271d2_r&c__0004_Press_-Der-Standard.png diff --git a/csv/presses/6410116a8b520778eafb8f6e_r&c__0003_Press_-Die-Presse.png b/archive/csv/presses/6410116a8b520778eafb8f6e_r&c__0003_Press_-Die-Presse.png similarity index 100% rename from csv/presses/6410116a8b520778eafb8f6e_r&c__0003_Press_-Die-Presse.png rename to archive/csv/presses/6410116a8b520778eafb8f6e_r&c__0003_Press_-Die-Presse.png diff --git a/csv/presses/64101229725101136df09013_r&c__0010_brutkasten_logo-modified.png b/archive/csv/presses/64101229725101136df09013_r&c__0010_brutkasten_logo-modified.png similarity index 100% rename from csv/presses/64101229725101136df09013_r&c__0010_brutkasten_logo-modified.png rename to archive/csv/presses/64101229725101136df09013_r&c__0010_brutkasten_logo-modified.png diff --git a/csv/presses/64101233523ba64b252b989f_r&c__0009_Forbes-Logo.png b/archive/csv/presses/64101233523ba64b252b989f_r&c__0009_Forbes-Logo.png similarity index 100% rename from csv/presses/64101233523ba64b252b989f_r&c__0009_Forbes-Logo.png rename to archive/csv/presses/64101233523ba64b252b989f_r&c__0009_Forbes-Logo.png diff --git a/csv/presses/641012d55f2ea584979088a2_r&c__0002_Press_-Future-Zone.png b/archive/csv/presses/641012d55f2ea584979088a2_r&c__0002_Press_-Future-Zone.png similarity index 100% rename from csv/presses/641012d55f2ea584979088a2_r&c__0002_Press_-Future-Zone.png rename to archive/csv/presses/641012d55f2ea584979088a2_r&c__0002_Press_-Future-Zone.png diff --git a/csv/presses/641012e5f4bdf23f7da6af40_r&c__0001_Press_-Ledger-Insights.png b/archive/csv/presses/641012e5f4bdf23f7da6af40_r&c__0001_Press_-Ledger-Insights.png similarity index 100% rename from csv/presses/641012e5f4bdf23f7da6af40_r&c__0001_Press_-Ledger-Insights.png rename to archive/csv/presses/641012e5f4bdf23f7da6af40_r&c__0001_Press_-Ledger-Insights.png diff --git a/csv/presses/641012ef8a2f464620129749_r&c__0000_Press_-Profil.png b/archive/csv/presses/641012ef8a2f464620129749_r&c__0000_Press_-Profil.png similarity index 100% rename from csv/presses/641012ef8a2f464620129749_r&c__0000_Press_-Profil.png rename to archive/csv/presses/641012ef8a2f464620129749_r&c__0000_Press_-Profil.png diff --git a/csv/presses/641012fd9aa399cfe5ce24e4_r&c__0005_Press_-Crypto-research.png b/archive/csv/presses/641012fd9aa399cfe5ce24e4_r&c__0005_Press_-Crypto-research.png similarity index 100% rename from csv/presses/641012fd9aa399cfe5ce24e4_r&c__0005_Press_-Crypto-research.png rename to archive/csv/presses/641012fd9aa399cfe5ce24e4_r&c__0005_Press_-Crypto-research.png diff --git a/csv/showcases/64149ca109c69d4ce4cf1cac_r&c_pictures_18.jpg b/archive/csv/showcases/64149ca109c69d4ce4cf1cac_r&c_pictures_18.jpg similarity index 100% rename from csv/showcases/64149ca109c69d4ce4cf1cac_r&c_pictures_18.jpg rename to archive/csv/showcases/64149ca109c69d4ce4cf1cac_r&c_pictures_18.jpg diff --git a/csv/showcases/6414a24415bd1d6729c44110_r&c_pictures_27.jpg b/archive/csv/showcases/6414a24415bd1d6729c44110_r&c_pictures_27.jpg similarity index 100% rename from csv/showcases/6414a24415bd1d6729c44110_r&c_pictures_27.jpg rename to archive/csv/showcases/6414a24415bd1d6729c44110_r&c_pictures_27.jpg diff --git a/csv/showcases/656889c36e0348ed1f773537_r&c_pictures_6.jpg b/archive/csv/showcases/656889c36e0348ed1f773537_r&c_pictures_6.jpg similarity index 100% rename from csv/showcases/656889c36e0348ed1f773537_r&c_pictures_6.jpg rename to archive/csv/showcases/656889c36e0348ed1f773537_r&c_pictures_6.jpg diff --git a/csv/showcases/658441c49801a5d2f82ec015_r&c_pictures_25.jpg b/archive/csv/showcases/658441c49801a5d2f82ec015_r&c_pictures_25.jpg similarity index 100% rename from csv/showcases/658441c49801a5d2f82ec015_r&c_pictures_25.jpg rename to archive/csv/showcases/658441c49801a5d2f82ec015_r&c_pictures_25.jpg diff --git a/csv/teammembers/64144676a24d13496177d75e__0006_tom.jpg b/archive/csv/teammembers/64144676a24d13496177d75e__0006_tom.jpg similarity index 100% rename from csv/teammembers/64144676a24d13496177d75e__0006_tom.jpg rename to archive/csv/teammembers/64144676a24d13496177d75e__0006_tom.jpg diff --git a/csv/teammembers/641447221251e35ac1609fda__0004_julian.jpg b/archive/csv/teammembers/641447221251e35ac1609fda__0004_julian.jpg similarity index 100% rename from csv/teammembers/641447221251e35ac1609fda__0004_julian.jpg rename to archive/csv/teammembers/641447221251e35ac1609fda__0004_julian.jpg diff --git a/csv/teammembers/641448a8c8908b14e521f743_manfred.jpeg b/archive/csv/teammembers/641448a8c8908b14e521f743_manfred.jpeg similarity index 100% rename from csv/teammembers/641448a8c8908b14e521f743_manfred.jpeg rename to archive/csv/teammembers/641448a8c8908b14e521f743_manfred.jpeg diff --git a/csv/teammembers/6414b413a0d02b3cafdcb571_Veronika.jpeg b/archive/csv/teammembers/6414b413a0d02b3cafdcb571_Veronika.jpeg similarity index 100% rename from csv/teammembers/6414b413a0d02b3cafdcb571_Veronika.jpeg rename to archive/csv/teammembers/6414b413a0d02b3cafdcb571_Veronika.jpeg diff --git a/csv/teammembers/66003db98ca92e548d031ffe_Calian 2020 _BW.png b/archive/csv/teammembers/66003db98ca92e548d031ffe_Calian 2020 _BW.png similarity index 100% rename from csv/teammembers/66003db98ca92e548d031ffe_Calian 2020 _BW.png rename to archive/csv/teammembers/66003db98ca92e548d031ffe_Calian 2020 _BW.png diff --git a/csv/teammembers/6600689938088944d60a7e46_Stefan Weber Lead Engineer.jpg b/archive/csv/teammembers/6600689938088944d60a7e46_Stefan Weber Lead Engineer.jpg similarity index 100% rename from csv/teammembers/6600689938088944d60a7e46_Stefan Weber Lead Engineer.jpg rename to archive/csv/teammembers/6600689938088944d60a7e46_Stefan Weber Lead Engineer.jpg diff --git a/csv/teammembers/66814f7cf235d801a012093f_LAYR Gaby_Foto ohneHerzen_Datei.jpg b/archive/csv/teammembers/66814f7cf235d801a012093f_LAYR Gaby_Foto ohneHerzen_Datei.jpg similarity index 100% rename from csv/teammembers/66814f7cf235d801a012093f_LAYR Gaby_Foto ohneHerzen_Datei.jpg rename to archive/csv/teammembers/66814f7cf235d801a012093f_LAYR Gaby_Foto ohneHerzen_Datei.jpg diff --git a/csv/teammembers/66814ffed5c679086d9f8aad_Gabriella Benz.jpg b/archive/csv/teammembers/66814ffed5c679086d9f8aad_Gabriella Benz.jpg similarity index 100% rename from csv/teammembers/66814ffed5c679086d9f8aad_Gabriella Benz.jpg rename to archive/csv/teammembers/66814ffed5c679086d9f8aad_Gabriella Benz.jpg diff --git a/csv/teammembers/6681505c76e6052bddb6fbb7_Goran Markovic.jpg b/archive/csv/teammembers/6681505c76e6052bddb6fbb7_Goran Markovic.jpg similarity index 100% rename from csv/teammembers/6681505c76e6052bddb6fbb7_Goran Markovic.jpg rename to archive/csv/teammembers/6681505c76e6052bddb6fbb7_Goran Markovic.jpg diff --git a/csv/teammembers/668294621d04e55ce83127ae_marjan.jpeg b/archive/csv/teammembers/668294621d04e55ce83127ae_marjan.jpeg similarity index 100% rename from csv/teammembers/668294621d04e55ce83127ae_marjan.jpeg rename to archive/csv/teammembers/668294621d04e55ce83127ae_marjan.jpeg diff --git a/csv/teammembers/6682957eaa60e663f62b83b9_fatih (1).jpeg b/archive/csv/teammembers/6682957eaa60e663f62b83b9_fatih (1).jpeg similarity index 100% rename from csv/teammembers/6682957eaa60e663f62b83b9_fatih (1).jpeg rename to archive/csv/teammembers/6682957eaa60e663f62b83b9_fatih (1).jpeg diff --git a/csv/teammembers/66829917b4096eaca530ec93_Maurice.jpeg b/archive/csv/teammembers/66829917b4096eaca530ec93_Maurice.jpeg similarity index 100% rename from csv/teammembers/66829917b4096eaca530ec93_Maurice.jpeg rename to archive/csv/teammembers/66829917b4096eaca530ec93_Maurice.jpeg diff --git a/csv/teammembers/6682996f5b7187b5c937fec8_juergen.jpeg b/archive/csv/teammembers/6682996f5b7187b5c937fec8_juergen.jpeg similarity index 100% rename from csv/teammembers/6682996f5b7187b5c937fec8_juergen.jpeg rename to archive/csv/teammembers/6682996f5b7187b5c937fec8_juergen.jpeg diff --git a/csv/teammembers/66829a47122831fa02c39317_lorenz (1).jpeg b/archive/csv/teammembers/66829a47122831fa02c39317_lorenz (1).jpeg similarity index 100% rename from csv/teammembers/66829a47122831fa02c39317_lorenz (1).jpeg rename to archive/csv/teammembers/66829a47122831fa02c39317_lorenz (1).jpeg diff --git a/csv/teammembers/6682dc091d63e595692cd55e_IMG_0626 (1).jpeg b/archive/csv/teammembers/6682dc091d63e595692cd55e_IMG_0626 (1).jpeg similarity index 100% rename from csv/teammembers/6682dc091d63e595692cd55e_IMG_0626 (1).jpeg rename to archive/csv/teammembers/6682dc091d63e595692cd55e_IMG_0626 (1).jpeg diff --git a/csv/teammembers/67bc252a9c5d3fcca45df636_image0.jpeg b/archive/csv/teammembers/67bc252a9c5d3fcca45df636_image0.jpeg similarity index 100% rename from csv/teammembers/67bc252a9c5d3fcca45df636_image0.jpeg rename to archive/csv/teammembers/67bc252a9c5d3fcca45df636_image0.jpeg diff --git a/csv/teammembers/image_11743.jpg b/archive/csv/teammembers/image_11743.jpg similarity index 100% rename from csv/teammembers/image_11743.jpg rename to archive/csv/teammembers/image_11743.jpg diff --git a/csv/teammembers/image_14002.jpg b/archive/csv/teammembers/image_14002.jpg similarity index 100% rename from csv/teammembers/image_14002.jpg rename to archive/csv/teammembers/image_14002.jpg diff --git a/csv/teammembers/image_14390.jpg b/archive/csv/teammembers/image_14390.jpg similarity index 100% rename from csv/teammembers/image_14390.jpg rename to archive/csv/teammembers/image_14390.jpg diff --git a/csv/teammembers/image_15611.jpg b/archive/csv/teammembers/image_15611.jpg similarity index 100% rename from csv/teammembers/image_15611.jpg rename to archive/csv/teammembers/image_15611.jpg diff --git a/csv/teammembers/image_26290.jpg b/archive/csv/teammembers/image_26290.jpg similarity index 100% rename from csv/teammembers/image_26290.jpg rename to archive/csv/teammembers/image_26290.jpg diff --git a/csv/teammembers/image_26388.jpg b/archive/csv/teammembers/image_26388.jpg similarity index 100% rename from csv/teammembers/image_26388.jpg rename to archive/csv/teammembers/image_26388.jpg diff --git a/csv/teammembers/image_28958.jpg b/archive/csv/teammembers/image_28958.jpg similarity index 100% rename from csv/teammembers/image_28958.jpg rename to archive/csv/teammembers/image_28958.jpg diff --git a/csv/teammembers/image_30483.jpg b/archive/csv/teammembers/image_30483.jpg similarity index 100% rename from csv/teammembers/image_30483.jpg rename to archive/csv/teammembers/image_30483.jpg diff --git a/csv/teammembers/image_36619.jpg b/archive/csv/teammembers/image_36619.jpg similarity index 100% rename from csv/teammembers/image_36619.jpg rename to archive/csv/teammembers/image_36619.jpg diff --git a/csv/teammembers/image_38934.jpg b/archive/csv/teammembers/image_38934.jpg similarity index 100% rename from csv/teammembers/image_38934.jpg rename to archive/csv/teammembers/image_38934.jpg diff --git a/csv/teammembers/image_41837.jpg b/archive/csv/teammembers/image_41837.jpg similarity index 100% rename from csv/teammembers/image_41837.jpg rename to archive/csv/teammembers/image_41837.jpg diff --git a/csv/teammembers/image_45291.jpg b/archive/csv/teammembers/image_45291.jpg similarity index 100% rename from csv/teammembers/image_45291.jpg rename to archive/csv/teammembers/image_45291.jpg diff --git a/csv/teammembers/image_49094.jpg b/archive/csv/teammembers/image_49094.jpg similarity index 100% rename from csv/teammembers/image_49094.jpg rename to archive/csv/teammembers/image_49094.jpg diff --git a/csv/teammembers/image_53138.jpg b/archive/csv/teammembers/image_53138.jpg similarity index 100% rename from csv/teammembers/image_53138.jpg rename to archive/csv/teammembers/image_53138.jpg diff --git a/csv/teammembers/image_53529.jpg b/archive/csv/teammembers/image_53529.jpg similarity index 100% rename from csv/teammembers/image_53529.jpg rename to archive/csv/teammembers/image_53529.jpg diff --git a/csv/teammembers/image_62757.jpg b/archive/csv/teammembers/image_62757.jpg similarity index 100% rename from csv/teammembers/image_62757.jpg rename to archive/csv/teammembers/image_62757.jpg diff --git a/csv/teammembers/image_64436.jpg b/archive/csv/teammembers/image_64436.jpg similarity index 100% rename from csv/teammembers/image_64436.jpg rename to archive/csv/teammembers/image_64436.jpg diff --git a/csv/teammembers/image_78070.jpg b/archive/csv/teammembers/image_78070.jpg similarity index 100% rename from csv/teammembers/image_78070.jpg rename to archive/csv/teammembers/image_78070.jpg diff --git a/csv/teammembers/image_7912.jpg b/archive/csv/teammembers/image_7912.jpg similarity index 100% rename from csv/teammembers/image_7912.jpg rename to archive/csv/teammembers/image_7912.jpg diff --git a/csv/teammembers/image_79766.jpg b/archive/csv/teammembers/image_79766.jpg similarity index 100% rename from csv/teammembers/image_79766.jpg rename to archive/csv/teammembers/image_79766.jpg diff --git a/csv/teammembers/image_84310.jpg b/archive/csv/teammembers/image_84310.jpg similarity index 100% rename from csv/teammembers/image_84310.jpg rename to archive/csv/teammembers/image_84310.jpg diff --git a/csv/teammembers/image_86133.jpg b/archive/csv/teammembers/image_86133.jpg similarity index 100% rename from csv/teammembers/image_86133.jpg rename to archive/csv/teammembers/image_86133.jpg diff --git a/csv/teammembers/image_87846.jpg b/archive/csv/teammembers/image_87846.jpg similarity index 100% rename from csv/teammembers/image_87846.jpg rename to archive/csv/teammembers/image_87846.jpg diff --git a/csv/teammembers/image_89173.jpg b/archive/csv/teammembers/image_89173.jpg similarity index 100% rename from csv/teammembers/image_89173.jpg rename to archive/csv/teammembers/image_89173.jpg diff --git a/csv/wallets/64101e552b78d13df0f36bc8_r&c_industry_wallet.png b/archive/csv/wallets/64101e552b78d13df0f36bc8_r&c_industry_wallet.png similarity index 100% rename from csv/wallets/64101e552b78d13df0f36bc8_r&c_industry_wallet.png rename to archive/csv/wallets/64101e552b78d13df0f36bc8_r&c_industry_wallet.png diff --git a/csv/wallets/64101e7eeab0764d99cddd89_r&c_community_wallet.png b/archive/csv/wallets/64101e7eeab0764d99cddd89_r&c_community_wallet.png similarity index 100% rename from csv/wallets/64101e7eeab0764d99cddd89_r&c_community_wallet.png rename to archive/csv/wallets/64101e7eeab0764d99cddd89_r&c_community_wallet.png diff --git a/csv/wallets/64101e88dbfbb916fb19f3c7_r&c_energy_wallet.png b/archive/csv/wallets/64101e88dbfbb916fb19f3c7_r&c_energy_wallet.png similarity index 100% rename from csv/wallets/64101e88dbfbb916fb19f3c7_r&c_energy_wallet.png rename to archive/csv/wallets/64101e88dbfbb916fb19f3c7_r&c_energy_wallet.png diff --git a/csv/wallets/64101e96294ba08d27b675a0_r&c_mobility_wallet.png b/archive/csv/wallets/64101e96294ba08d27b675a0_r&c_mobility_wallet.png similarity index 100% rename from csv/wallets/64101e96294ba08d27b675a0_r&c_mobility_wallet.png rename to archive/csv/wallets/64101e96294ba08d27b675a0_r&c_mobility_wallet.png diff --git a/csv/wallets/64107e2a7fcced4640172c90_r&c_trust_anchor.png b/archive/csv/wallets/64107e2a7fcced4640172c90_r&c_trust_anchor.png similarity index 100% rename from csv/wallets/64107e2a7fcced4640172c90_r&c_trust_anchor.png rename to archive/csv/wallets/64107e2a7fcced4640172c90_r&c_trust_anchor.png diff --git a/csv/wallets/66a2359ee6252a5f8cc0cb5d_reComputer_R1000_2024-Jul-15_09-40-13AM-000_CustomizedView3341575976 (1).png b/archive/csv/wallets/66a2359ee6252a5f8cc0cb5d_reComputer_R1000_2024-Jul-15_09-40-13AM-000_CustomizedView3341575976 (1).png similarity index 100% rename from csv/wallets/66a2359ee6252a5f8cc0cb5d_reComputer_R1000_2024-Jul-15_09-40-13AM-000_CustomizedView3341575976 (1).png rename to archive/csv/wallets/66a2359ee6252a5f8cc0cb5d_reComputer_R1000_2024-Jul-15_09-40-13AM-000_CustomizedView3341575976 (1).png diff --git a/media/641305a87e5cfac2bf3a164b_MYPWR_header_2-transcode.mp4 b/archive/media/641305a87e5cfac2bf3a164b_MYPWR_header_2-transcode.mp4 similarity index 100% rename from media/641305a87e5cfac2bf3a164b_MYPWR_header_2-transcode.mp4 rename to archive/media/641305a87e5cfac2bf3a164b_MYPWR_header_2-transcode.mp4 diff --git a/media/641305a87e5cfac2bf3a164b_MYPWR_header_2-transcode.webm b/archive/media/641305a87e5cfac2bf3a164b_MYPWR_header_2-transcode.webm similarity index 100% rename from media/641305a87e5cfac2bf3a164b_MYPWR_header_2-transcode.webm rename to archive/media/641305a87e5cfac2bf3a164b_MYPWR_header_2-transcode.webm diff --git a/media/641403d914fcdd3035810b5c_mypwr_infographic_bg_3-transcode.mp4 b/archive/media/641403d914fcdd3035810b5c_mypwr_infographic_bg_3-transcode.mp4 similarity index 100% rename from media/641403d914fcdd3035810b5c_mypwr_infographic_bg_3-transcode.mp4 rename to archive/media/641403d914fcdd3035810b5c_mypwr_infographic_bg_3-transcode.mp4 diff --git a/media/641403d914fcdd3035810b5c_mypwr_infographic_bg_3-transcode.webm b/archive/media/641403d914fcdd3035810b5c_mypwr_infographic_bg_3-transcode.webm similarity index 100% rename from media/641403d914fcdd3035810b5c_mypwr_infographic_bg_3-transcode.webm rename to archive/media/641403d914fcdd3035810b5c_mypwr_infographic_bg_3-transcode.webm diff --git a/archive/media/index.html b/archive/media/index.html new file mode 100644 index 0000000..d5b7b80 --- /dev/null +++ b/archive/media/index.html @@ -0,0 +1,11 @@ + + + + + + Riddle&Code + + + + + diff --git a/product/facility-iq.html b/archive/product/facility-iq.html similarity index 100% rename from product/facility-iq.html rename to archive/product/facility-iq.html diff --git a/product/infrastructure-iq.html b/archive/product/infrastructure-iq.html similarity index 100% rename from product/infrastructure-iq.html rename to archive/product/infrastructure-iq.html diff --git a/product/iq-actor-id.html b/archive/product/iq-actor-id.html similarity index 100% rename from product/iq-actor-id.html rename to archive/product/iq-actor-id.html diff --git a/product/mypwr.html b/archive/product/mypwr.html similarity index 100% rename from product/mypwr.html rename to archive/product/mypwr.html diff --git a/product/pwr-trust.html b/archive/product/pwr-trust.html similarity index 100% rename from product/pwr-trust.html rename to archive/product/pwr-trust.html diff --git a/showcase.html b/archive/showcase.html similarity index 100% rename from showcase.html rename to archive/showcase.html diff --git a/showcase/drive-stake-the-industry-first-marketplace-that-empowers-all-mobility-ecosystem-participants-to-benefit-from-vehicle-generated-data-launches-today.html b/archive/showcase/drive-stake-the-industry-first-marketplace-that-empowers-all-mobility-ecosystem-participants-to-benefit-from-vehicle-generated-data-launches-today.html similarity index 100% rename from showcase/drive-stake-the-industry-first-marketplace-that-empowers-all-mobility-ecosystem-participants-to-benefit-from-vehicle-generated-data-launches-today.html rename to archive/showcase/drive-stake-the-industry-first-marketplace-that-empowers-all-mobility-ecosystem-participants-to-benefit-from-vehicle-generated-data-launches-today.html diff --git a/archive/showcase/index.html b/archive/showcase/index.html new file mode 100644 index 0000000..d5b7b80 --- /dev/null +++ b/archive/showcase/index.html @@ -0,0 +1,11 @@ + + + + + + Riddle&Code + + + + + diff --git a/showcase/new-partnership-of-riddle-code-and-s1seven-to-revolutionise-the-metal-industry.html b/archive/showcase/new-partnership-of-riddle-code-and-s1seven-to-revolutionise-the-metal-industry.html similarity index 100% rename from showcase/new-partnership-of-riddle-code-and-s1seven-to-revolutionise-the-metal-industry.html rename to archive/showcase/new-partnership-of-riddle-code-and-s1seven-to-revolutionise-the-metal-industry.html diff --git a/showcase/track-trace-evolution-driving-blockchain-enabled-packaging-solutions-for-a-sustainable-future.html b/archive/showcase/track-trace-evolution-driving-blockchain-enabled-packaging-solutions-for-a-sustainable-future.html similarity index 100% rename from showcase/track-trace-evolution-driving-blockchain-enabled-packaging-solutions-for-a-sustainable-future.html rename to archive/showcase/track-trace-evolution-driving-blockchain-enabled-packaging-solutions-for-a-sustainable-future.html diff --git a/showcase/unlocking-the-power-of-stanzertal-pioneering-energy-connectivity-for-a-greener-tomorrow.html b/archive/showcase/unlocking-the-power-of-stanzertal-pioneering-energy-connectivity-for-a-greener-tomorrow.html similarity index 100% rename from showcase/unlocking-the-power-of-stanzertal-pioneering-energy-connectivity-for-a-greener-tomorrow.html rename to archive/showcase/unlocking-the-power-of-stanzertal-pioneering-energy-connectivity-for-a-greener-tomorrow.html diff --git a/sustainability.html b/archive/sustainability.html similarity index 100% rename from sustainability.html rename to archive/sustainability.html diff --git a/build.py b/build.py new file mode 100644 index 0000000..9f114ad --- /dev/null +++ b/build.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python3 +""" +Build script: renders templates/ + locales/ → static HTML files. + + EN → root directory (templates/index.html → index.html) + DE → de/ directory (templates/index.html → de/index.html) + +Usage: + python3 build.py # build all templates + python3 build.py --check # build into temp dir and diff (for CI) + +CI integration: + Re-run build.py and check `git diff --exit-code` to catch stale builds. +""" +import re +import sys +from pathlib import Path + +try: + import yaml +except ImportError: + sys.exit("Missing dependency: pip install pyyaml") + +ROOT = Path(__file__).parent +TEMPLATES_DIR = ROOT / "templates" +LOCALES_DIR = ROOT / "locales" + +# Maps language code → output directory +LANGS = { + "en": ROOT, + "de": ROOT / "de", +} + + +def render(template: str, strings: dict) -> str: + """Replace {{ key }} placeholders with values from strings dict.""" + def replace(m): + key = m.group(1).strip() + if key not in strings: + print(f" WARNING: key '{key}' not found in locale", file=sys.stderr) + return m.group(0) # leave placeholder unchanged so it's visible + return str(strings[key]) + return re.sub(r"\{\{\s*([\w.]+)\s*\}\}", replace, template) + + +def load_locales() -> dict: + locales = {} + for lang in LANGS: + locale_file = LOCALES_DIR / f"{lang}.yaml" + if not locale_file.exists(): + sys.exit(f"ERROR: Missing locale file: {locale_file}") + with locale_file.open(encoding="utf-8") as f: + locales[lang] = yaml.safe_load(f) or {} + return locales + + +def build() -> int: + """Build all templates. Returns count of files written.""" + if not TEMPLATES_DIR.exists(): + print("No templates/ directory found. Nothing to build.") + return 0 + + locales = load_locales() + + templates = sorted(TEMPLATES_DIR.rglob("*.html")) + if not templates: + print("No HTML templates found in templates/") + return 0 + + built = 0 + for tmpl_path in templates: + rel = tmpl_path.relative_to(TEMPLATES_DIR) + source = tmpl_path.read_text(encoding="utf-8") + + for lang, out_dir in LANGS.items(): + strings = {**locales[lang], "lang": lang} + rendered = render(source, strings) + + out_path = out_dir / rel + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text(rendered, encoding="utf-8") + + print(f" [{lang}] {rel} → {out_path.relative_to(ROOT)}") + built += 1 + + return built + + +def check_mode(): + """Build into a temp dir and diff against working tree. Exit 1 if stale.""" + locales = load_locales() + templates = sorted(TEMPLATES_DIR.rglob("*.html")) + + stale = [] + for tmpl_path in templates: + rel = tmpl_path.relative_to(TEMPLATES_DIR) + source = tmpl_path.read_text(encoding="utf-8") + + for lang, real_dir in LANGS.items(): + strings = {**locales[lang], "lang": lang} + rendered = render(source, strings) + real_file = real_dir / rel + + if not real_file.exists(): + stale.append(f" MISSING: {real_file.relative_to(ROOT)}") + elif real_file.read_text(encoding="utf-8") != rendered: + stale.append(f" STALE: {real_file.relative_to(ROOT)}") + + if stale: + print("Build check FAILED — stale generated files:", file=sys.stderr) + for s in stale: + print(s, file=sys.stderr) + print("\nRun `python3 build.py` to regenerate.", file=sys.stderr) + sys.exit(1) + else: + print("Build check passed — all generated files are up to date.") + + +if __name__ == "__main__": + if "--check" in sys.argv: + check_mode() + else: + n = build() + print(f"\nBuild complete: {n} file(s) written.") diff --git a/company/about-us.html b/company/about-us.html index dcad999..b1da564 100644 --- a/company/about-us.html +++ b/company/about-us.html @@ -1,136 +1,176 @@ - + - Riddle&Code About Us - - - - - - - - - - - - - - - - - - + About Riddle&Code — Infrastructure for Distributed Energy + + + + + + + + + + +
-
+

Vienna, Austria

- About Riddle&Code
- Secure Decentralized Connectivity, Visibility & Control + Infrastructure for
distributed energy.

- Founded in Vienna, Riddle&Code builds security by design for the distributed world of tomorrow. Our mission is to provide blockchain-enabled trust infrastructure that connects digital and physical worlds, enabling us to work with key industry partners developing solutions that solve real-world challenges with an emphasis on sustainability. + Riddle&Code builds KERN — the platform utilities and aggregators use to connect, manage, and monetise distributed energy assets at scale. We own the full stack: hardware, connectivity, platform, and market access.

+
- -

Building Trust Infrastructure

+ +

The infrastructure gap in the energy transition

+

+ Distributed energy resources are multiplying — rooftop solar, batteries, heat pumps, EV chargers. Utilities face flexibility obligations. Aggregators need scale. Nobody wanted to build the connectivity and compliance layer from scratch.

We did. +

-

Security by Design

-

We're building blockchain-enabled infrastructure that provides verifiable trust for traditional industries. Our hardware-secured solutions create an immutable trust layer that solves real-world problems around asset verification, data integrity, and secure machine-to-machine interactions.

+

Infrastructure, not apps

+

KERN is the layer that sits between physical assets and energy markets. We're not a consumer app or a meter-reading service. We're the platform your operations team runs — reliably, at scale, without depending on consumer devices or WiFi.

-

Product-Led Innovation

-

We've evolved into a product-led service company delivering complete solutions that combine hardware security with software platforms. Our technology stack is built on the RDDL Network, providing distributed trust infrastructure for mission-critical applications.

+

Full stack ownership

+

Hardware, MIOTY wireless connectivity, HEMS/ESC/LSP platform, and direct market access in a single integration. Partners deploy once — they don't stitch together three separate vendor relationships to get an asset to market.

-

Sustainability Focus

-

Our emphasis on sustainability drives every solution we create. From enabling renewable energy communities to preventing supply chain fraud, we're committed to building technology that creates a better future.

+

Regulatory complexity absorbed

+

ESC compliance, flexibility reporting, and audit documentation are built into KERN — not a manual process your team maintains. We carry the technical and regulatory complexity so you carry the customer relationship.

+
-

Our Approach

-

Building verifiable trust through hardware-secured infrastructure

- +

What KERN delivers

+

One platform. Three asset classes. One integration.

+
-

Hardware Security Foundation

-

Every solution starts with secure hardware that creates incorruptible digital identities. This security-by-design foundation enables verifiable trust between machines, systems, and organizations through blockchain-enabled attestation.

+

MIOTY wireless connectivity

+

10km range, 1.5 million messages per day, ultra-low power. No WiFi, no consumer app dependency — works in basements, rural areas, and industrial sites. One gateway covers an entire neighbourhood or industrial zone.

+
+ IEC standard + 10km range + 1.5M msg/day + No per-asset commissioning +
- +
-

Industry Partnerships

-

We collaborate with leading organizations across energy, manufacturing, finance, and supply chain sectors to develop practical solutions for real-world challenges.

+

HEMS — residential assets

+

Manage residential PV and battery portfolios. Optimise intraday trading, flexibility dispatch, and curtailment prevention — automatically, across thousands of homes.

+
+ PV + battery + Intraday trading + €114/asset/yr ARR +
- +
-

Open Standards

-

We're committed to open protocols and standards-based approaches that ensure interoperability and prevent vendor lock-in. Our solutions integrate with existing infrastructure.

+

ESC — energy sharing communities

+

Community energy pooling built for Austrian and EU regulatory frameworks. Compliance is auditable and automated — not a spreadsheet your legal team reviews quarterly.

+
+ EU regulatory compliant + Automated reporting + €24/member/yr ARR +
-

Continuous Innovation

-

From research to production, we maintain a culture of innovation. Our team constantly explores new applications of blockchain, IoT, and cryptographic technologies to solve emerging challenges.

+

LSP — grid-scale flexibility

+

Large Scale Plant management for grid-scale assets: BESS, industrial loads, and aggregated portfolios. Direct access to ancillary service and flexibility markets — no third-party aggregator required.

+
+ aFRR / FCR + Direct market access + €25k/plant/yr ARR +
- -
- + +
+
+ +

Validated, not promised

+
+ +
+
+

Leading utilities

+

Validated with leading utilities. The deployment model, regulatory alignment, and economics are validated at regional scale — the same playbook applies to any regional utility territory.

+
+ +
+

MIOTY at scale

+

1.5 million messages per day demonstrated capacity. IEC standardised — not proprietary lock-in. Partners aren't betting on a single vendor's survival; they're adopting a published standard.

+
+ +
+

Unit economics that work

+

Hardware at €239 sell / €100 COGS — 58% margin. Platform ARR of €114 per HEMS household per year. The economics support utility bundle pricing and operator margin at scale.

+
+
+
+
- -

Advisory Board & Founders

+ +

The team behind KERN

- Manfred Bodner + Manfred Bodner

Manfred Bodner

Co-Founder

- LinkedIn + LinkedIn
- Tom Fürstner + Tom Fürstner

Tom Fürstner

Co-Founder

- LinkedIn + LinkedIn
- Rene Schrittwieser + Rene Schrittwieser

Rene Schrittwieser

Investor

- LinkedIn + LinkedIn
@@ -138,18 +178,16 @@

Rene Schrittwieser

-

Join Us

-

Explore career opportunities or learn more about partnering with Riddle&Code

+

Talk to the team

+

Executive briefing, technical deep-dive, or partner conversation — we'll match the format to where you are.

- -
diff --git a/company/career.html b/company/career.html index e1b97e4..4b7c9c2 100644 --- a/company/career.html +++ b/company/career.html @@ -1,65 +1,56 @@ - + - Riddle&Code Career - - - - - - - - - - - - - - - - - - + Career — Riddle&Code + + + + + + + + + + +
-

- Join Our Team
- Build Security by Design for Tomorrow's Distributed World + Join Our Team
Build the Infrastructure for the Energy Transition

- Riddle&Code is Europe's leading company building secure infrastructure for the decentralized and distributed world of tomorrow. We develop hardware & software stacks that provide a blockchain-enabled trust layer, solving real-world challenges like machine identity, product provenance, cyber insurance, and supply chain traceability. From developing our own microcontroller boards to tokenizing solar energy, our employees take pride in solving hard problems with security by design. + Riddle&Code builds KERN — the platform utilities and aggregators use to connect, dispatch and monetise distributed energy assets at scale. We work on hard problems in energy infrastructure, wireless connectivity and autonomous systems.

-

The Riddle&Code Spirit

+

The Riddle&Code Spirit

Purpose: Why do we exist?

-

Building Trust for the Distributed World.

-

Our core purpose is to provide secure, blockchain-enabled infrastructure that solves real-world problems by creating verifiable trust in decentralized systems.

+

Building infrastructure for the energy transition.

+

We provide the connectivity and autonomy layer that turns distributed energy assets into manageable, monetisable infrastructure — for utilities and aggregators across Europe.

Vision: Where are we headed?

-

A world of reliable proofs of origin enabling transparent and sustainable production chains.

-

We envision a world where the authenticity and origin of products are verifiable throughout their entire lifecycle - for a trustworthy and sustainable economy.

+

A Europe where every distributed energy asset contributes to grid stability.

+

We envision a grid where flexibility behind the meter is continuously forecasted, dispatched and confirmed — without manual intervention, at any scale.

Mission: How will we get there?

-

500 Global Companies secured by our infrastructure by 2027.

-

Our commitment is to guide, support, and empower 500 global companies with secure, blockchain-enabled infrastructure that provides verifiable trust for their critical operations.

+

KERN in every utility flexibility stack in Europe by 2030.

+

Our commitment is to deliver the autonomous energy management layer that makes distributed flexibility reliable, monetisable and scalable.

@@ -68,12 +59,12 @@

Mission: How will we get there?

Our Core Values

The principles that guide everything we do

- +
Curiosity
- We're constantly exploring, questioning, and learning. Curiosity drives innovation and helps us push boundaries in building secure, decentralized infrastructure. + We're constantly exploring, questioning, and learning. Curiosity drives innovation and helps us push boundaries in building energy infrastructure.
@@ -118,38 +109,38 @@

Our Core Values

-

Why Join Riddle&Code

+

Why Join Riddle&Code

-

Security by Design

-

Work on developing cutting-edge blockchain and cryptography products with security built-in from the ground up. Expand your skills while solving real-world problems with verifiable trust.

+

Real infrastructure impact

+

Work on a production system managing live energy assets. Your code controls real hardware behind real meters — not a simulation.

-

Vienna & Remote

+

Vienna & Remote

Vienna was ranked the most liveable city for the tenth time in a row, and we know there are other nice places too. Work where you're most productive.

Flexible Environment

-

A modern office or working remotely – enjoy a flexible working environment that adapts to your needs and lifestyle.

+

A modern office or working remotely — enjoy a flexible working environment that adapts to your needs and lifestyle.

-

Global Partners

-

Riddle&Code works with a diverse range of partners and clients from around the globe. Expand your network and perspective.

+

European Energy Market

+

Work at the intersection of wireless technology, energy markets and regulatory frameworks across Austria, Germany and the EU.

Fair Compensation

-

Receive fair compensation that corresponds to your personal qualifications and experience in blockchain and distributed systems.

+

Receive fair compensation that corresponds to your qualifications and experience.

Work-Life Balance

-

A refreshed you is a happy you! We ensure you have enough time for work-life balance and offer various perks to support your wellbeing.

+

A refreshed you is a happy you. We ensure you have enough time for work-life balance and offer various perks to support your wellbeing.

@@ -157,17 +148,15 @@

Work-Life Balance

Ready to Join Us?

-

We're always looking for talented people who share our passion for building secure infrastructure for tomorrow's distributed world.

+

We're always looking for talented people who share our passion for building infrastructure for the energy transition.

- -
diff --git a/company/get-in-touch.html b/company/get-in-touch.html index e700dc0..e5b1a0e 100644 --- a/company/get-in-touch.html +++ b/company/get-in-touch.html @@ -1,39 +1,30 @@ - + - Riddle&Code Get in Touch - - - - - - - - - - - - - - - - - - + Contact — KERN by Riddle&Code + + + + + + + + + + +
-

- Get in Touch
- Let's Build the Future Together + Let's talk.
Get in Touch

- Contact us to find out more about our products, schedule a demo, or discuss potential collaboration opportunities. Whether you're looking to integrate infrastructure-for-decentralized-assets technologies or explore hardware security solutions, we're here to help. + Book a demo, arrange an on-site visit to our live reference installation, or discuss how KERN fits into your utility or aggregator stack.

@@ -46,20 +37,18 @@

Ways to Reach Us

General Inquiries

-

For general questions about our products and services:

+

For general questions about KERN, our technology and partnership options:

office@riddleandcode.com

-

Product Demos

-

Interested in seeing our solutions in action? Schedule a personalized demo with our team.

-

Contact us to arrange a demo

+

Book a Demo

+

30 minutes — live system, real assets. We'll show you the autonomous loop in action and map which assets in your portfolio are ready for KERN.

-

Partnership Opportunities

-

Explore collaboration opportunities and strategic partnerships in the energy and blockchain space.

-

Let's discuss how we can work together

+

Request a Site Visit

+

Our reference installation in Austria is visitable on request — a live MV/LV microgrid with KERN running in production.

@@ -73,11 +62,10 @@

Headquarters

- Riddle & Code GmbH
+ Riddle & Code GmbH
c/o Spaces Icon Central Station
Gertrude-Fröhlich-Sandner-Straße 2-4/Tower 9
- 1100 Vienna
- Austria, Europe + 1100 Vienna, Austria

@@ -91,33 +79,23 @@

What We Can Help With

-

Product Information

-

Learn more about our hardware security modules, key management systems, and decentralized infrastructure solutions.

-
- -
-

Technical Support

-

Get assistance with implementation, integration, and technical questions about our solutions.

-
- -
-

Custom Solutions

-

Discuss custom development and tailored solutions for your specific industry needs and use cases.

+

Executive Briefing

+

Strategic overview of KERN, the market opportunity and how we fit into your flexibility strategy. 45 minutes, C-level format.

-

Industry Partnerships

-

Explore opportunities for collaboration, co-development, and strategic partnerships.

+

Technical Deep Dive

+

API specs, connectivity architecture, integration approach for your specific asset mix. For your technical team.

-

Career Opportunities

-

Interested in joining our team? Learn about open positions and career opportunities at Riddle&Code.

+

Live Reference

+

Visit our production installation in Austria — a real utility deployment with MV/LV microgrid, aggregator and energy community platform.

-

Media & Press

-

For media inquiries, press releases, and partnership announcements, connect with our communications team.

+

Partnership

+

Utility partnerships, aggregator relationships, platform integrations — let's discuss the right commercial model.

@@ -125,17 +103,15 @@

Media & Press

Ready to Connect?

-

Reach out to us at office@riddleandcode.com or explore our products and company information.

+

Reach out to us at office@riddleandcode.com or book a demo directly.

- - diff --git a/company/index.html b/company/index.html new file mode 100644 index 0000000..22a29bd --- /dev/null +++ b/company/index.html @@ -0,0 +1,11 @@ + + + + + + Riddle&Code — Company + + + + + diff --git a/company/media.html b/company/media.html index a6148e7..48940ae 100644 --- a/company/media.html +++ b/company/media.html @@ -1,39 +1,30 @@ - + - Riddle&Code Media - - - - - - - - - - - - - - - - - - + Media — Riddle&Code + + + + + + + + + + +
-

- Media Hub
- Press Kit & Brand Resources + Media Hub.
Press Kit & Brand Resources

- Welcome to Riddle&Code's Media Hub. Here you can find our press kit, brand logos, image materials, and information about our media activities. Download assets and learn about our mission to enable trusted digital verification systems. + Welcome to Riddle&Code's Media Hub. Here you can find our press kit, brand logos, image materials, and information about our media activities.

@@ -46,10 +37,10 @@

Who We Are

- Riddle&Code is a technology company specializing in verifiable proof of origin and asset certification across industries. The company drives the transformation towards trusted digital verification systems by enabling transparent, traceable, and sustainable production chains. + Riddle&Code builds KERN — the infrastructure platform for distributed energy management. We serve utilities, aggregators and energy communities across Europe, providing autonomous asset connectivity, flexibility forecasting and dispatch.

- From renewable energy to industrial sectors like steel and wood, Riddle&Code creates the foundation for trusted digital markets where the authenticity and origin of products can be reliably traced throughout their lifecycle. + Our technology, including MIOTY wireless connectivity and autonomous dispatch, is deployed in production with leading utilities in Austria — managing a live MV/LV microgrid, flexibility aggregator and energy community platform.

@@ -76,7 +67,7 @@

Press Kit

Media Partner Logos

-

Logos showing Riddle&Code alongside our press partners and media mentions. Ready for publication use.

+

Logos showing Riddle&Code alongside our press partners and media mentions. Ready for publication use.

Download Partner Logos
@@ -85,7 +76,7 @@

Media Partner Logos

-

For Journalists & Media

+

For Journalists & Media

@@ -101,12 +92,12 @@

Media Contact

Interview Requests

-

We're available for expert commentary on decentralized technologies, blockchain security, and sustainable technology topics.

+

We're available for expert commentary on distributed energy management, flexibility markets, MIOTY technology and the energy transition.

Usage Guidelines

-

Please respect our brand guidelines when using Riddle&Code assets. Contact us if you have questions.

+

Please respect our brand guidelines when using Riddle&Code and KERN assets. Contact us if you have questions.

@@ -117,14 +108,12 @@

Need More Information?

Contact our media team for additional resources, interview opportunities, or press inquiries.

Contact Media Team - View Latest News + View Latest News
- - diff --git a/company/news.html b/company/news.html index e1d898e..d399b64 100644 --- a/company/news.html +++ b/company/news.html @@ -1,26 +1,19 @@ - + - Riddle&Code News - - - - - - - - - - - - - - - - - - + News — Riddle&Code + + + + + + + + + + + + + +
+ + +
+

+ Neuigkeiten & Einblicke
Von Riddle&Code +

+

+ Bleiben Sie über unsere neuesten Produktupdates, Marktforschung und Unternehmensnachrichten informiert. +

+
+ +
+
+ +

Latest Content

+
+ +
+ + + + +
+ +
+ +
+
+ +
+
+

Immer auf dem Laufenden bleiben?

+

Abonnieren Sie unseren Newsletter oder folgen Sie uns auf LinkedIn.

+ +
+
+ + + + +
+ + diff --git a/de/includes/footer.html b/de/includes/footer.html new file mode 100644 index 0000000..b6a8238 --- /dev/null +++ b/de/includes/footer.html @@ -0,0 +1,179 @@ + + + diff --git a/de/includes/nav.html b/de/includes/nav.html new file mode 100644 index 0000000..94dd164 --- /dev/null +++ b/de/includes/nav.html @@ -0,0 +1,224 @@ + + diff --git a/de/index.html b/de/index.html new file mode 100644 index 0000000..e220138 --- /dev/null +++ b/de/index.html @@ -0,0 +1,526 @@ + + + + + Riddle&Code — Autonome Energie. Hinter dem Zähler. + + + + + + + + + + + + + + + + + + +
+
+
Riddle&Code — Wien
+

+ Infrastruktur für
verteilte Energie. +

+

+ Wir bauen die Plattform, die Energieversorger und Aggregatoren nutzen, um verteilte Energieanlagen zu verbinden, zu steuern und zu monetarisieren. Unser Produkt ist KERN. +

+ +
+ + + +
+ + +
+ + +
+ + +
+
+

Der autonome Regelkreis

+

Sie senden ein Signal. KERN liefert. Was hinter dem Zähler passiert, ist unsere Aufgabe.

+ +
+
+
1
+
Prognose
+
Rollierendes 24h-Flexibilitätsprofil pro Anlage und Portfolio
+
+
+
+
2
+
Anforderung
+
Flexibilitätssignal von Aggregator, Energieversorger oder Markt
+
+
+
+
3
+
Neuausgleich
+
Echtzeit-Vergleich von Signal und tatsächlichem Anlagenzustand
+
+
+
+
4
+
Steuerung
+
Autonome Anlagensteuerung via MIOTY oder Zigbee-Mesh
+
+
+
+
5
+
Bestätigung
+
Ausführung in Echtzeit an den Aggregator zurückgemeldet
+
+
+ +
+ KERN interagiert mit Ihrer Plattform in Schritt 1 und 2.
Schritte 3–5 sind vollständig autonom — kein manueller Eingriff erforderlich. +
+
+
+ + +
+
+ Live-Referenz +

Führende Energieversorger haben ihren Flexibilitäts-Stack auf R&C KERN aufgebaut

+
+
Laufendes MS/NS-Microgrid — Produktivsystem
+
Versorger-eigener Aggregator sichert Marktgebote über KERN
+
Energiegemeinschaftsplattform — KERN-Optimierungsschicht
+
+

+ Livesystem — auf Anfrage besichtigbar. +

+ Vollständige Referenz ansehen → +
+
+ + +
+

Hören Sie auf, Anlagen zu verwalten.
Lassen Sie KERN liefern.

+

30 Minuten, um Ihnen zu zeigen, wie der autonome Regelkreis funktioniert — an einem Livesystem.

+ +
+ + + + + diff --git a/de/kern/for-aggregators.html b/de/kern/for-aggregators.html new file mode 100644 index 0000000..846ef02 --- /dev/null +++ b/de/kern/for-aggregators.html @@ -0,0 +1,184 @@ + + + + + KERN für Aggregatoren — Riddle&Code + + + + + + + + + + + +
+ + +
+ KERN — Für Aggregatoren +

Ihre Gebote sind nur so gut wie
was hinter dem Zähler steht.

+

KERN agiert als prognosebasierter, autonomer Sub-Aggregator hinter dem Zähler. Sie senden ein Flexibilitätssignal — KERN wählt Assets basierend auf Echtzeitzustand und prognostizierter Verfügbarkeit, führt die Steuerung via MIOTY oder Zigbee aus und bestätigt die Lieferung zurück. Kein manueller Eingriff. Keine verpassten Gebote.

+ Book a Demo +
+ +
+ + +
+

Die fünf Probleme, die KERN löst

+
+ +
+
+ Problem +
Unzuverlässige Konnektivität zu verteilten Assets
+
Ländliche BESS-Standorte, Industriegelände, Keller — LTE bricht ab, WLAN ist instabil. Assets können nicht für Gebote eingeplant werden. Die Portfoliogröße wird durch die Infrastruktur begrenzt, nicht durch die Verfügbarkeit.
+
+
+ KERN +
MIOTY (10 km, 1,5 Mio. Nachrichten/Tag, IEC-Standard) und Zigbee Mesh verbinden jedes Asset — unabhängig von LTE und WLAN.
+
+
+ +
+
+ Problem +
Keine Steuerungsbestätigung
+
Gebot platziert, Steuerungsbefehl gesendet — ob das Asset reagiert hat, bleibt bis zur nächsten Messung unbekannt. Abweichungen werden zu spät erkannt.
+
+
+ KERN +
Jede Steuerung wird auf Asset-Ebene bestätigt und in Echtzeit zurückgemeldet. Sie wissen sofort, ob das Gebot erfüllt wird.
+
+
+ +
+
+ Problem +
Manuelle Reaktion auf Prognoseabweichungen
+
Wetterveränderung, Lastverschiebung, Asset-Ausfall — jemand muss es bemerken, entscheiden und eingreifen. Das ist nicht skalierbar.
+
+
+ KERN +
KERN vergleicht kontinuierlich den tatsächlichen Asset-Zustand mit der Gebotsposition und gleicht autonom aus — bevor die Abweichung kritisch wird.
+
+
+ +
+
+ Problem +
Schlechte Prognosequalität ohne Asset-Transparenz
+
Ohne Echtzeit-Telemetrie auf Asset-Ebene sind Flexibilitätsprognosen Schätzungen. Übergebote bedeuten Pönalen. Untergebote bedeuten Umsatzverlust.
+
+
+ KERN +
Rollierende 24-h-Flexibilitätsprognose pro Asset und Portfolio — basierend auf Live-Ladezustand, wettergestützten PV-Modellen und historischen Lastmustern. Kontinuierlich verfeinert, je näher das Lieferfenster rückt.
+
+
+ +
+
+ Problem +
Betriebsaufwand wächst mit dem Portfolio
+
Jedes neue Asset, jeder neue Standort, jede neue Asset-Klasse erhöht die Komplexität. Wachstum erfordert mehr Personal, mehr Monitoring, mehr manuelle Steuerungsprozesse.
+
+
+ KERN +
Neue Assets werden in KERN aufgenommen — der Aggregator gewinnt mehr Flexibilitätskapazität, keinen höheren Betriebsaufwand.
+
+
+ +
+
+ +
+ + +
+

Der operative Regelkreis

+
+
1. FORECAST  (rolling, 24h ahead)
+   KERN calculates per asset and portfolio:
+   what flexibility is available, when?
+   → Output: flexibility profile (MW, time window, confidence)
+   → Basis for your bidding strategy
+
+2. DEMAND  (flexibility signal from you / market)
+   You place bids based on the forecast.
+   On award, the demand signal comes back:
+   "X kW, time window T, direction reduce/increase"
+
+3. REBALANCE  (forecast vs. actual state)
+   KERN compares the demand signal against current
+   asset state in real-time: weather, state of charge,
+   current load, failures.
+   Deviation from forecast → KERN reacts autonomously.
+
+4. DISPATCH  (autonomous local control)
+   KERN decides which assets to control — BESS, HVAC,
+   EV chargers, PV curtailment — via Zigbee or MIOTY.
+   Execution confirmed.
+
+5. CONFIRMATION
+   Fulfillment status back to you in real-time.
+   Next forecast cycle starts.
+
+

+ Sie interagieren mit Schritt 1 und 2. Alles andere übernimmt KERN. +

+
+ +
+ + +
+

Bewährt im Produktiveinsatz

+
+
+
+ "Führende Energieversorger setzen KERN ein, um ihren Flexibilitätsaggregator zu betreiben — mit bestätigter Steuerung von MV/LV-Assets für Gebote auf Energiemärkten." +
Live-System · MV/LV-Microgrid · Besichtigung auf Anfrage
+
+
+ See full reference → +
+
+ + +
+

Bereit, jedes Gebot abzusichern?

+

30 Minuten, um Ihnen zu zeigen, wie KERN in Ihren bestehenden Steuerungs-Stack passt — und welche Assets Sie heute zu Ihrem Portfolio hinzufügen können.

+ +
+ + + + diff --git a/de/kern/for-communities.html b/de/kern/for-communities.html new file mode 100644 index 0000000..7df8402 --- /dev/null +++ b/de/kern/for-communities.html @@ -0,0 +1,200 @@ + + + + + KERN für Energiegemeinschaften — Riddle&Code + + + + + + + + + + + +
+ + +
+ KERN — Für Energiegemeinschaften +

Ihre Gemeinschaft erzeugt Energie.
KERN behält sie in der Gemeinschaft.

+

KERN optimiert Speicher, steuerbare Lasten und Erzeugung aller Gemeinschaftsmitglieder autonom — maximiert den gemeinsamen Eigenverbrauch und prognostiziert die kollektive Flexibilität für Märkte oder Netzbetreiber.

+ Book a Demo +
+ +
+ + +
+

Was Energiegemeinschaften heute zurückhält

+
+ +
+
+ Problem +
Eigenverbrauch wird gemessen, nicht optimiert
+
Ohne Echtzeit-Optimierung wird Energie ins Netz eingespeist, obwohl Mitglieder Bedarf haben — das Potenzial der Gemeinschaft bleibt weitgehend ungenutzt.
+
+
+ KERN +
KERN prognostiziert Erzeugung und Verbrauch pro Mitglied (24 h voraus) und steuert Assets, um den Eigenverbrauch zu maximieren.
+
+
+ +
+
+ Problem +
Keine Echtzeit-Transparenz über die Gemeinschaft
+
Betreiber wissen nicht, wie viel gerade erzeugt, verbraucht und geteilt wird — ohne diese Sicht sind Optimierung und Steuerung unmöglich.
+
+
+ KERN +
Echtzeit-Telemetrie von jedem Asset, aggregiert in einem Gemeinschafts-Dashboard. Vollständige Transparenz, pro Mitglied und insgesamt.
+
+
+ +
+
+ Problem +
Speicher und Lasten werden nicht koordiniert
+
Gemeinschaftsspeicher und steuerbare Lasten werden manuell oder gar nicht verwaltet — kein automatisches Laden bei PV-Überschuss, kein Entladen bei Mitgliederbedarf.
+
+
+ KERN +
KERN steuert gemeinsame Speicher und steuerbare Lasten autonom — gleicht Erzeugung, Speicherung und Verbrauch in Echtzeit ab.
+
+
+ +
+
+ Problem +
Konnektivität über mehrere Standorte ist ungelöst
+
Mitglieder an verschiedenen Gebäuden oder Standorten sind schwer zuverlässig zu verbinden — LTE bricht ab, WLAN reicht nicht weit genug.
+
+
+ KERN +
Zigbee Mesh für zusammenhängende Standorte, MIOTY für verteilte Mitglieder (10 km, unabhängig von LTE/WLAN) — beide als eine einheitliche Schicht verwaltet.
+
+
+ +
+
+ Problem +
Kollektives Flexibilitätspotenzial bleibt ungenutzt
+
Eine aktive Gemeinschaft mit PV und Speicher verfügt über echte kollektive Flexibilität — ohne Plattform kann sie weder prognostiziert noch angeboten werden.
+
+
+ KERN +
KERN erstellt rollierende 24-h-Flexibilitätsprognosen für die gesamte Gemeinschaft und verbindet auf Anfrage mit Aggregatoren oder Netzbetreibern.
+
+
+ +
+
+ +
+ + +
+

Wie KERN die Gemeinschaft betreibt

+
+
1. REAL-TIME MONITORING
+   KERN tracks generation and consumption of all members
+   continuously — at meter level, in real-time.
+
+2. COMMUNITY OPTIMISATION  (24h forecast + real-time)
+   KERN forecasts generation (PV) and consumption per member.
+   Goal: maximise shared self-consumption —
+   who needs what, when, and what is available right now?
+
+3. AUTONOMOUS CONTROL
+   KERN steers shared storage, controllable loads and feed-in
+   points to keep as much energy within the community as possible.
+   No manual intervention required.
+
+4. FLEXIBILITY  (optional)
+   Surplus or forecastable flexibility can be offered as a 24h
+   forecast to an aggregator or grid operator and dispatched
+   on demand — confirmed back to the requesting party.
+
+
+ +
+ + +
+

Was KERN für Gemeinschaften leistet

+
+
+

Gemeinschaftsoptimierung

+

Maximiert den kollektiven Eigenverbrauch aller Mitglieder — in Echtzeit und mit 24-h-Prognose.

+
+
+

Speicher- und Laststeuerung

+

Autonome Steuerung gemeinsamer Speicher und steuerbarer Lasten zum Ausgleich von Angebot und Nachfrage.

+
+
+

Echtzeit-Dashboard

+

Erzeugung, Verbrauch, Eigenverbrauchsquote und Flexibilitätspotenzial — für Betreiber und optional für Mitglieder.

+
+
+

Flexibilitätsprognose

+

Rollierende 24-h-Prognose der verfügbaren Gemeinschaftsflexibilität — Grundlage für Aggregatoren oder Netzbetreiber.

+
+
+

Mehrstandort-Konnektivität

+

Zigbee Mesh für zusammenhängende Standorte, MIOTY für verteilte Mitglieder — jeder Teilnehmer zuverlässig verbunden.

+
+
+

Aggregator-Anbindung

+

Gemeinschaftsflexibilität auf Abruf gesteuert — mit bestätigter Ausführung zurück an die anfragende Partei.

+
+
+ + +
+

Übernehmen Sie bereits die EEG-Abrechnung oder Mitgliederverwaltung?

+

KERN ist die Optimierungs- und Steuerungsschicht — keine Abrechnungsplattform. Wir integrieren uns in Ihre bestehende Abrechnungsinfrastruktur. Gemeinsam bieten Sie das Gesamtpaket: Abrechnung von Ihnen, Optimierung von KERN.

+ Partnerschaft besprechen → +
+
+ + +
+

Mehr Energie bleibt in der Gemeinschaft.

+

30 Minuten, um zu zeigen, wie KERN eine Live-Energiegemeinschaft optimiert — von der Echtzeit-Steuerung bis zu Flexibilitätsmärkten.

+ +
+ + + + diff --git a/de/kern/for-platforms.html b/de/kern/for-platforms.html new file mode 100644 index 0000000..c040b55 --- /dev/null +++ b/de/kern/for-platforms.html @@ -0,0 +1,196 @@ + + + + + KERN für VPP-Plattformen — Riddle&Code + + + + + + + + + + + +
+ + +
+ KERN — Für VPP-Plattformen +

Ihre Plattform ist stark
oberhalb der Asset-Ebene.
KERN schließt die Lücke darunter.

+

KERN integriert sich unterhalb Ihres VPP als Asset-Management- und Konnektivitätsschicht. Ihre Plattform erhält einen sauberen, normalisierten API-Feed, bestätigte Steuerung und 24-h-Flexibilitätsprognosen — für alle Assets Ihrer Kunden, einschließlich der bislang nicht erreichbaren.

+ API-Integration besprechen +
+ +
+ + +
+

Wo KERN in Ihren Stack passt

+
+
Market / TSO / Grid Operator
+         ↓
+┌─────────────────────────────────────────────┐
+│         YOUR PLATFORM                       │
+│  VPP optimisation · Bidding · Redispatch    │
+│  Trading · Reporting                        │
+└─────────────────┬───────────────────────────┘
+                  │  Normalised telemetry feed
+                  │  Dispatch commands + confirmation
+                  │  24h flexibility forecast
+┌─────────────────▼───────────────────────────┐
+│         KERN                           │
+│  Asset management · Autonomous dispatch     │
+│  Real-time optimisation · Forecasting       │
+└─────────────────┬───────────────────────────┘
+                  │
+         Zigbee Mesh  ·  MIOTY
+                  │
+┌─────────────────▼───────────────────────────┐
+│  PV · BESS · Heat pumps · EV chargers       │
+│  CHP · Controllable loads · Microgrids      │
+└─────────────────────────────────────────────┘
+
+
+ +
+ + +
+

Drei Lücken, die KERN füllt

+
+ +
+
+ Problem +
Assets mit unzuverlässiger Konnektivität bleiben außerhalb des Portfolios
+
Ländliche Standorte, Industriegelände, Keller — LTE bricht ab, WLAN ist instabil. Ihre Kunden können diese Assets nicht in Ihre Plattform einbringen. Potenzial bleibt ungenutzt.
+
+
+ KERN +
MIOTY (10 km, IEC-Standard) und Zigbee Mesh machen jedes Asset erreichbar — Ihre Kunden erweitern ihr Portfolio ohne Infrastrukturinvestitionen.
+
+
+ +
+
+ Problem +
Keine Steuerungsrückmeldung — der Regelkreis ist offen
+
Ihre Plattform sendet Befehle — ob das Asset reagiert hat, bleibt bis zur nächsten Messung unbekannt. Abweichungen werden zu spät erkannt, Pönalen treffen Ihre Kunden.
+
+
+ KERN +
KERN bestätigt jede Steuerung auf Asset-Ebene und meldet in Echtzeit zurück. Ihre Plattform weiß sofort, ob die Flexibilitätsverpflichtung erfüllt wird.
+
+
+ +
+
+ Problem +
Heterogene Assets erhöhen den Integrationsaufwand
+
Jeder neue Asset-Typ, jeder neue Hersteller, jedes neue Protokoll bedeutet Integrationsaufwand. Das verlangsamt das Onboarding und begrenzt die Skalierung.
+
+
+ KERN +
KERN normalisiert alle Asset-Typen auf ein einheitliches Datenmodell. Ihre Plattform spricht mit KERN — nicht mit jedem Asset einzeln.
+
+
+ +
+
+ +
+ + +
+

Was Ihre Plattform von KERN bekommt

+
+
+

Sauberer, normalisierter API-Feed

+

Einheitliche Telemetrie, unabhängig von Asset-Typen, Herstellern oder Protokollen. Eine Integration, alle Assets.

+
+
+

Steuerung mit Bestätigung

+

KERN empfängt Ihren Steuerungsbefehl, führt ihn auf Asset-Ebene aus und meldet zurück, ob und wie er erfüllt wurde.

+
+
+

24-h-Flexibilitätsprognose

+

Rollierende 24-h-Prognose pro Asset und Portfolio — basierend auf Live-Telemetrie, wettergestützten PV-Modellen und historischen Lastmustern. Kontinuierlich verfeinert bis zur Lieferung. Präzisere Gebote, weniger Pönalen für Ihre Kunden.

+
+
+

Mehr Assets im Portfolio

+

Assets, die bisher aufgrund von Konnektivitätsproblemen ausgeschlossen waren, werden verfügbar. Ihre Kunden erweitern ihr Portfolio ohne CAPEX.

+
+
+ +

Integrations-optionen

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ModellBeschreibungAufwand
API-IntegrationKERN liefert normalisierte Telemetrie und akzeptiert Steuerungsbefehle via REST/WebSocket. Ihre Plattform bleibt primär.Low
White-LabelKERN läuft unter Ihrer Marke als 'Asset Connectivity Module' für Ihre Kunden.Medium
PilotEin Kunde, eine Asset-Klasse, definierter Umfang — schnell startbar, geringes Risiko.Minimal
+
+ + +
+

Sprechen wir über die API.

+

30 Minuten, um die Spezifikation durchzugehen und zu identifizieren, welche Assets Ihrer Kunden derzeit ausgeschlossen sind — und wie schnell sich das mit KERN ändert.

+ +
+ + + + diff --git a/de/kern/for-utilities.html b/de/kern/for-utilities.html new file mode 100644 index 0000000..6c41fb4 --- /dev/null +++ b/de/kern/for-utilities.html @@ -0,0 +1,177 @@ + + + + + KERN für Energieversorger — Riddle&Code + + + + + + + + + + + +
+ + +
+ KERN — Für Energieversorger +

Sie haben die Kunden.
Sie haben die Anlagen.
KERN verbindet sie.

+

Ihre Kunden haben PV, Speicher, Wärmepumpen und Ladestationen. Ihr Netz hat Flexibilitätsbedarf. KERN ist die autonome Plattformschicht, die Ihren Kundenstamm in ein steuerbares, monetarisierbares Flexibilitätsportfolio verwandelt — ohne dafür ein eigenes Betriebsteam aufzubauen.

+ Demo buchen +
+ +
+ + +
+

Wo Energieversorger Potenzial ungenutzt lassen

+
+ +
+
+ Problem +
Steuerbare Anlagen ohne Optimierungsplattform
+
Smart Meter und CLS-Schalter werden ausgerollt — aber es gibt keine Plattform darüber. Keine Optimierung, keine Aggregation, kein Marktzugang. Das Potenzial bleibt ungenutzt.
+
+
+ KERN +
KERN sitzt als autonome Managementschicht über dem Zähler — Echtzeit-Optimierung, Flottensteuerung, marktreife Aggregation.
+
+
+ +
+
+ Problem +
Redispatch 2.0 ist manuell und kostspielig
+
Netzengpassmanagement erfordert koordinierte Steuerung verteilter Einspeiser — ohne Plattform ist das operativ komplex, fehleranfällig und nicht skalierbar.
+
+
+ KERN +
KERN übernimmt Redispatch-2.0-konformes Dispatch autonom, mit Bestätigung pro Anlage.
+
+
+ +
+
+ Problem +
Kunden wechseln zu intelligenteren Energieanbietern
+
Neue Energieanbieter bieten HEMS, Gemeinschaftstarife und Flexibilitätserlöse an. Versorger ohne smarte Services verlieren die Kunden, die aktiv teilnehmen wollen.
+
+
+ KERN +
KERN ist Ihr Behind-the-Meter-Produkt — gebrandmarkt als Ihr Service, geliefert von KERN. Kunden bleiben und engagieren sich.
+
+
+ +
+
+ Problem +
Kein Zugang zu Flexibilitätsmärkten aus dem eigenen Kundenstamm
+
Sie haben die Kundenbeziehungen und die Anlagen — aber ohne Aggregationsplattform können Sie diese Flexibilität nicht monetarisieren.
+
+
+ KERN +
KERN aggregiert Ihren Kundenstamm zu einem vermarktbaren Portfolio. Sie können einen eigenen Aggregator-Tochter betreiben — oder mit einem externen Partner zusammenarbeiten.
+
+
+ +
+
+ +
+ + +
+

Drei Wege, KERN einzusetzen

+
+ +
+
Anwendungsfall 01
+

HEMS-Flotte — Kundenstamm als flexible Ressource

+

Setzen Sie KERN HEMS bei Haushaltskunden mit PV und Speicher ein. Kunden profitieren von Eigenverbrauchsoptimierung und niedrigeren Rechnungen. Sie erhalten eine steuerbare Flotte für Redispatch oder Flexibilitätsmonetarisierung — ohne operativen Aufwand pro Kunde.

+
+ +
+
Anwendungsfall 02
+

Energiegemeinschaften — Regelkonform und automatisch

+

KERN EEG verwaltet Optimierung und autonome Anlagensteuerung für Energiegemeinschaften. Sie können Energiegemeinschaften als Service anbieten — ohne eigene Entwicklung oder manuelle Abrechnungsprozesse von KERN.

+
+ +
+
Anwendungsfall 03
+

Flexibilitätsmonetarisierung — Aus Ihrem Kundenstamm

+

Die aggregierte Flexibilität aus HEMS-Flotte, G&I-Kunden und EEG wird über KERN zu einem vermarktbaren Portfolio. Leiten Sie es über eine eigene Aggregator-Tochter oder einen externen Partner an FCR-, aFRR- oder Intraday-Märkte.

+
+ +
+
+ +
+ + +
+

Das Referenzmodell — im Produktionsbetrieb

+
+

+ Führende Energieversorger haben ihren kompletten Flexibilitäts-Stack auf KERN aufgebaut: +

+
+
+
Netz
+
Laufendes MS/NS-Microgrid — Produktivsystem, Österreich
+
+
+
Aggregator
+
Versorger-eigener Aggregator sichert Gebote auf österreichischen Energiemärkten über KERN
+
+
+
Gemeinschaften
+
Energiegemeinschaftsplattform — KERN als Optimierungsschicht
+
+
+

Livesystem — auf Anfrage in Österreich besichtigbar.

+
+ Vollständige Referenz ansehen → +
+ + +
+

Bereit, Ihren Kundenstamm zu monetarisieren?

+

30 Minuten, um zu zeigen, welche Anlagen in Ihrem Netz für KERN bereit sind — und wie das Flexibilitätspotenzial aussieht.

+ +
+ + + + diff --git a/de/kern/index.html b/de/kern/index.html new file mode 100644 index 0000000..f12f06f --- /dev/null +++ b/de/kern/index.html @@ -0,0 +1,176 @@ + + + + + KERN by Riddle&Code — Autonome Energieplattform + + + + + + + + + + + +
+ + +
+ Riddle&Code — Autonome Energieplattform +

Autonome Energie
hinter dem Zähler.

+

KERN ist die Plattform hinter dem Zähler — optimiert, prognostiziert und steuert Flexibilität aus Haushalten, Gewerbebetrieben, Microgrids und Energiegemeinschaften autonom.

+ Demo buchen +
+ +
+ + +
+
+
Sie senden ein Signal.
KERN liefert.
Was hinter dem Zähler passiert, ist unsere Aufgabe.
+

Aggregatoren, Energieversorger und Plattformen interagieren mit KERN über eine saubere API — Prognose eingehend, Flexibilitätssignal eingehend, Bestätigung ausgehend. KERN übernimmt alles dazwischen: Neuausgleich, Anlagenauswahl, Steuerung, Bestätigung.

+
+
+ +
+ + +
+

Optimierung hinter dem Zähler

+

KERN arbeitet in vier Anlagenkontexten — alle auf einer Plattform.

+
+
+

Haushalte

+

PV + Hausspeicher + Wärmepumpe + Ladestation — als Einheit optimiert. HEMS-Flottenmanagement für Energieversorger.

+
+
+

Gewerbe & Industrie

+

Gewerbe-PV, BESS, BHKW, steuerbare Lasten auf MS/NS-Ebene. Lastspitzenkappung, Lastmanagement, Flexibilitätssteuerung.

+
+
+

Microgrids

+

Mehrere Anlagen hinter einem gemeinsamen Netzverknüpfungspunkt. Koordinierte Optimierung, inselbetriebsfähig.

+
+
+

Energiegemeinschaften (EEG)

+

Gemeinschaftsoptimierung über mehrere Mitglieder und Zähler. Gemeinsamer Eigenverbrauch maximiert, kollektive Flexibilität aggregiert.

+
+
+
+ +
+ + +
+

Drei Optimierungsmodi

+

Pro Anlage oder Portfolio konfigurierbar — kombinierbar.

+
+
+
Modus 01
+

Eigenverbrauchsoptimierung

+

Lokalen Eigenverbrauch maximieren. Netzeinspeisung und -bezug minimieren. Standardmodus für Haushalte und kleinere G&I-Anlagen.

+
+
+
Modus 02
+

Wirtschaftliche Optimierung

+

Monetären Ertrag maximieren — Intraday-Arbitrage, FCR/aFRR-Gebote, Lastspitzenkappung, Reduzierung der Leistungspreise. Dispatch gesteuert durch Echtzeit-Day-Ahead- und Intradaypreissignale. Standard für Aggregatoren und G&I-Flexibilität.

+
+
+
Modus 03
+

Gemeinschaftsoptimierung

+

Gemeinsamen Eigenverbrauch über mehrere Mitglieder maximieren. Faire Zuteilung nach Anteil. Standard für EEG und Microgrids.

+
+
+
+ +
+ + +
+

Konnektivität nach Topologie

+

Die richtige Technologie für jede Anlagenkonfiguration — beide in KERN als einheitliche Schicht verwaltet.

+
+
+
Zusammenhängende Standorte
+

Zigbee-Mesh

+

Für Anlagen am selben Standort — Gebäude, Campusse, Industriegeländer. Kostengünstig, einfach zu installieren, selbstheilendes Mesh-Netz. Keine komplexe Gateway-Infrastruktur erforderlich.

+
+
+
Verteilte Anlagen
+

MIOTY

+

IEC-Standard-LPWAN für geografisch verteilte Anlagen — ländliche PV-Anlagen, MS-angeschlossene BESS, verteilte Standorte. 10 km Reichweite, 1,5 Mio. Nachrichten/Tag, unabhängig von LTE und WLAN.

+
+
+ Vollständige Technologieübersicht → +
+ +
+ + +
+

KERN für Ihre Rolle

+ +
+ + + + diff --git a/de/references/index.html b/de/references/index.html new file mode 100644 index 0000000..93fe69e --- /dev/null +++ b/de/references/index.html @@ -0,0 +1,127 @@ + + + + + Referenzen — KERN by Riddle&Code + + + + + + + + + + + + +
+ Referenzen +

Netz. Aggregator. Gemeinschaft.
Alles live.

+

Führende Energieversorger. Drei Produktiv-Deployments auf einer Plattform. Besichtigung auf Anfrage.

+
+ +
+ +
+ + +
+ R&C KERN — live installation +
+ + +
+
+ Live-Referenz — Österreich +

Führende Energieversorger haben ihren kompletten Flexibilitäts-Stack auf R&C KERN aufgebaut

+
+
+
+ +
+
Netz
+
Live-MV/LV-Microgrid
+
Echtes Mittel- und Niederspannungsnetz im Produktiveinsatz. KERN verwaltet alle Assets hinter dem Zähler — Erzeugung, Speicher, steuerbare Lasten.
+
+ +
+
Aggregator
+
Versorgereigener Flexibilitätsaggregator
+
Tochtergesellschaft des Versorgers, die Gebote auf österreichischen Energiemärkten absichert. KERN liefert autonome Steuerung mit bestätigter Ausführung.
+
+ +
+
Gemeinschaft
+
Energiegemeinschaftsplattform
+
Energiegemeinschaftsmanagement auf KERN als Optimierungs- und Steuerungsschicht — autonome Asset-Koordination, Maximierung des kollektiven Eigenverbrauchs.
+
+ +
+ +
+

+ Das System ist besichtigbar.
+ Die Live-Installation kann auf Anfrage besichtigt werden — ein echtes Microgrid, das KERN im Produktiveinsatz betreibt. Kontaktieren Sie uns für einen Besuchstermin. +

+ Besuch anfragen +
+
+
+ + +
+

Weitere Referenzen folgen

+

Weitere Kundenreferenzen sind in Vorbereitung. Wir holen derzeit die Genehmigung zur namentlichen Veröffentlichung ein.
+ Kontaktieren Sie uns um direkt mit einem Referenzkunden zu sprechen.

+
+ +
+ + +
+

Sehen Sie es in Betrieb.

+

Ein 30-minütiges Gespräch oder eine Vor-Ort-Besichtigung — was für Sie nützlicher ist.

+ +
+ + + + diff --git a/de/technology/index.html b/de/technology/index.html new file mode 100644 index 0000000..7d6fd4e --- /dev/null +++ b/de/technology/index.html @@ -0,0 +1,253 @@ + + + + + Technologie — KERN by Riddle&Code + + + + + + + + + + + + +
+ Technologie +

Gebaut für Energieinfrastruktur.
Kein IoT-Umbau.

+

MIOTY, Zigbee Mesh, ein autonomer 24-h-Prognose-Regelkreis und bestätigte Steuerung — zweckgebaut für die Anforderungen des Flexibilitätsmanagements hinter dem Zähler.

+
+ +
+ + +
+
+ KERN hardware device +
+
+ + +
+

Konnektivität nach Topologie

+

Die Technologiewahl folgt der Asset-Topologie — nicht umgekehrt.

+ +
+
+
Zusammenhängende Standorte
+

Zigbee Mesh

+

Gebäude, Campusse, Industriegelände, Microgrids an einem Standort

+
    +
  • RangeUp to 100m per node, mesh extends coverage
  • +
  • DeploymentNo gateway per room — mesh self-organises
  • +
  • CostLow hardware cost per node
  • +
  • TopologySelf-healing mesh — resilient to node failure
  • +
  • Use caseHEMS, C&I facilities, ESC on one campus
  • +
+
+
+
Verteilte Assets
+

MIOTY

+

Geografisch verteilte Assets — ländliche PV, MV-BESS, mehrere entfernte Standorte

+
    +
  • Range10 km per gateway
  • +
  • Capacity1.5M messages/day per gateway
  • +
  • StandardIEC 62657-1 — purpose-built for energy
  • +
  • IndependenceNo LTE, no WiFi required
  • +
  • Latency<1 second for dispatch commands
  • +
+
+
+ +

MIOTY vs. LoRaWAN

+ + + + + + + + + + + + + + + + +
CapabilityMIOTYLoRaWAN
StandardIEC 62657-1 (international)LoRa Alliance proprietary
RangeUp to 10 kmUp to 5 km
Messages/day/gateway1,500,000~50,000
Designed forEnergy infrastructure, utility gradeGeneral IoT sensing
Dispatch latency<1 secondSeconds to minutes
LTE independence
+
+ +
+ + +
+

Der autonome Regelkreis

+

KERN arbeitet kontinuierlich — prognostiziert, reagiert und steuert ohne manuelle Eingriffe.

+
+
1. FORECAST  (rolling, 24h ahead)
+   Per asset: state of charge, PV forecast (weather-based),
+   load forecast (historical patterns), available flexibility window.
+   Per portfolio: aggregated flexibility profile (MW, time, confidence).
+   → Delivered to aggregator / platform as API feed.
+
+2. DEMAND  (inbound signal)
+   Flexibility signal received from aggregator, utility or market:
+   volume (kW), time window, direction (increase/decrease).
+
+3. REBALANCE  (real-time delta)
+   KERN compares demand signal against current actual asset state.
+   Detects deviations: weather change, load shift, asset failure.
+   Adjusts dispatch plan autonomously — before deviation becomes critical.
+
+4. DISPATCH  (autonomous asset control)
+   KERN selects assets, determines control sequence, sends commands.
+   Execution via Zigbee Mesh (contiguous) or MIOTY (distributed).
+   Asset protocols: Modbus, SunSpec, EEBUS, proprietary inverter APIs.
+
+5. CONFIRMATION
+   Asset-level execution confirmed back to KERN.
+   Fulfillment status reported to aggregator / platform in real-time.
+   Next forecast cycle starts immediately.
+
+
+ +
+ + +
+

Wie KERN Entscheidungen trifft

+

Jeder Optimierungszyklus nutzt Live-Telemetrie, Marktsignale und erlernte Muster — keine manuelle Konfiguration.

+
+
+

Preissignalbasierter Dispatch

+

KERN verfolgt Day-Ahead- und Intradaypreise, FCR/aFRR-Signalwerte und Netzentgeltstrukturen in Echtzeit. Jede Dispatch-Entscheidung wird gegen das aktive Marktumfeld bewertet — nicht gegen einen festen Fahrplan.

+
+
+

Rollierendes Prognosemodell

+

Verbrauchs- und Erzeugungsprognose 24 Stunden im Voraus pro Asset — kombiniert Live-Ladezustand, wettergestützte PV-Modelle und historische Lastmuster. Kontinuierlich verfeinert, je näher das Lieferfenster rückt.

+
+
+

Kontinuierliches Rebalancing

+

KERN vergleicht alle paar Minuten den tatsächlichen Asset-Zustand mit der zugesagten Dispatch-Position. Erkannte Abweichungen lösen automatische Neuauswahl und Re-Dispatch aus — bevor das Lieferfenster schließt und Pönalen anfallen.

+
+
+
+ +
+ + +
+

Unterstützte Assets und Protokolle

+

KERN normalisiert alle Asset-Typen auf ein einheitliches Datenmodell — unabhängig von Hersteller oder Protokoll.

+ +

Asset-Typen

+
+
PV (residential)
+
PV (commercial)
+
Home storage
+
Commercial BESS
+
Heat pumps
+
EV chargers
+
CHP
+
Biogas
+
Controllable loads
+
MV-connected assets
+
+ +

Kommunikationsprotokolle

+
+
Modbus TCP/RTU
+
SunSpec
+
EEBUS
+
REST API
+
OCPP (EV)
+
Proprietary inverter APIs
+
+
+ +
+ + +
+

Sicherheit & Compliance

+
+
+

Ende-zu-Ende-Verschlüsselung

+

Alle Asset-Kommunikation Ende-zu-Ende verschlüsselt — vom Sensor bis zur Plattform.

+
+
+

Zertifikatsbasierte Authentifizierung

+

Jedes Asset durch Zertifikat authentifiziert — keine unautorisierten Steuerbefehle möglich.

+
+
+

Redispatch 2.0

+

Konform mit den Redispatch-2.0-Anforderungen für dezentrale Erzeugungssteuerung.

+
+
+

§14a / EAG / EnFG

+

Kompatibel mit den Regelungen für steuerbare Verbrauchseinrichtungen in Deutschland und Österreich.

+
+
+ Technische Demo buchen +
+ + + + diff --git a/images/66c5deac08b92464d185375a_MYPWR Dashboard-p-1080.png b/images/kern-dashboard-p-1080.png similarity index 100% rename from images/66c5deac08b92464d185375a_MYPWR Dashboard-p-1080.png rename to images/kern-dashboard-p-1080.png diff --git a/images/66c5deac08b92464d185375a_MYPWR Dashboard-p-1600.png b/images/kern-dashboard-p-1600.png similarity index 100% rename from images/66c5deac08b92464d185375a_MYPWR Dashboard-p-1600.png rename to images/kern-dashboard-p-1600.png diff --git a/images/66c5deac08b92464d185375a_MYPWR Dashboard-p-2000.png b/images/kern-dashboard-p-2000.png similarity index 100% rename from images/66c5deac08b92464d185375a_MYPWR Dashboard-p-2000.png rename to images/kern-dashboard-p-2000.png diff --git a/images/66c5deac08b92464d185375a_MYPWR Dashboard-p-2600.png b/images/kern-dashboard-p-2600.png similarity index 100% rename from images/66c5deac08b92464d185375a_MYPWR Dashboard-p-2600.png rename to images/kern-dashboard-p-2600.png diff --git a/images/66c5deac08b92464d185375a_MYPWR Dashboard-p-3200.png b/images/kern-dashboard-p-3200.png similarity index 100% rename from images/66c5deac08b92464d185375a_MYPWR Dashboard-p-3200.png rename to images/kern-dashboard-p-3200.png diff --git a/images/66c5deac08b92464d185375a_MYPWR Dashboard-p-500.png b/images/kern-dashboard-p-500.png similarity index 100% rename from images/66c5deac08b92464d185375a_MYPWR Dashboard-p-500.png rename to images/kern-dashboard-p-500.png diff --git a/images/66c5deac08b92464d185375a_MYPWR Dashboard-p-800.png b/images/kern-dashboard-p-800.png similarity index 100% rename from images/66c5deac08b92464d185375a_MYPWR Dashboard-p-800.png rename to images/kern-dashboard-p-800.png diff --git a/images/66c5deac08b92464d185375a_MYPWR Dashboard.png b/images/kern-dashboard.png similarity index 100% rename from images/66c5deac08b92464d185375a_MYPWR Dashboard.png rename to images/kern-dashboard.png diff --git a/images/kern-logo-dark.svg b/images/kern-logo-dark.svg new file mode 100644 index 0000000..af7506c --- /dev/null +++ b/images/kern-logo-dark.svg @@ -0,0 +1,34 @@ + + KERN by Riddle&Code — dark background + + + + + + + + + + + + + + KERN + + + Infrastructure for distributed energy. + + diff --git a/images/kern-logo.svg b/images/kern-logo.svg new file mode 100644 index 0000000..5cc3424 --- /dev/null +++ b/images/kern-logo.svg @@ -0,0 +1,39 @@ + + KERN by Riddle&Code + + + + + + + + + + + + + KERN + + + Infrastructure for distributed energy. + + diff --git a/images/kern-symbol.svg b/images/kern-symbol.svg new file mode 100644 index 0000000..48335fc --- /dev/null +++ b/images/kern-symbol.svg @@ -0,0 +1,14 @@ + + KERN symbol + + + + + + + + + diff --git a/includes/footer.html b/includes/footer.html index a98141b..1c9d076 100644 --- a/includes/footer.html +++ b/includes/footer.html @@ -1,12 +1,12 @@ diff --git a/includes/head-template.html b/includes/head-template.html index c74b40f..778a70b 100644 --- a/includes/head-template.html +++ b/includes/head-template.html @@ -17,7 +17,6 @@ - diff --git a/includes/kern-product-bar.html b/includes/kern-product-bar.html new file mode 100644 index 0000000..1886bf7 --- /dev/null +++ b/includes/kern-product-bar.html @@ -0,0 +1,58 @@ + + +
+
+ + KERN + · + a product by Riddle&Code + Infrastructure for distributed energy. +
+
diff --git a/includes/nav.html b/includes/nav.html index 53a7fd4..ad055f4 100644 --- a/includes/nav.html +++ b/includes/nav.html @@ -1,28 +1,10 @@ - - diff --git a/includes/products-section.html b/includes/products-section.html index a4fc4f9..3b9d755 100644 --- a/includes/products-section.html +++ b/includes/products-section.html @@ -155,13 +155,13 @@

MYPWR

width: 64px; height: 64px; margin: 0 auto 1.5rem; - color: var(--green, #00ff88); + color: var(--kern-accent, #F59E0B); transition: all 0.3s ease; } .product-card-link:hover .product-logo { transform: scale(1.1) translateY(-4px); - filter: drop-shadow(0 4px 12px rgba(0, 255, 136, 0.3)); + filter: drop-shadow(0 4px 12px rgba(245, 158, 11, 0.3)); } .product-logo svg { diff --git a/includes/technology-section.html b/includes/technology-section.html index 603f7f2..fbb4084 100644 --- a/includes/technology-section.html +++ b/includes/technology-section.html @@ -201,7 +201,7 @@

Application Layer

.flow-layer:hover { background: rgba(255, 255, 255, 0.06); - border-color: var(--primary-blue); + border-color: var(--kern-accent); transform: translateY(-4px); } @@ -211,7 +211,7 @@

Application Layer

left: 12px; width: 28px; height: 28px; - background: linear-gradient(135deg, var(--primary-blue), var(--primary-green)); + background: linear-gradient(135deg, var(--kern-accent), var(--primary-green)); border-radius: 50%; display: flex; align-items: center; @@ -239,7 +239,7 @@

Application Layer

.flow-layer:hover .flow-icon { transform: scale(1.15); - filter: drop-shadow(0 2px 8px rgba(0, 255, 136, 0.4)); + filter: drop-shadow(0 2px 8px rgba(245, 158, 11, 0.4)); } .flow-layer h4 { @@ -251,7 +251,7 @@

Application Layer

} .flow-subtitle { - color: var(--primary-blue); + color: var(--kern-accent); font-size: 0.875rem; font-weight: 500; margin-bottom: 0.75rem; @@ -275,7 +275,7 @@

Application Layer

.flow-tag { background: rgba(0, 212, 255, 0.1); - color: var(--primary-blue); + color: var(--kern-accent); padding: 0.25rem 0.6rem; border-radius: 6px; font-size: 0.75rem; diff --git a/index.html b/index.html index 125db58..c1e4e75 100644 --- a/index.html +++ b/index.html @@ -2,82 +2,525 @@ - Riddle&Code — Energy Infrastructure for the Future + Riddle&Code — Autonomous Energy. Behind the Meter. - - - - - - - - - - - - - + + + + + + + + + + + - - + - - -
-

- Connect. See. Control.
- Distributed Energy Assets -

-

- Take control of your energy infrastructure with secure connectivity that reaches every asset, real-time visibility into every kilowatt, and intelligent control that optimizes every decision — turning fragmented resources into a unified, intelligent system. -

-
-
- 1.5M - Messages/Day per Node + + +
+
+
Riddle&Code — Vienna
+

+ Infrastructure for
distributed energy. +

+

+ We build the platform utilities and aggregators use to connect, dispatch and monetise distributed energy assets at scale. Our product is KERN. +

+ -
- 10km - Coverage Range +
+ + + +
+ + +
+ + +
+ + +
+
+

The autonomous loop

+

You send a signal. KERN delivers. What happens behind the meter is our job.

+ +
+
+
1
+
Forecast
+
Rolling 24h flexibility profile per asset and portfolio
+
+
+
+
2
+
Demand
+
Flexibility signal from aggregator, utility or market
+
+
+
+
3
+
Rebalance
+
Real-time comparison of signal vs. actual asset state
+
+
+
+
4
+
Dispatch
+
Autonomous asset control via MIOTY or Zigbee Mesh
+
+
+
+
5
+
Confirm
+
Execution confirmed back to aggregator in real-time
+
-
- 99.9% - Uptime Reliability + +
+ KERN interacts with your platform at step 1 and 2.
Steps 3–5 are fully autonomous — no manual intervention required.
- - -
- - -
- - -
- - -
- - -
- - -
-
-

Ready to Transform Your Energy Assets?

-

- Whether you're managing a single building or an entire distribution network, we have the infrastructure and expertise to help you succeed. -

-
- Request a Demo - Explore MYPWR + + +
+
+ Live Reference +

Leading utilities built their flexibility stack on R&C KERN

+
+
Live MV/LV microgrid — production system
+
Utility-owned aggregator securing market bids via KERN
+
Energy community platform — KERN optimization layer
+

+ Live system — visitable on request. +

+ See the full reference → +
+
+ + +
+

Stop managing assets.
Let KERN deliver.

+

30 minutes to show you how the autonomous loop works — on a live system.

+
- - + + diff --git a/kern/for-aggregators.html b/kern/for-aggregators.html new file mode 100644 index 0000000..8b9532e --- /dev/null +++ b/kern/for-aggregators.html @@ -0,0 +1,184 @@ + + + + + KERN for Aggregators — Riddle&Code + + + + + + + + + + + +
+ + +
+ KERN — For Aggregators +

Your bids are only as good as
what's behind the meter.

+

KERN acts as a forecast-driven, autonomous sub-aggregator behind the meter. You send a flexibility signal — KERN selects assets based on real-time state and forecasted availability, executes via MIOTY or Zigbee, and confirms delivery back to you. No manual intervention. No missed bids.

+ Book a Demo +
+ +
+ + +
+

The five pains KERN solves

+
+ +
+
+ Problem +
Unreliable connectivity to distributed assets
+
Rural BESS sites, industrial premises, basements — LTE drops, WiFi is unstable. Assets can't be committed to bids. Portfolio size is limited by infrastructure, not by availability.
+
+
+ KERN +
MIOTY (10km, 1.5M msg/day, IEC standard) and Zigbee Mesh connect every asset — independent of LTE and WiFi.
+
+
+ +
+
+ Problem +
No dispatch confirmation
+
Bid placed, dispatch sent — whether the asset responded remains unknown until the next meter reading. Deviations are detected too late.
+
+
+ KERN +
Every dispatch is confirmed at asset level and reported back in real-time. You know immediately whether the bid is being fulfilled.
+
+
+ +
+
+ Problem +
Manual response to forecast deviations
+
Weather change, load shift, asset failure — someone has to notice, decide and intervene. This doesn't scale.
+
+
+ KERN +
KERN continuously compares actual asset state against bid position and rebalances autonomously — before the deviation becomes critical.
+
+
+ +
+
+ Problem +
Poor forecast quality without asset visibility
+
Without real-time telemetry at asset level, flexibility forecasts are estimates. Overbidding means penalties. Underbidding means lost revenue.
+
+
+ KERN +
Rolling 24h flexibility forecast per asset and portfolio — driven by live state of charge, weather-based PV models and historical load patterns. Continuously refined as the delivery window approaches.
+
+
+ +
+
+ Problem +
Operational overhead scales with portfolio
+
Every new asset, every new site, every new asset class adds complexity. Growth requires more team, more monitoring, more manual dispatch management.
+
+
+ KERN +
New assets are onboarded into KERN — the aggregator gets more flexibility capacity, not more operational burden.
+
+
+ +
+
+ +
+ + +
+

The operative loop

+
+
1. FORECAST  (rolling, 24h ahead)
+   KERN calculates per asset and portfolio:
+   what flexibility is available, when?
+   → Output: flexibility profile (MW, time window, confidence)
+   → Basis for your bidding strategy
+
+2. DEMAND  (flexibility signal from you / market)
+   You place bids based on the forecast.
+   On award, the demand signal comes back:
+   "X kW, time window T, direction reduce/increase"
+
+3. REBALANCE  (forecast vs. actual state)
+   KERN compares the demand signal against current
+   asset state in real-time: weather, state of charge,
+   current load, failures.
+   Deviation from forecast → KERN reacts autonomously.
+
+4. DISPATCH  (autonomous local control)
+   KERN decides which assets to control — BESS, HVAC,
+   EV chargers, PV curtailment — via Zigbee or MIOTY.
+   Execution confirmed.
+
+5. CONFIRMATION
+   Fulfillment status back to you in real-time.
+   Next forecast cycle starts.
+
+

+ You interact with steps 1 and 2. Everything else is KERN. +

+
+ +
+ + +
+

Proven in production

+
+
+
+ "Leading utilities use KERN to power their flexibility aggregator — securing bids on energy markets with confirmed dispatch from MV/LV assets." +
Live system · MV/LV microgrid · Visitable on request
+
+
+ See full reference → +
+
+ + +
+

Ready to secure every bid?

+

30 minutes to show you how KERN fits into your existing dispatch stack — and which assets you can add to your portfolio today.

+ +
+ + + + diff --git a/kern/for-communities.html b/kern/for-communities.html new file mode 100644 index 0000000..818cf3f --- /dev/null +++ b/kern/for-communities.html @@ -0,0 +1,200 @@ + + + + + KERN for Energy Communities — Riddle&Code + + + + + + + + + + + +
+ + +
+ KERN — For Energy Communities +

Your community generates energy.
KERN keeps it in the community.

+

KERN autonomously optimises storage, controllable loads and generation across all community members — maximising shared self-consumption and forecasting the collective flexibility that can be offered to markets or grid operators.

+ Book a Demo +
+ +
+ + +
+

What holds energy communities back today

+
+ +
+
+ Problem +
Self-consumption is measured, not optimised
+
Without real-time optimisation, energy is exported to the grid even when members have demand — the community's potential stays largely untapped.
+
+
+ KERN +
KERN forecasts generation and consumption per member (24h ahead) and steers assets to maximise what stays in the community.
+
+
+ +
+
+ Problem +
No real-time visibility across the community
+
Operators don't know how much is being generated, consumed and shared right now — optimisation and steering are impossible without this view.
+
+
+ KERN +
Real-time telemetry from every asset, aggregated into a community dashboard. Full visibility, per member and as a whole.
+
+
+ +
+
+ Problem +
Storage and loads are not coordinated
+
Community storage and controllable loads are managed manually or not at all — no automatic charging when PV surplus is available, no discharging when members need it.
+
+
+ KERN +
KERN steers shared storage and controllable loads autonomously — aligning generation, storage and consumption in real-time.
+
+
+ +
+
+ Problem +
Connectivity across multiple sites is unsolved
+
Members at different buildings or locations are hard to reliably connect — LTE drops out, WiFi doesn't reach far enough.
+
+
+ KERN +
Zigbee Mesh for contiguous sites, MIOTY for distributed members (10km, independent of LTE/WiFi) — both managed as one unified layer.
+
+
+ +
+
+ Problem +
Collective flexibility potential goes unused
+
An active community with PV and storage has real collective flexibility — but without a platform it can neither be forecasted nor offered to aggregators or grid operators.
+
+
+ KERN +
KERN provides rolling 24h flexibility forecasts for the whole community and connects to aggregators or grid operators on request.
+
+
+ +
+
+ +
+ + +
+

How KERN operates the community

+
+
1. REAL-TIME MONITORING
+   KERN tracks generation and consumption of all members
+   continuously — at meter level, in real-time.
+
+2. COMMUNITY OPTIMISATION  (24h forecast + real-time)
+   KERN forecasts generation (PV) and consumption per member.
+   Goal: maximise shared self-consumption —
+   who needs what, when, and what is available right now?
+
+3. AUTONOMOUS CONTROL
+   KERN steers shared storage, controllable loads and feed-in
+   points to keep as much energy within the community as possible.
+   No manual intervention required.
+
+4. FLEXIBILITY  (optional)
+   Surplus or forecastable flexibility can be offered as a 24h
+   forecast to an aggregator or grid operator and dispatched
+   on demand — confirmed back to the requesting party.
+
+
+ +
+ + +
+

What KERN does for communities

+
+
+

Community optimisation

+

Maximises collective self-consumption across all members — in real-time and with a 24h forecast.

+
+
+

Storage and load control

+

Autonomous steering of shared storage and controllable loads to align supply and demand within the community.

+
+
+

Real-time dashboard

+

Community generation, consumption, self-consumption rate and flexibility potential — for operators and optionally for members.

+
+
+

Flexibility forecast

+

Rolling 24h forecast of available community flexibility — the basis for aggregator or grid operator integration.

+
+
+

Multi-site connectivity

+

Zigbee Mesh for contiguous sites, MIOTY for distributed members — every participant reliably connected.

+
+
+

Aggregator connection

+

Community flexibility dispatched on demand — with confirmed execution back to the requesting party.

+
+
+ + +
+

Already handling ESC billing or member management?

+

KERN is the optimisation and control layer — not a billing platform. We integrate with your existing billing infrastructure to add autonomous asset management and flexibility forecasting on top of what you already offer your ESC clients. Together you give communities the complete package: billing from you, optimisation from KERN.

+ Discuss a partnership → +
+
+ + +
+

More energy stays in the community.

+

30 minutes to show how KERN optimises a live energy community — from real-time control to flexibility markets.

+ +
+ + + + diff --git a/kern/for-platforms.html b/kern/for-platforms.html new file mode 100644 index 0000000..ffe390d --- /dev/null +++ b/kern/for-platforms.html @@ -0,0 +1,196 @@ + + + + + KERN for VPP Platforms — Riddle&Code + + + + + + + + + + + +
+ + +
+ KERN — For VPP Platforms +

Your platform is strong
above the asset layer.
KERN closes the gap below.

+

KERN integrates below your VPP as the asset management and connectivity layer. Your platform gets a clean, normalised API feed, confirmed dispatch and 24h flexibility forecasts — for every asset your clients have, including those currently unreachable.

+ Discuss API Integration +
+ +
+ + +
+

Where KERN fits in your stack

+
+
Market / TSO / Grid Operator
+         ↓
+┌─────────────────────────────────────────────┐
+│         YOUR PLATFORM                       │
+│  VPP optimisation · Bidding · Redispatch    │
+│  Trading · Reporting                        │
+└─────────────────┬───────────────────────────┘
+                  │  Normalised telemetry feed
+                  │  Dispatch commands + confirmation
+                  │  24h flexibility forecast
+┌─────────────────▼───────────────────────────┐
+│         KERN                           │
+│  Asset management · Autonomous dispatch     │
+│  Real-time optimisation · Forecasting       │
+└─────────────────┬───────────────────────────┘
+                  │
+         Zigbee Mesh  ·  MIOTY
+                  │
+┌─────────────────▼───────────────────────────┐
+│  PV · BESS · Heat pumps · EV chargers       │
+│  CHP · Controllable loads · Microgrids      │
+└─────────────────────────────────────────────┘
+
+
+ +
+ + +
+

Three gaps KERN fills

+
+ +
+
+ Problem +
Assets with unreliable connectivity stay out of the portfolio
+
Rural sites, industrial premises, basements — LTE drops, WiFi is unstable. Your clients can't bring these assets into your platform. Potential stays on the table.
+
+
+ KERN +
MIOTY (10km, IEC standard) and Zigbee Mesh make every asset reachable — your clients grow their portfolio without infrastructure investment.
+
+
+ +
+
+ Problem +
No dispatch feedback — the loop is open
+
Your platform sends commands — but whether the asset responded stays unknown until the next meter reading. Deviations are detected too late, penalties hit your clients.
+
+
+ KERN +
KERN confirms every dispatch at asset level and reports back in real-time. Your platform knows immediately whether the flexibility commitment is being met.
+
+
+ +
+
+ Problem +
Heterogeneous assets increase integration overhead
+
Every new asset type, every new manufacturer, every new protocol means integration effort — for you or your clients. This slows onboarding and limits scale.
+
+
+ KERN +
KERN normalises all asset types to a single data model. Your platform speaks to KERN — not to every asset individually.
+
+
+ +
+
+ +
+ + +
+

What your platform gets from KERN

+
+
+

Clean, normalised API feed

+

Unified telemetry regardless of how many asset types, manufacturers or protocols are behind it. One integration, all assets.

+
+
+

Dispatch with confirmation

+

KERN receives your dispatch command, executes at asset level and reports back whether and how it was fulfilled.

+
+
+

24h flexibility forecast

+

Rolling 24h forecast per asset and portfolio — driven by live telemetry, weather-based PV models and historical load patterns. Continuously refined as delivery approaches. More precise bids, fewer penalties for your clients.

+
+
+

More assets in the portfolio

+

Assets currently excluded due to connectivity become available. Your clients grow their dispatchable portfolio without CAPEX.

+
+
+ +

Integration options

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ModelDescriptionEffort
API integrationKERN delivers normalised telemetry and accepts dispatch commands via REST/WebSocket. Your platform remains primary.Low
White-labelKERN runs under your brand as an "Asset Connectivity Module" for your clients.Medium
PilotOne client, one asset class, defined scope — fast to start, low risk.Minimal
+
+ + +
+

Let's discuss the API.

+

30 minutes to go through the spec and identify which of your clients' assets are currently excluded — and how quickly that changes with KERN.

+ +
+ + + + diff --git a/kern/for-utilities.html b/kern/for-utilities.html new file mode 100644 index 0000000..9e90ac0 --- /dev/null +++ b/kern/for-utilities.html @@ -0,0 +1,177 @@ + + + + + KERN for Utilities — Riddle&Code + + + + + + + + + + + +
+ + +
+ KERN — For Utilities +

You have the customers.
You have the assets.
KERN connects them.

+

Your customers have PV, storage, heat pumps and EV chargers. Your grid has flexibility requirements. KERN is the autonomous platform layer that turns your customer base into a steerable, monetisable flexibility portfolio — without building an operations team for it.

+ Book a Demo +
+ +
+ + +
+

Where utilities are leaving value on the table

+
+ +
+
+ Problem +
Controllable assets without an optimisation platform
+
Smart meters and CLS switches are rolling out — but there is no platform above them. No optimisation, no aggregation, no market access. The potential stays untapped.
+
+
+ KERN +
KERN sits above the meter as the autonomous management layer — real-time optimisation, fleet control, market-ready aggregation.
+
+
+ +
+
+ Problem +
Redispatch 2.0 is manual and costly
+
Grid congestion management requires coordinated control of distributed generation — without a platform this is operationally complex, error-prone and doesn't scale.
+
+
+ KERN +
KERN handles Redispatch 2.0-compliant dispatch autonomously, with confirmation per asset.
+
+
+ +
+
+ Problem +
Customers leaving for smarter energy providers
+
New energy players offer HEMS, community tariffs and flexibility revenues. Utilities without smart services lose the customers who want to actively participate.
+
+
+ KERN +
KERN is your behind-the-meter product — branded as your service, delivered by KERN. Customers stay and engage.
+
+
+ +
+
+ Problem +
No access to flexibility markets from your own customer base
+
You have the customer relationships and the assets — but without an aggregation platform you can't monetise that flexibility.
+
+
+ KERN +
KERN aggregates your customer base into a marketable portfolio. You can run your own aggregator subsidiary — or partner with an external one.
+
+
+ +
+
+ +
+ + +
+

Three ways to deploy KERN

+
+ +
+
Use case 01
+

HEMS Fleet — Customer Base as Flexible Resource

+

Deploy KERN HEMS with household customers who have PV and storage. Customers benefit from self-consumption optimisation and lower bills. You gain a steerable fleet for Redispatch or flexibility monetisation — without operational load per customer.

+
+ +
+
Use case 02
+

Energy Communities — Compliant, Automatic

+

KERN ESC manages optimisation and autonomous asset control for energy communities. You can offer energy communities as a service — no custom development, no manual billing processes needed from KERN's side.

+
+ +
+
Use case 03
+

Flexibility Monetisation — From Your Customer Base

+

The aggregated flexibility from HEMS fleet, C&I customers and ESC becomes a marketable portfolio via KERN. Route it through your own aggregator subsidiary or an external partner to FCR, aFRR or intraday markets.

+
+ +
+
+ +
+ + +
+

The reference model — running in production

+
+

+ Leading utilities built their complete flexibility stack on KERN: +

+
+
+
Grid
+
Live MV/LV microgrid — production system, Austria
+
+
+
Aggregator
+
Utility-owned aggregator securing bids on Austrian energy markets via KERN
+
+
+
Communities
+
Energy community platform — KERN as optimisation layer
+
+
+

Live system — visitable on request in Austria.

+
+ See full reference → +
+ + +
+

Ready to monetise your customer base?

+

30 minutes to map which assets in your network are ready for KERN — and what the flexibility revenue potential looks like.

+ +
+ + + + diff --git a/kern/index.html b/kern/index.html new file mode 100644 index 0000000..362d1fc --- /dev/null +++ b/kern/index.html @@ -0,0 +1,176 @@ + + + + + KERN by Riddle&Code — Autonomous Energy Platform + + + + + + + + + + + +
+ + +
+ Riddle&Code — Autonomous Energy Platform +

Autonomous energy
behind the meter.

+

KERN is the platform that sits behind the meter — autonomously optimising, forecasting and dispatching flexibility from households, facilities, microgrids and energy communities.

+ Book a Demo +
+ +
+ + +
+
+
You send a signal.
KERN delivers.
What happens behind the meter is our job.
+

Aggregators, utilities and platforms interact with KERN through a clean API — forecast in, demand signal in, flexibility confirmed out. KERN handles everything in between: rebalancing, asset selection, dispatch, confirmation.

+
+
+ +
+ + +
+

Optimising behind the meter

+

KERN works across four asset contexts — all on one platform.

+
+
+

Households

+

PV + home storage + heat pump + EV charger — optimised as a unit. HEMS fleet management for utilities.

+
+
+

Commercial & Industrial

+

Commercial PV, BESS, CHP, controllable loads on MV/LV level. Peak shaving, load management, flexibility dispatch.

+
+
+

Microgrids

+

Multiple assets behind a shared grid connection point. Coordinated optimisation, island-mode capable.

+
+
+

Energy Communities (ESC)

+

Community optimisation across multiple members and meters. Shared self-consumption maximised, collective flexibility aggregated.

+
+
+
+ +
+ + +
+

Three optimisation modes

+

Configurable per asset or portfolio — combinable.

+
+
+
Mode 01
+

Self-consumption

+

Maximise local self-consumption. Minimise grid import and export. Default mode for households and small C&I.

+
+
+
Mode 02
+

Economic optimisation

+

Maximise monetary yield — intraday arbitrage, FCR/aFRR bids, peak shaving, demand charge reduction. Dispatch driven by real-time day-ahead and intraday price signals. Default for aggregators and C&I flexibility.

+
+
+
Mode 03
+

Community optimisation

+

Maximise shared self-consumption across multiple members. Fair allocation by share. Default for ESC and microgrids.

+
+
+
+ +
+ + +
+

Connectivity by topology

+

The right technology for every asset configuration — both managed as one unified layer in KERN.

+
+
+
Contiguous sites
+

Zigbee Mesh

+

For assets on the same premises — buildings, campuses, industrial sites. Low-cost, easy to deploy, self-healing mesh network. No complex gateway infrastructure required.

+
+
+
Distributed assets
+

MIOTY

+

IEC-standard LPWAN for geographically dispersed assets — rural PV, MV-connected BESS, distributed sites. 10km range, 1.5M messages/day, independent of LTE and WiFi.

+
+
+ Full technology overview → +
+ +
+ + +
+

KERN for your role

+ +
+ + + + diff --git a/locales/de.yaml b/locales/de.yaml new file mode 100644 index 0000000..613a2b4 --- /dev/null +++ b/locales/de.yaml @@ -0,0 +1,602 @@ +# ────────────────────────────────────────────────────────────────────────────── +# Riddle&Code Website — Deutsche Locale +# HTML ist in Werten erlaubt; YAML-doppelt-gequotete Strings verwenden. +# ────────────────────────────────────────────────────────────────────────────── + +# ── Meta ────────────────────────────────────────────────────────────────────── +meta_title: "Riddle&Code — Autonome Energie. Hinter dem Zähler." +meta_description: "R&C KERN prognostiziert, steuert und liefert Flexibilität hinter dem Zähler autonom — für Aggregatoren, Energieversorger und Energiegemeinschaften." +meta_og_title: "Riddle&Code — Autonome Energie. Hinter dem Zähler." +meta_og_description: "R&C KERN prognostiziert, steuert und liefert Flexibilität hinter dem Zähler autonom." + +# ── Hero ────────────────────────────────────────────────────────────────────── +hero_location: Wien +hero_h1: "Infrastruktur für
verteilte Energie." +hero_sub: "Wir bauen die Plattform, die Energieversorger und Aggregatoren nutzen, um verteilte Energieanlagen zu verbinden, zu steuern und zu monetarisieren. Unser Produkt ist KERN." +hero_cta_primary: "KERN entdecken →" +hero_cta_secondary: "Demo buchen" + +# ── Audience cards ──────────────────────────────────────────────────────────── +audience_label: "Für wen KERN entwickelt wurde" + +aggregators_h3: Aggregatoren +aggregators_p: "Sichern Sie Ihre Gebote jedes Mal ab. KERN steuert hinter dem Zähler und bestätigt die Ausführung — kein manueller Eingriff, keine Strafzahlungen." +aggregators_link: "Für Aggregatoren →" + +utilities_h3: Energieversorger +utilities_p: "Verwandeln Sie Ihren Kundenstamm in ein steuerbares Flexibilitätsportfolio. Von der HEMS-Flotte bis zu Energiegemeinschaften — eine Plattform, eine autonome Schicht." +utilities_link: "Für Energieversorger →" + +communities_h3: Energiegemeinschaften +communities_p: "Maximieren Sie den gemeinsamen Eigenverbrauch automatisch. KERN optimiert jede Anlage in der Gemeinschaft — und verbindet kollektive Flexibilität mit Märkten." +communities_link: "Für Gemeinschaften →" + +platforms_h3: VPP-Plattformen +platforms_p: "Schließen Sie die Lücke unterhalb Ihrer Plattform. KERN liefert einen normalisierten API-Feed, bestätigte Steuerung und 24h-Prognosen — für jede Anlage Ihrer Kunden." +platforms_link: "Für Plattformen →" + +# ── Autonomer Regelkreis ────────────────────────────────────────────────────── +loop_h2: "Der autonome Regelkreis" +loop_sub: "Sie senden ein Signal. KERN liefert. Was hinter dem Zähler passiert, ist unsere Aufgabe." + +loop_step1_label: Prognose +loop_step1_desc: "Rollierendes 24h-Flexibilitätsprofil pro Anlage und Portfolio" + +loop_step2_label: Anforderung +loop_step2_desc: "Flexibilitätssignal von Aggregator, Energieversorger oder Markt" + +loop_step3_label: Neuausgleich +loop_step3_desc: "Echtzeit-Vergleich von Signal und tatsächlichem Anlagenzustand" + +loop_step4_label: Steuerung +loop_step4_desc: "Autonome Anlagensteuerung via MIOTY oder Zigbee-Mesh" + +loop_step5_label: Bestätigung +loop_step5_desc: "Ausführung in Echtzeit an den Aggregator zurückgemeldet" + +loop_callout: "KERN interagiert mit Ihrer Plattform in Schritt 1 und 2.
Schritte 3–5 sind vollständig autonom — kein manueller Eingriff erforderlich." + +# ── Referenzblock ───────────────────────────────────────────────────────────── +ref_tag: "Live-Referenz" +ref_h2: "Führende Energieversorger haben ihren Flexibilitäts-Stack auf R&C KERN aufgebaut" +ref_proof1: "Laufendes MS/NS-Microgrid — Produktivsystem" +ref_proof2: "Versorger-eigener Aggregator sichert Marktgebote über KERN" +ref_proof3: "Energiegemeinschaftsplattform — KERN-Optimierungsschicht" +ref_visit: "Livesystem — auf Anfrage besichtigbar." +ref_cta: "Vollständige Referenz ansehen →" + +# ── Abschluss-CTA ───────────────────────────────────────────────────────────── +cta_h2: "Hören Sie auf, Anlagen zu verwalten.
Lassen Sie KERN liefern." +cta_p: "30 Minuten, um Ihnen zu zeigen, wie der autonome Regelkreis funktioniert — an einem Livesystem." +cta_primary: "Demo buchen" +cta_secondary: "Technologie erkunden" + +# ── Gemeinsame CTAs (seitenübergreifend wiederverwendet) ────────────────────── +shared_book_demo: "Demo buchen" +shared_explore_tech: "Technologie erkunden" +shared_see_ref: "Vollständige Referenz ansehen →" + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN-Übersichtsseite (kern/index.html) +# ══════════════════════════════════════════════════════════════════════════════ +ki_meta_title: "KERN by Riddle&Code — Autonome Energieplattform" +ki_meta_desc: "KERN ist die autonome Energiemanagementplattform hinter dem Zähler — prognostiziert, steuert und liefert Flexibilität für Aggregatoren, Energieversorger und Energiegemeinschaften." + +ki_eyebrow: "Riddle&Code — Autonome Energieplattform" +ki_h1: "Autonome Energie
hinter dem Zähler." +ki_lead: "KERN ist die Plattform hinter dem Zähler — optimiert, prognostiziert und steuert Flexibilität aus Haushalten, Gewerbebetrieben, Microgrids und Energiegemeinschaften autonom." + +ki_concept_stmt: "Sie senden ein Signal.
KERN liefert.
Was hinter dem Zähler passiert, ist unsere Aufgabe." +ki_concept_sub: "Aggregatoren, Energieversorger und Plattformen interagieren mit KERN über eine saubere API — Prognose eingehend, Flexibilitätssignal eingehend, Bestätigung ausgehend. KERN übernimmt alles dazwischen: Neuausgleich, Anlagenauswahl, Steuerung, Bestätigung." + +ki_contexts_h2: "Optimierung hinter dem Zähler" +ki_contexts_sub: "KERN arbeitet in vier Anlagenkontexten — alle auf einer Plattform." +ki_ctx_household_h3: Haushalte +ki_ctx_household_p: "PV + Hausspeicher + Wärmepumpe + Ladestation — als Einheit optimiert. HEMS-Flottenmanagement für Energieversorger." +ki_ctx_ci_h3: "Gewerbe & Industrie" +ki_ctx_ci_p: "Gewerbe-PV, BESS, BHKW, steuerbare Lasten auf MS/NS-Ebene. Lastspitzenkappung, Lastmanagement, Flexibilitätssteuerung." +ki_ctx_micro_h3: Microgrids +ki_ctx_micro_p: "Mehrere Anlagen hinter einem gemeinsamen Netzverknüpfungspunkt. Koordinierte Optimierung, inselbetriebsfähig." +ki_ctx_esc_h3: "Energiegemeinschaften (EEG)" +ki_ctx_esc_p: "Gemeinschaftsoptimierung über mehrere Mitglieder und Zähler. Gemeinsamer Eigenverbrauch maximiert, kollektive Flexibilität aggregiert." + +ki_modes_h2: "Drei Optimierungsmodi" +ki_modes_sub: "Pro Anlage oder Portfolio konfigurierbar — kombinierbar." +ki_mode1_num: "Modus 01" +ki_mode1_h3: Eigenverbrauchsoptimierung +ki_mode1_p: "Lokalen Eigenverbrauch maximieren. Netzeinspeisung und -bezug minimieren. Standardmodus für Haushalte und kleinere G&I-Anlagen." +ki_mode2_num: "Modus 02" +ki_mode2_h3: "Wirtschaftliche Optimierung" +ki_mode2_p: "Monetären Ertrag maximieren — Intraday-Arbitrage, FCR/aFRR-Gebote, Lastspitzenkappung, Reduzierung der Leistungspreise. Dispatch gesteuert durch Echtzeit-Day-Ahead- und Intradaypreissignale. Standard für Aggregatoren und G&I-Flexibilität." +ki_mode3_num: "Modus 03" +ki_mode3_h3: Gemeinschaftsoptimierung +ki_mode3_p: "Gemeinsamen Eigenverbrauch über mehrere Mitglieder maximieren. Faire Zuteilung nach Anteil. Standard für EEG und Microgrids." + +ki_conn_h2: "Konnektivität nach Topologie" +ki_conn_sub: "Die richtige Technologie für jede Anlagenkonfiguration — beide in KERN als einheitliche Schicht verwaltet." +ki_zigbee_use: "Zusammenhängende Standorte" +ki_zigbee_h3: "Zigbee-Mesh" +ki_zigbee_p: "Für Anlagen am selben Standort — Gebäude, Campusse, Industriegeländer. Kostengünstig, einfach zu installieren, selbstheilendes Mesh-Netz. Keine komplexe Gateway-Infrastruktur erforderlich." +ki_mioty_use: "Verteilte Anlagen" +ki_mioty_h3: MIOTY +ki_mioty_p: "IEC-Standard-LPWAN für geografisch verteilte Anlagen — ländliche PV-Anlagen, MS-angeschlossene BESS, verteilte Standorte. 10 km Reichweite, 1,5 Mio. Nachrichten/Tag, unabhängig von LTE und WLAN." +ki_tech_link: "Vollständige Technologieübersicht →" + +ki_forwhom_h2: "KERN für Ihre Rolle" +ki_role_agg_h3: Aggregatoren +ki_role_agg_p: "Gebote mit bestätigter Steuerung und 24h-Prognosen absichern." +ki_role_agg_link: "Für Aggregatoren →" +ki_role_util_h3: Energieversorger +ki_role_util_p: "Ihren Kundenstamm in ein monetarisierbares Flexibilitätsportfolio umwandeln." +ki_role_util_link: "Für Energieversorger →" +ki_role_comm_h3: Energiegemeinschaften +ki_role_comm_p: "Autonome Eigenverbrauchsoptimierung und Flexibilitätsaggregation." +ki_role_comm_link: "Für Gemeinschaften →" +ki_role_vpp_h3: VPP-Plattformen +ki_role_vpp_p: "Die Lücke in der Anlagenschicht unterhalb Ihrer Plattform mit einer sauberen API schließen." +ki_role_vpp_link: "Für Plattformen →" + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN für Energieversorger (kern/for-utilities.html) +# ══════════════════════════════════════════════════════════════════════════════ +ku_meta_title: "KERN für Energieversorger — Riddle&Code" +ku_meta_desc: "Verwandeln Sie Ihren Kundenstamm in ein steuerbares Flexibilitätsportfolio. KERN verwaltet HEMS-Flotten, Energiegemeinschaften und G&I-Anlagen — autonom, auf einer Plattform." + +ku_eyebrow: "KERN — Für Energieversorger" +ku_h1: "Sie haben die Kunden.
Sie haben die Anlagen.
KERN verbindet sie." +ku_lead: "Ihre Kunden haben PV, Speicher, Wärmepumpen und Ladestationen. Ihr Netz hat Flexibilitätsbedarf. KERN ist die autonome Plattformschicht, die Ihren Kundenstamm in ein steuerbares, monetarisierbares Flexibilitätsportfolio verwandelt — ohne dafür ein eigenes Betriebsteam aufzubauen." + +ku_pains_h2: "Wo Energieversorger Potenzial ungenutzt lassen" +ku_pain1_title: "Steuerbare Anlagen ohne Optimierungsplattform" +ku_pain1_desc: "Smart Meter und CLS-Schalter werden ausgerollt — aber es gibt keine Plattform darüber. Keine Optimierung, keine Aggregation, kein Marktzugang. Das Potenzial bleibt ungenutzt." +ku_pain1_sol: "KERN sitzt als autonome Managementschicht über dem Zähler — Echtzeit-Optimierung, Flottensteuerung, marktreife Aggregation." +ku_pain2_title: "Redispatch 2.0 ist manuell und kostspielig" +ku_pain2_desc: "Netzengpassmanagement erfordert koordinierte Steuerung verteilter Einspeiser — ohne Plattform ist das operativ komplex, fehleranfällig und nicht skalierbar." +ku_pain2_sol: "KERN übernimmt Redispatch-2.0-konformes Dispatch autonom, mit Bestätigung pro Anlage." +ku_pain3_title: "Kunden wechseln zu intelligenteren Energieanbietern" +ku_pain3_desc: "Neue Energieanbieter bieten HEMS, Gemeinschaftstarife und Flexibilitätserlöse an. Versorger ohne smarte Services verlieren die Kunden, die aktiv teilnehmen wollen." +ku_pain3_sol: "KERN ist Ihr Behind-the-Meter-Produkt — gebrandmarkt als Ihr Service, geliefert von KERN. Kunden bleiben und engagieren sich." +ku_pain4_title: "Kein Zugang zu Flexibilitätsmärkten aus dem eigenen Kundenstamm" +ku_pain4_desc: "Sie haben die Kundenbeziehungen und die Anlagen — aber ohne Aggregationsplattform können Sie diese Flexibilität nicht monetarisieren." +ku_pain4_sol: "KERN aggregiert Ihren Kundenstamm zu einem vermarktbaren Portfolio. Sie können einen eigenen Aggregator-Tochter betreiben — oder mit einem externen Partner zusammenarbeiten." + +ku_cases_h2: "Drei Wege, KERN einzusetzen" +ku_case1_num: "Anwendungsfall 01" +ku_case1_h3: "HEMS-Flotte — Kundenstamm als flexible Ressource" +ku_case1_p: "Setzen Sie KERN HEMS bei Haushaltskunden mit PV und Speicher ein. Kunden profitieren von Eigenverbrauchsoptimierung und niedrigeren Rechnungen. Sie erhalten eine steuerbare Flotte für Redispatch oder Flexibilitätsmonetarisierung — ohne operativen Aufwand pro Kunde." +ku_case2_num: "Anwendungsfall 02" +ku_case2_h3: "Energiegemeinschaften — Regelkonform und automatisch" +ku_case2_p: "KERN EEG verwaltet Optimierung und autonome Anlagensteuerung für Energiegemeinschaften. Sie können Energiegemeinschaften als Service anbieten — ohne eigene Entwicklung oder manuelle Abrechnungsprozesse von KERN." +ku_case3_num: "Anwendungsfall 03" +ku_case3_h3: "Flexibilitätsmonetarisierung — Aus Ihrem Kundenstamm" +ku_case3_p: "Die aggregierte Flexibilität aus HEMS-Flotte, G&I-Kunden und EEG wird über KERN zu einem vermarktbaren Portfolio. Leiten Sie es über eine eigene Aggregator-Tochter oder einen externen Partner an FCR-, aFRR- oder Intraday-Märkte." + +ku_ref_h2: "Das Referenzmodell — im Produktionsbetrieb" +ku_ref_intro: "Führende Energieversorger haben ihren kompletten Flexibilitäts-Stack auf KERN aufgebaut:" +ku_ref_grid_label: Netz +ku_ref_grid_value: "Laufendes MS/NS-Microgrid — Produktivsystem, Österreich" +ku_ref_agg_label: Aggregator +ku_ref_agg_value: "Versorger-eigener Aggregator sichert Gebote auf österreichischen Energiemärkten über KERN" +ku_ref_comm_label: Gemeinschaften +ku_ref_comm_value: "Energiegemeinschaftsplattform — KERN als Optimierungsschicht" +ku_ref_note: "Livesystem — auf Anfrage in Österreich besichtigbar." + +ku_cta_h2: "Bereit, Ihren Kundenstamm zu monetarisieren?" +ku_cta_p: "30 Minuten, um zu zeigen, welche Anlagen in Ihrem Netz für KERN bereit sind — und wie das Flexibilitätspotenzial aussieht." + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN für Aggregatoren (kern/for-aggregators.html) +# ══════════════════════════════════════════════════════════════════════════════ +ka_meta_title: "KERN für Aggregatoren — Riddle&Code" +ka_meta_desc: "Sichern Sie Ihre Flexibilitätsgebote jedes Mal ab. KERN steuert und bestätigt die Ausführung hinter dem Zähler autonom — ohne manuelle Eingriffe, ohne Pönalen." +ka_eyebrow: "KERN — Für Aggregatoren" +ka_h1: "Ihre Gebote sind nur so gut wie
was hinter dem Zähler steht." +ka_lead: "KERN agiert als prognosebasierter, autonomer Sub-Aggregator hinter dem Zähler. Sie senden ein Flexibilitätssignal — KERN wählt Assets basierend auf Echtzeitzustand und prognostizierter Verfügbarkeit, führt die Steuerung via MIOTY oder Zigbee aus und bestätigt die Lieferung zurück. Kein manueller Eingriff. Keine verpassten Gebote." +ka_pains_h2: "Die fünf Probleme, die KERN löst" +ka_pain1_title: "Unzuverlässige Konnektivität zu verteilten Assets" +ka_pain1_desc: "Ländliche BESS-Standorte, Industriegelände, Keller — LTE bricht ab, WLAN ist instabil. Assets können nicht für Gebote eingeplant werden. Die Portfoliogröße wird durch die Infrastruktur begrenzt, nicht durch die Verfügbarkeit." +ka_pain1_sol: "MIOTY (10 km, 1,5 Mio. Nachrichten/Tag, IEC-Standard) und Zigbee Mesh verbinden jedes Asset — unabhängig von LTE und WLAN." +ka_pain2_title: "Keine Steuerungsbestätigung" +ka_pain2_desc: "Gebot platziert, Steuerungsbefehl gesendet — ob das Asset reagiert hat, bleibt bis zur nächsten Messung unbekannt. Abweichungen werden zu spät erkannt." +ka_pain2_sol: "Jede Steuerung wird auf Asset-Ebene bestätigt und in Echtzeit zurückgemeldet. Sie wissen sofort, ob das Gebot erfüllt wird." +ka_pain3_title: "Manuelle Reaktion auf Prognoseabweichungen" +ka_pain3_desc: "Wetterveränderung, Lastverschiebung, Asset-Ausfall — jemand muss es bemerken, entscheiden und eingreifen. Das ist nicht skalierbar." +ka_pain3_sol: "KERN vergleicht kontinuierlich den tatsächlichen Asset-Zustand mit der Gebotsposition und gleicht autonom aus — bevor die Abweichung kritisch wird." +ka_pain4_title: "Schlechte Prognosequalität ohne Asset-Transparenz" +ka_pain4_desc: "Ohne Echtzeit-Telemetrie auf Asset-Ebene sind Flexibilitätsprognosen Schätzungen. Übergebote bedeuten Pönalen. Untergebote bedeuten Umsatzverlust." +ka_pain4_sol: "Rollierende 24-h-Flexibilitätsprognose pro Asset und Portfolio — basierend auf Live-Ladezustand, wettergestützten PV-Modellen und historischen Lastmustern. Kontinuierlich verfeinert, je näher das Lieferfenster rückt." +ka_pain5_title: "Betriebsaufwand wächst mit dem Portfolio" +ka_pain5_desc: "Jedes neue Asset, jeder neue Standort, jede neue Asset-Klasse erhöht die Komplexität. Wachstum erfordert mehr Personal, mehr Monitoring, mehr manuelle Steuerungsprozesse." +ka_pain5_sol: "Neue Assets werden in KERN aufgenommen — der Aggregator gewinnt mehr Flexibilitätskapazität, keinen höheren Betriebsaufwand." +ka_loop_h2: "Der operative Regelkreis" +ka_loop_note: "Sie interagieren mit Schritt 1 und 2. Alles andere übernimmt KERN." +ka_ref_h2: "Bewährt im Produktiveinsatz" +ka_ref_quote: "Führende Energieversorger setzen KERN ein, um ihren Flexibilitätsaggregator zu betreiben — mit bestätigter Steuerung von MV/LV-Assets für Gebote auf Energiemärkten." +ka_ref_meta: "Live-System · MV/LV-Microgrid · Besichtigung auf Anfrage" +ka_cta_h2: "Bereit, jedes Gebot abzusichern?" +ka_cta_p: "30 Minuten, um Ihnen zu zeigen, wie KERN in Ihren bestehenden Steuerungs-Stack passt — und welche Assets Sie heute zu Ihrem Portfolio hinzufügen können." + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN für Energiegemeinschaften (kern/for-communities.html) +# ══════════════════════════════════════════════════════════════════════════════ +kc_meta_title: "KERN für Energiegemeinschaften — Riddle&Code" +kc_meta_desc: "Maximieren Sie den gemeinsamen Eigenverbrauch automatisch. KERN optimiert jedes Asset in der Gemeinschaft und verbindet kollektive Flexibilität mit Märkten." +kc_eyebrow: "KERN — Für Energiegemeinschaften" +kc_h1: "Ihre Gemeinschaft erzeugt Energie.
KERN behält sie in der Gemeinschaft." +kc_lead: "KERN optimiert Speicher, steuerbare Lasten und Erzeugung aller Gemeinschaftsmitglieder autonom — maximiert den gemeinsamen Eigenverbrauch und prognostiziert die kollektive Flexibilität für Märkte oder Netzbetreiber." +kc_pains_h2: "Was Energiegemeinschaften heute zurückhält" +kc_pain1_title: "Eigenverbrauch wird gemessen, nicht optimiert" +kc_pain1_desc: "Ohne Echtzeit-Optimierung wird Energie ins Netz eingespeist, obwohl Mitglieder Bedarf haben — das Potenzial der Gemeinschaft bleibt weitgehend ungenutzt." +kc_pain1_sol: "KERN prognostiziert Erzeugung und Verbrauch pro Mitglied (24 h voraus) und steuert Assets, um den Eigenverbrauch zu maximieren." +kc_pain2_title: "Keine Echtzeit-Transparenz über die Gemeinschaft" +kc_pain2_desc: "Betreiber wissen nicht, wie viel gerade erzeugt, verbraucht und geteilt wird — ohne diese Sicht sind Optimierung und Steuerung unmöglich." +kc_pain2_sol: "Echtzeit-Telemetrie von jedem Asset, aggregiert in einem Gemeinschafts-Dashboard. Vollständige Transparenz, pro Mitglied und insgesamt." +kc_pain3_title: "Speicher und Lasten werden nicht koordiniert" +kc_pain3_desc: "Gemeinschaftsspeicher und steuerbare Lasten werden manuell oder gar nicht verwaltet — kein automatisches Laden bei PV-Überschuss, kein Entladen bei Mitgliederbedarf." +kc_pain3_sol: "KERN steuert gemeinsame Speicher und steuerbare Lasten autonom — gleicht Erzeugung, Speicherung und Verbrauch in Echtzeit ab." +kc_pain4_title: "Konnektivität über mehrere Standorte ist ungelöst" +kc_pain4_desc: "Mitglieder an verschiedenen Gebäuden oder Standorten sind schwer zuverlässig zu verbinden — LTE bricht ab, WLAN reicht nicht weit genug." +kc_pain4_sol: "Zigbee Mesh für zusammenhängende Standorte, MIOTY für verteilte Mitglieder (10 km, unabhängig von LTE/WLAN) — beide als eine einheitliche Schicht verwaltet." +kc_pain5_title: "Kollektives Flexibilitätspotenzial bleibt ungenutzt" +kc_pain5_desc: "Eine aktive Gemeinschaft mit PV und Speicher verfügt über echte kollektive Flexibilität — ohne Plattform kann sie weder prognostiziert noch angeboten werden." +kc_pain5_sol: "KERN erstellt rollierende 24-h-Flexibilitätsprognosen für die gesamte Gemeinschaft und verbindet auf Anfrage mit Aggregatoren oder Netzbetreibern." +kc_loop_h2: "Wie KERN die Gemeinschaft betreibt" +kc_features_h2: "Was KERN für Gemeinschaften leistet" +kc_feat1_h3: Gemeinschaftsoptimierung +kc_feat1_p: "Maximiert den kollektiven Eigenverbrauch aller Mitglieder — in Echtzeit und mit 24-h-Prognose." +kc_feat2_h3: Speicher- und Laststeuerung +kc_feat2_p: "Autonome Steuerung gemeinsamer Speicher und steuerbarer Lasten zum Ausgleich von Angebot und Nachfrage." +kc_feat3_h3: Echtzeit-Dashboard +kc_feat3_p: "Erzeugung, Verbrauch, Eigenverbrauchsquote und Flexibilitätspotenzial — für Betreiber und optional für Mitglieder." +kc_feat4_h3: Flexibilitätsprognose +kc_feat4_p: "Rollierende 24-h-Prognose der verfügbaren Gemeinschaftsflexibilität — Grundlage für Aggregatoren oder Netzbetreiber." +kc_feat5_h3: Mehrstandort-Konnektivität +kc_feat5_p: "Zigbee Mesh für zusammenhängende Standorte, MIOTY für verteilte Mitglieder — jeder Teilnehmer zuverlässig verbunden." +kc_feat6_h3: Aggregator-Anbindung +kc_feat6_p: "Gemeinschaftsflexibilität auf Abruf gesteuert — mit bestätigter Ausführung zurück an die anfragende Partei." +kc_partner_h3: "Übernehmen Sie bereits die EEG-Abrechnung oder Mitgliederverwaltung?" +kc_partner_p: "KERN ist die Optimierungs- und Steuerungsschicht — keine Abrechnungsplattform. Wir integrieren uns in Ihre bestehende Abrechnungsinfrastruktur. Gemeinsam bieten Sie das Gesamtpaket: Abrechnung von Ihnen, Optimierung von KERN." +kc_partner_cta: "Partnerschaft besprechen →" +kc_cta_h2: "Mehr Energie bleibt in der Gemeinschaft." +kc_cta_p: "30 Minuten, um zu zeigen, wie KERN eine Live-Energiegemeinschaft optimiert — von der Echtzeit-Steuerung bis zu Flexibilitätsmärkten." + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN für VPP-Plattformen (kern/for-platforms.html) +# ══════════════════════════════════════════════════════════════════════════════ +kp_meta_title: "KERN für VPP-Plattformen — Riddle&Code" +kp_meta_desc: "Schließen Sie die Lücke unter Ihrer VPP-Plattform. KERN liefert normalisierte Telemetrie, bestätigte Steuerung und 24-h-Prognosen für alle Assets Ihrer Kunden." +kp_eyebrow: "KERN — Für VPP-Plattformen" +kp_h1: "Ihre Plattform ist stark
oberhalb der Asset-Ebene.
KERN schließt die Lücke darunter." +kp_lead: "KERN integriert sich unterhalb Ihres VPP als Asset-Management- und Konnektivitätsschicht. Ihre Plattform erhält einen sauberen, normalisierten API-Feed, bestätigte Steuerung und 24-h-Flexibilitätsprognosen — für alle Assets Ihrer Kunden, einschließlich der bislang nicht erreichbaren." +kp_hero_cta: "API-Integration besprechen" +kp_stack_h2: "Wo KERN in Ihren Stack passt" +kp_pains_h2: "Drei Lücken, die KERN füllt" +kp_pain1_title: "Assets mit unzuverlässiger Konnektivität bleiben außerhalb des Portfolios" +kp_pain1_desc: "Ländliche Standorte, Industriegelände, Keller — LTE bricht ab, WLAN ist instabil. Ihre Kunden können diese Assets nicht in Ihre Plattform einbringen. Potenzial bleibt ungenutzt." +kp_pain1_sol: "MIOTY (10 km, IEC-Standard) und Zigbee Mesh machen jedes Asset erreichbar — Ihre Kunden erweitern ihr Portfolio ohne Infrastrukturinvestitionen." +kp_pain2_title: "Keine Steuerungsrückmeldung — der Regelkreis ist offen" +kp_pain2_desc: "Ihre Plattform sendet Befehle — ob das Asset reagiert hat, bleibt bis zur nächsten Messung unbekannt. Abweichungen werden zu spät erkannt, Pönalen treffen Ihre Kunden." +kp_pain2_sol: "KERN bestätigt jede Steuerung auf Asset-Ebene und meldet in Echtzeit zurück. Ihre Plattform weiß sofort, ob die Flexibilitätsverpflichtung erfüllt wird." +kp_pain3_title: "Heterogene Assets erhöhen den Integrationsaufwand" +kp_pain3_desc: "Jeder neue Asset-Typ, jeder neue Hersteller, jedes neue Protokoll bedeutet Integrationsaufwand. Das verlangsamt das Onboarding und begrenzt die Skalierung." +kp_pain3_sol: "KERN normalisiert alle Asset-Typen auf ein einheitliches Datenmodell. Ihre Plattform spricht mit KERN — nicht mit jedem Asset einzeln." +kp_what_h2: "Was Ihre Plattform von KERN bekommt" +kp_what1_h3: "Sauberer, normalisierter API-Feed" +kp_what1_p: "Einheitliche Telemetrie, unabhängig von Asset-Typen, Herstellern oder Protokollen. Eine Integration, alle Assets." +kp_what2_h3: "Steuerung mit Bestätigung" +kp_what2_p: "KERN empfängt Ihren Steuerungsbefehl, führt ihn auf Asset-Ebene aus und meldet zurück, ob und wie er erfüllt wurde." +kp_what3_h3: "24-h-Flexibilitätsprognose" +kp_what3_p: "Rollierende 24-h-Prognose pro Asset und Portfolio — basierend auf Live-Telemetrie, wettergestützten PV-Modellen und historischen Lastmustern. Kontinuierlich verfeinert bis zur Lieferung. Präzisere Gebote, weniger Pönalen für Ihre Kunden." +kp_what4_h3: "Mehr Assets im Portfolio" +kp_what4_p: "Assets, die bisher aufgrund von Konnektivitätsproblemen ausgeschlossen waren, werden verfügbar. Ihre Kunden erweitern ihr Portfolio ohne CAPEX." +kp_integ_h2: "Integrations-optionen" +kp_integ_th1: Modell +kp_integ_th2: Beschreibung +kp_integ_th3: Aufwand +kp_integ1_model: API-Integration +kp_integ1_desc: "KERN liefert normalisierte Telemetrie und akzeptiert Steuerungsbefehle via REST/WebSocket. Ihre Plattform bleibt primär." +kp_integ2_model: White-Label +kp_integ2_desc: "KERN läuft unter Ihrer Marke als 'Asset Connectivity Module' für Ihre Kunden." +kp_integ3_model: Pilot +kp_integ3_desc: "Ein Kunde, eine Asset-Klasse, definierter Umfang — schnell startbar, geringes Risiko." +kp_cta_h2: "Sprechen wir über die API." +kp_cta_p: "30 Minuten, um die Spezifikation durchzugehen und zu identifizieren, welche Assets Ihrer Kunden derzeit ausgeschlossen sind — und wie schnell sich das mit KERN ändert." +kp_cta_primary: "API-Integration besprechen" + +# ══════════════════════════════════════════════════════════════════════════════ +# Referenzen (references/index.html) +# ══════════════════════════════════════════════════════════════════════════════ +rp_meta_title: "Referenzen — KERN by Riddle&Code" +rp_meta_desc: "R&C KERN im Produktiveinsatz — Live-MV/LV-Microgrid, versorgereigener Aggregator, Energiegemeinschaftsplattform. Besichtigung auf Anfrage." +rp_eyebrow: Referenzen +rp_h1: "Netz. Aggregator. Gemeinschaft.
Alles live." +rp_lead: "Führende Energieversorger. Drei Produktiv-Deployments auf einer Plattform. Besichtigung auf Anfrage." +rp_ref_tag: "Live-Referenz — Österreich" +rp_ref_h2: "Führende Energieversorger haben ihren kompletten Flexibilitäts-Stack auf R&C KERN aufgebaut" +rp_item1_label: Netz +rp_item1_title: "Live-MV/LV-Microgrid" +rp_item1_desc: "Echtes Mittel- und Niederspannungsnetz im Produktiveinsatz. KERN verwaltet alle Assets hinter dem Zähler — Erzeugung, Speicher, steuerbare Lasten." +rp_item2_label: Aggregator +rp_item2_title: "Versorgereigener Flexibilitätsaggregator" +rp_item2_desc: "Tochtergesellschaft des Versorgers, die Gebote auf österreichischen Energiemärkten absichert. KERN liefert autonome Steuerung mit bestätigter Ausführung." +rp_item3_label: Gemeinschaft +rp_item3_title: "Energiegemeinschaftsplattform" +rp_item3_desc: "Energiegemeinschaftsmanagement auf KERN als Optimierungs- und Steuerungsschicht — autonome Asset-Koordination, Maximierung des kollektiven Eigenverbrauchs." +rp_visit_strong: "Das System ist besichtigbar." +rp_visit_p: "Die Live-Installation kann auf Anfrage besichtigt werden — ein echtes Microgrid, das KERN im Produktiveinsatz betreibt. Kontaktieren Sie uns für einen Besuchstermin." +rp_visit_cta: "Besuch anfragen" +rp_soon_h3: "Weitere Referenzen folgen" +rp_soon_p: "Weitere Kundenreferenzen sind in Vorbereitung. Wir holen derzeit die Genehmigung zur namentlichen Veröffentlichung ein." +rp_soon_link: "Kontaktieren Sie uns" +rp_soon_suffix: "um direkt mit einem Referenzkunden zu sprechen." +rp_cta_h2: "Sehen Sie es in Betrieb." +rp_cta_p: "Ein 30-minütiges Gespräch oder eine Vor-Ort-Besichtigung — was für Sie nützlicher ist." +rp_cta_primary: "Demo oder Besuch buchen" +rp_cta_secondary: "Zurück zu KERN →" + +# ══════════════════════════════════════════════════════════════════════════════ +# Technologie (technology/index.html) +# ══════════════════════════════════════════════════════════════════════════════ +tech_meta_title: "Technologie — KERN by Riddle&Code" +tech_meta_desc: "MIOTY, Zigbee Mesh, 24-h-Flexibilitätsprognosen und autonome Steuerung — die Technologie hinter KERN." +tech_eyebrow: Technologie +tech_h1: "Gebaut für Energieinfrastruktur.
Kein IoT-Umbau." +tech_lead: "MIOTY, Zigbee Mesh, ein autonomer 24-h-Prognose-Regelkreis und bestätigte Steuerung — zweckgebaut für die Anforderungen des Flexibilitätsmanagements hinter dem Zähler." +tech_conn_h2: "Konnektivität nach Topologie" +tech_conn_sub: "Die Technologiewahl folgt der Asset-Topologie — nicht umgekehrt." +tech_zigbee_badge: "Zusammenhängende Standorte" +tech_zigbee_h3: Zigbee Mesh +tech_zigbee_use: "Gebäude, Campusse, Industriegelände, Microgrids an einem Standort" +tech_mioty_badge: "Verteilte Assets" +tech_mioty_h3: MIOTY +tech_mioty_use: "Geografisch verteilte Assets — ländliche PV, MV-BESS, mehrere entfernte Standorte" +tech_vs_h3: "MIOTY vs. LoRaWAN" +tech_loop_h2: "Der autonome Regelkreis" +tech_loop_sub: "KERN arbeitet kontinuierlich — prognostiziert, reagiert und steuert ohne manuelle Eingriffe." +tech_optim_h2: "Wie KERN Entscheidungen trifft" +tech_optim_sub: "Jeder Optimierungszyklus nutzt Live-Telemetrie, Marktsignale und erlernte Muster — keine manuelle Konfiguration." +tech_optim1_h4: "Preissignalbasierter Dispatch" +tech_optim1_p: "KERN verfolgt Day-Ahead- und Intradaypreise, FCR/aFRR-Signalwerte und Netzentgeltstrukturen in Echtzeit. Jede Dispatch-Entscheidung wird gegen das aktive Marktumfeld bewertet — nicht gegen einen festen Fahrplan." +tech_optim2_h4: "Rollierendes Prognosemodell" +tech_optim2_p: "Verbrauchs- und Erzeugungsprognose 24 Stunden im Voraus pro Asset — kombiniert Live-Ladezustand, wettergestützte PV-Modelle und historische Lastmuster. Kontinuierlich verfeinert, je näher das Lieferfenster rückt." +tech_optim3_h4: "Kontinuierliches Rebalancing" +tech_optim3_p: "KERN vergleicht alle paar Minuten den tatsächlichen Asset-Zustand mit der zugesagten Dispatch-Position. Erkannte Abweichungen lösen automatische Neuauswahl und Re-Dispatch aus — bevor das Lieferfenster schließt und Pönalen anfallen." +tech_assets_h2: "Unterstützte Assets und Protokolle" +tech_assets_sub: "KERN normalisiert alle Asset-Typen auf ein einheitliches Datenmodell — unabhängig von Hersteller oder Protokoll." +tech_assets_label1: "Asset-Typen" +tech_assets_label2: "Kommunikationsprotokolle" +tech_security_h2: "Sicherheit & Compliance" +tech_sec1_h4: "Ende-zu-Ende-Verschlüsselung" +tech_sec1_p: "Alle Asset-Kommunikation Ende-zu-Ende verschlüsselt — vom Sensor bis zur Plattform." +tech_sec2_h4: "Zertifikatsbasierte Authentifizierung" +tech_sec2_p: "Jedes Asset durch Zertifikat authentifiziert — keine unautorisierten Steuerbefehle möglich." +tech_sec3_h4: "Redispatch 2.0" +tech_sec3_p: "Konform mit den Redispatch-2.0-Anforderungen für dezentrale Erzeugungssteuerung." +tech_sec4_h4: "§14a / EAG / EnFG" +tech_sec4_p: "Kompatibel mit den Regelungen für steuerbare Verbrauchseinrichtungen in Deutschland und Österreich." +tech_cta: "Technische Demo buchen" + +# ══════════════════════════════════════════════════════════════════════════════ +# Über uns (company/about-us.html) +# ══════════════════════════════════════════════════════════════════════════════ +au_meta_title: "Über Riddle&Code — Infrastruktur für verteilte Energie" +au_meta_desc: "Riddle&Code baut KERN — die Infrastrukturplattform für verteiltes Energiemanagement. Für Energieversorger, Aggregatoren und Gemeinschaften in ganz Europa." +au_eyebrow: "Wien, Österreich" +au_h1: "Infrastruktur für
verteilte Energie." +au_sub: "Riddle&Code baut KERN — die Plattform, mit der Energieversorger und Aggregatoren verteilte Energieanlagen verbinden, verwalten und monetarisieren. Wir besitzen den gesamten Stack: Hardware, Konnektivität, Plattform und Marktzugang." +au_why_tag: "WARUM WIR EXISTIEREN" +au_why_h2: "Die Infrastrukturlücke in der Energiewende" +au_why_desc: "Dezentrale Energiequellen nehmen zu — Dachsolar, Batterien, Wärmepumpen, Ladestationen. Energieversorger stehen vor Flexibilitätsverpflichtungen. Aggregatoren brauchen Skalierung. Niemand wollte die Konnektivitäts- und Compliance-Schicht von Grund auf neu aufbauen.

Wir haben es getan." +au_val1_h3: "Infrastruktur, keine Apps" +au_val1_p: "KERN ist die Schicht, die zwischen physischen Assets und Energiemärkten sitzt. Wir sind keine Verbraucher-App oder ein Ableseservice. Wir sind die Plattform, die Ihr Betriebsteam zuverlässig und skalierbar betreibt." +au_val2_h3: "Vollständige Stack-Kontrolle" +au_val2_p: "Hardware, MIOTY-Funkkonnektivität, HEMS/ESC/LSP-Plattform und direkter Marktzugang in einer einzigen Integration. Partner setzen einmal auf — kein Zusammenstückeln mehrerer Anbieter." +au_val3_h3: "Regulatorische Komplexität absorbiert" +au_val3_p: "EEG-Compliance, Flexibilitätsberichterstattung und Prüfdokumentation sind in KERN integriert — kein manueller Prozess. Wir tragen die technische und regulatorische Komplexität, damit Sie die Kundenbeziehung tragen." +au_what_h3: "Was KERN liefert" +au_what_sub: "Eine Plattform. Drei Asset-Klassen. Eine Integration." +au_tech1_h4: "MIOTY-Funkkonnektivität" +au_tech1_p: "10 km Reichweite, 1,5 Millionen Nachrichten pro Tag, ultra-niedriger Stromverbrauch. Kein WLAN, keine App-Abhängigkeit — funktioniert in Kellern, ländlichen Gebieten und Industriestandorten." +au_tech2_h4: "HEMS — Wohngebäude-Assets" +au_tech2_p: "Verwaltung von Wohngebäude-PV- und Batterieportfolios. Optimierung von Intraday-Handel, Flexibilitätssteuerung und Abregelungsvermeidung — automatisch, über Tausende von Haushalten." +au_tech3_h4: "ESC — Energiegemeinschaften" +au_tech3_p: "Gemeinschaftliche Energiebündelung für österreichische und EU-Rechtsrahmen. Compliance ist prüfbar und automatisiert — kein manueller Prozess für Ihre Rechtsabteilung." +au_tech4_h4: "LSP — Netzskala-Flexibilität" +au_tech4_p: "Large Scale Plant Management für netzskale Assets: BESS, industrielle Lasten und aggregierte Portfolios. Direktzugang zu Systemdienstleistungs- und Flexibilitätsmärkten." +au_proof_tag: REFERENZEN +au_proof_h2: "Validiert, nicht versprochen" +au_proof1_h3: "Führende Energieversorger" +au_proof1_p: "Validiert mit führenden Energieversorgern. Das Einsatzmodell, die regulatorische Ausrichtung und die Wirtschaftlichkeit sind auf regionaler Ebene validiert." +au_proof2_h3: "MIOTY im Maßstab" +au_proof2_p: "1,5 Millionen Nachrichten pro Tag demonstrierte Kapazität. IEC-standardisiert — kein proprietäres Lock-in. Partner übernehmen einen veröffentlichten Standard." +au_proof3_h3: "Wirtschaftlichkeit, die funktioniert" +au_proof3_p: "Hardware zu €239 Verkauf / €100 COGS — 58 % Marge. Plattform-ARR von €114 pro HEMS-Haushalt pro Jahr. Die Wirtschaftlichkeit unterstützt Versorgerbündelpreise im Maßstab." +au_founders_tag: GRÜNDER +au_founders_h2: "Das Team hinter KERN" +au_cta_h2: "Sprechen Sie mit dem Team" +au_cta_p: "Executive Briefing, technischer Deep Dive oder Partnergespräch — wir passen das Format an Ihre Situation an." +au_cta_primary: "Kontakt aufnehmen" +au_cta_secondary: "KERN entdecken" + +# ══════════════════════════════════════════════════════════════════════════════ +# Kontakt (company/get-in-touch.html) +# ══════════════════════════════════════════════════════════════════════════════ +git_meta_title: "Kontakt — KERN by Riddle&Code" +git_meta_desc: "Demo buchen, Besuch der Live-Referenzanlage vereinbaren oder besprechen, wie KERN in Ihre Infrastruktur passt." +git_h1: "Sprechen wir.
Kontakt aufnehmen" +git_sub: "Demo buchen, Besuch unserer Live-Referenzanlage vereinbaren oder besprechen, wie KERN in Ihren Versorger- oder Aggregator-Stack passt." +git_contact_tag: KONTAKT +git_contact_h2: "Wege, uns zu erreichen" +git_inq_h3: "Allgemeine Anfragen" +git_inq_p: "Für allgemeine Fragen zu KERN, unserer Technologie und Partnerschaftsoptionen:" +git_inq_email: "office@riddleandcode.com" +git_demo_h3: "Demo buchen" +git_demo_p: "30 Minuten — Live-System, echte Assets. Wir zeigen Ihnen den autonomen Regelkreis in Aktion und analysieren, welche Assets in Ihrem Portfolio bereit für KERN sind." +git_visit_h3: "Besuch anfragen" +git_visit_p: "Unsere Referenzanlage in Österreich ist auf Anfrage besichtigbar — ein Live-MV/LV-Microgrid mit KERN im Produktiveinsatz." +git_loc_tag: STANDORT +git_loc_h2: Hauptsitz +git_why_tag: "WARUM KONTAKT" +git_why_h2: "Womit wir helfen können" +git_why1_h3: "Executive Briefing" +git_why1_p: "Strategischer Überblick über KERN, die Marktchance und wie wir in Ihre Flexibilitätsstrategie passen. 45 Minuten, C-Level-Format." +git_why2_h3: "Technischer Deep Dive" +git_why2_p: "API-Spezifikationen, Konnektivitätsarchitektur, Integrationsansatz für Ihren spezifischen Asset-Mix. Für Ihr technisches Team." +git_why3_h3: "Live-Referenz" +git_why3_p: "Besuchen Sie unsere Produktionsanlage in Österreich — ein echtes Versorger-Deployment mit MV/LV-Microgrid, Aggregator und Energiegemeinschaftsplattform." +git_why4_h3: Partnerschaft +git_why4_p: "Versorgungspartnerschaften, Aggregatorbeziehungen, Plattformintegrationen — lassen Sie uns das richtige Geschäftsmodell besprechen." +git_cta_h2: "Bereit zur Kontaktaufnahme?" +git_cta_p: "Schreiben Sie uns an office@riddleandcode.com oder buchen Sie direkt eine Demo." +git_cta_primary: "E-Mail senden" +git_cta_secondary: "KERN kennenlernen" + +# ══════════════════════════════════════════════════════════════════════════════ +# Medien (company/media.html) +# ══════════════════════════════════════════════════════════════════════════════ +med_meta_title: "Medien — Riddle&Code" +med_meta_desc: "Pressemappe, Markenlogos, Bildmaterial und Medienkontakt für Riddle&Code und KERN." +med_h1: "Media Hub.
Pressemappe & Markenressourcen" +med_sub: "Willkommen im Media Hub von Riddle&Code. Hier finden Sie unsere Pressemappe, Markenlogos, Bildmaterial und Informationen zu unseren Medienaktivitäten." +med_who_tag: "ÜBER UNS" +med_who_h2: "Wer wir sind" +med_who_p1: "Riddle&Code baut KERN — die Infrastrukturplattform für dezentrales Energiemanagement. Wir bedienen Energieversorger, Aggregatoren und Energiegemeinschaften in ganz Europa mit autonomer Asset-Konnektivität, Flexibilitätsprognosen und -steuerung." +med_who_p2: "Unsere Technologie, einschließlich MIOTY-Funkkonnektivität und autonomer Steuerung, ist im Produktiveinsatz bei führenden Energieversorgern — mit einem Live-MV/LV-Microgrid, Flexibilitätsaggregator und Energiegemeinschaftsplattform." +med_dl_tag: DOWNLOADS +med_dl_h2: Pressmaterialien +med_logo_h3: Markenlogo +med_logo_p: "Laden Sie unsere offiziellen Markenlogos in verschiedenen Formaten herunter. Enthält helle und dunkle Versionen, horizontale und vertikale Layouts." +med_logo_cta: "Logo-Paket herunterladen" +med_press_h3: Pressemappe +med_press_p: "Vollständige Pressemappe mit Unternehmensinformationen, Produktdetails, Führungsbiografien und hochauflösenden Bildern." +med_press_cta: "Pressemappe herunterladen" +med_partner_h3: "Medienpartner-Logos" +med_partner_p: "Logos von Riddle&Code neben unseren Pressepartnern und Medienerwähnungen. Zur Veröffentlichung geeignet." +med_partner_cta: "Partner-Logos herunterladen" +med_media_tag: MEDIENANFRAGEN +med_media_h2: "Für Journalisten & Medien" +med_pr_h3: Pressemitteilungen +med_pr_p: "Zugang zu unseren neuesten Pressemitteilungen, Ankündigungen und Unternehmensnachrichten." +med_contact_h3: Medienkontakt +med_contact_p: "Für Medienanfragen, Interviews oder weitere Informationen wenden Sie sich bitte an office@riddleandcode.com" +med_interview_h3: Interviewanfragen +med_interview_p: "Wir stehen als Experten für Kommentare zu dezentralem Energiemanagement, Flexibilitätsmärkten, MIOTY-Technologie und der Energiewende zur Verfügung." +med_usage_h3: Nutzungsrichtlinien +med_usage_p: "Bitte respektieren Sie unsere Markenrichtlinien bei der Verwendung von Riddle&Code- und KERN-Assets. Kontaktieren Sie uns bei Fragen." +med_cta_h2: "Weitere Informationen benötigt?" +med_cta_p: "Kontaktieren Sie unser Medienteam für zusätzliche Ressourcen, Interviewmöglichkeiten oder Presseanfragen." +med_cta_primary: "Medienteam kontaktieren" +med_cta_secondary: "Aktuelle Neuigkeiten anzeigen" + +# ══════════════════════════════════════════════════════════════════════════════ +# Karriere (company/career.html) +# ══════════════════════════════════════════════════════════════════════════════ +car_meta_title: "Karriere — Riddle&Code" +car_meta_desc: "Werden Sie Teil des Teams, das KERN aufbaut — die Infrastrukturplattform für verteilte Energie." +car_h1: "Werden Sie Teil des Teams
Bauen Sie Infrastruktur für die Energiewende" +car_sub: "Riddle&Code baut KERN — die Plattform, mit der Energieversorger und Aggregatoren verteilte Energieanlagen verbinden, steuern und monetarisieren. Wir arbeiten an schwierigen Problemen in der Energieinfrastruktur, Funkkonnektivität und autonomen Systemen." +car_purpose_tag: "UNSER ZWECK" +car_purpose_h2: "Der Riddle&Code-Geist" +car_purpose1_h3: "Zweck: Warum existieren wir?" +car_purpose1_strong: "Infrastruktur für die Energiewende aufbauen." +car_purpose1_p: "Wir liefern die Konnektivitäts- und Autonomieschicht, die verteilte Energieanlagen zu verwaltbarer, monetarisierbarer Infrastruktur macht — für Energieversorger und Aggregatoren in ganz Europa." +car_purpose2_h3: "Vision: Wohin gehen wir?" +car_purpose2_strong: "Ein Europa, in dem jede verteilte Energieanlage zur Netzstabilität beiträgt." +car_purpose2_p: "Wir sehen ein Netz, in dem Flexibilität hinter dem Zähler kontinuierlich prognostiziert, gesteuert und bestätigt wird — ohne manuelle Eingriffe, in jedem Maßstab." +car_purpose3_h3: "Mission: Wie erreichen wir das?" +car_purpose3_strong: "KERN in jedem Flexibilitäts-Stack eines europäischen Versorgers bis 2030." +car_purpose3_p: "Unser Ziel ist es, die autonome Energiemanagementschicht zu liefern, die verteilte Flexibilität zuverlässig, monetarisierbar und skalierbar macht." +car_values_h3: "Unsere Kernwerte" +car_values_sub: "Die Prinzipien, die alles leiten, was wir tun" +car_val1_label: Neugier +car_val1_desc: "Wir erforschen, hinterfragen und lernen ständig. Neugier treibt Innovation und hilft uns, Grenzen beim Aufbau von Energieinfrastruktur zu verschieben." +car_val2_label: Empathie +car_val2_desc: "Das Verständnis unserer Kollegen, Partner und Kunden ermöglicht es uns, Lösungen zu entwickeln, die wirklich wichtig sind und einen Unterschied machen." +car_val3_label: Zuhören +car_val3_desc: "Aktives Zuhören hilft uns, Bedürfnisse zu verstehen, effektiv zusammenzuarbeiten und gemeinsam bessere Produkte zu entwickeln." +car_val4_label: Beharrlichkeit +car_val4_desc: "Schwierige Probleme zu lösen erfordert Ausdauer. Wir nehmen Herausforderungen an und bleiben dran, bis wir unsere Ziele erreichen." +car_val5_label: Freude +car_val5_desc: "Wir glauben daran, den Weg zu genießen. Eine positive, engagierte Unternehmenskultur bringt unsere besten Leistungen hervor." +car_val6_label: Engagement +car_val6_desc: "Wir sind unserer Mission, unserem Team und unseren Partnern verpflichtet. Engagement treibt Exzellenz in allem, was wir liefern." +car_benefits_tag: VORTEILE +car_benefits_h2: "Warum Riddle&Code?" +car_ben1_h3: "Echter Infrastruktureinfluss" +car_ben1_p: "Arbeiten Sie an einem Produktivsystem, das live Energieassets verwaltet. Ihr Code steuert echte Hardware hinter echten Zählern — keine Simulation." +car_ben2_h3: "Wien & Remote" +car_ben2_p: "Wien wurde zum zehnten Mal in Folge zur lebenswertesten Stadt gewählt, und wir wissen, dass es andere schöne Orte gibt. Arbeiten Sie dort, wo Sie am produktivsten sind." +car_ben3_h3: "Flexibles Umfeld" +car_ben3_p: "Modernes Büro oder Remote-Arbeit — genießen Sie ein flexibles Arbeitsumfeld, das sich Ihren Bedürfnissen anpasst." +car_ben4_h3: "Europäischer Energiemarkt" +car_ben4_p: "Arbeiten Sie an der Schnittstelle von Funktechnologie, Energiemärkten und regulatorischen Rahmenbedingungen in Österreich, Deutschland und der EU." +car_ben5_h3: "Faire Vergütung" +car_ben5_p: "Erhalten Sie eine faire Vergütung, die Ihren Qualifikationen und Ihrer Erfahrung entspricht." +car_ben6_h3: "Work-Life-Balance" +car_ben6_p: "Ein ausgeruhtes Sie ist ein glückliches Sie. Wir sorgen dafür, dass Sie genug Zeit für die Work-Life-Balance haben." +car_cta_h2: "Bereit, uns beizutreten?" +car_cta_p: "Wir suchen immer talentierte Menschen, die unsere Leidenschaft für den Aufbau von Infrastruktur für die Energiewende teilen." +car_cta_primary: "Offene Stellen ansehen" +car_cta_secondary: "Mehr über uns erfahren" + +# ══════════════════════════════════════════════════════════════════════════════ +# News (company/news.html) +# ══════════════════════════════════════════════════════════════════════════════ +news_meta_title: "Neuigkeiten — Riddle&Code" +news_meta_desc: "Aktuelle Neuigkeiten, Forschung und Updates vom Riddle&Code- und KERN-Team." +news_h1: "Neuigkeiten & Einblicke
Von Riddle&Code" +news_sub: "Bleiben Sie über unsere neuesten Produktupdates, Marktforschung und Unternehmensnachrichten informiert." +news_filter_all: "Alle" +news_filter_news: "Neuigkeiten" +news_filter_research: "Forschung" +news_filter_updates: "Updates" +news_load_more: "Mehr laden" +news_cta_h2: "Immer auf dem Laufenden bleiben?" +news_cta_p: "Abonnieren Sie unseren Newsletter oder folgen Sie uns auf LinkedIn." +news_cta_primary: "Kontakt" +news_cta_secondary: "Zur Startseite" + +# ══════════════════════════════════════════════════════════════════════════════ +# Navigation +# ══════════════════════════════════════════════════════════════════════════════ +nav_prefix: "/de/" +nav_products: "Produkte" +nav_kern_label: "KERN — Autonome Energieplattform" +nav_kern_overview: "KERN Überblick" +nav_for_utilities: "Für Versorger" +nav_for_aggregators: "Für Aggregatoren" +nav_for_communities: "Für Energiegemeinschaften" +nav_for_platforms: "Für Plattformen" +nav_technology: "Technologie" +nav_references: "Referenzen" +nav_company: "Unternehmen" +nav_about_us: "Über uns" +nav_news: "Neuigkeiten" +nav_media: "Medien" +nav_careers: "Karriere" +nav_book_demo: "Demo buchen" + +# ══════════════════════════════════════════════════════════════════════════════ +# Footer +# ══════════════════════════════════════════════════════════════════════════════ +footer_tagline: "Infrastruktur für dezentrale Energie." +footer_col_kern: "KERN" +footer_platform_overview: "Plattform Überblick" +footer_for_utilities: "Für Versorger" +footer_for_aggregators: "Für Aggregatoren" +footer_for_communities: "Für Energiegemeinschaften" +footer_for_platforms: "Für Plattformen" +footer_col_more: "Mehr" +footer_technology: "Technologie" +footer_references: "Referenzen" +footer_news: "Neuigkeiten" +footer_col_company: "Unternehmen" +footer_about_us: "Über uns" +footer_careers: "Karriere" +footer_media: "Medien" +footer_contact: "Kontakt" +footer_col_legal: "Rechtliches" +footer_imprint: "Impressum" +footer_privacy: "Datenschutz" +footer_terms: "Nutzungsbedingungen" +footer_copyright: "© 2025 Riddle&Code GmbH. Alle Rechte vorbehalten." diff --git a/locales/en.yaml b/locales/en.yaml new file mode 100644 index 0000000..23c6f9c --- /dev/null +++ b/locales/en.yaml @@ -0,0 +1,602 @@ +# ────────────────────────────────────────────────────────────────────────────── +# Riddle&Code website — English locale +# HTML is allowed in values; use YAML double-quoted strings for safety. +# ────────────────────────────────────────────────────────────────────────────── + +# ── Meta ────────────────────────────────────────────────────────────────────── +meta_title: "Riddle&Code — Autonomous Energy. Behind the Meter." +meta_description: "R&C KERN autonomously forecasts, dispatches and delivers flexibility behind the meter — for aggregators, utilities and energy communities." +meta_og_title: "Riddle&Code — Autonomous Energy. Behind the Meter." +meta_og_description: "R&C KERN autonomously forecasts, dispatches and delivers flexibility behind the meter." + +# ── Hero ────────────────────────────────────────────────────────────────────── +hero_location: Vienna +hero_h1: "Infrastructure for
distributed energy." +hero_sub: "We build the platform utilities and aggregators use to connect, dispatch and monetise distributed energy assets at scale. Our product is KERN." +hero_cta_primary: "Discover KERN →" +hero_cta_secondary: "Book a Demo" + +# ── Audience cards ──────────────────────────────────────────────────────────── +audience_label: "Who KERN is built for" + +aggregators_h3: Aggregators +aggregators_p: "Secure your bids every time. KERN dispatches behind the meter and confirms execution — no manual intervention, no penalties." +aggregators_link: "For aggregators →" + +utilities_h3: Utilities +utilities_p: "Turn your customer base into a steerable flexibility portfolio. From HEMS fleet to energy communities — one platform, one autonomous layer." +utilities_link: "For utilities →" + +communities_h3: "Energy Communities" +communities_p: "Maximize shared self-consumption automatically. KERN optimizes every asset in the community — and connects collective flexibility to markets." +communities_link: "For communities →" + +platforms_h3: "VPP Platforms" +platforms_p: "Close the gap below your platform. KERN delivers a normalised API feed, confirmed dispatch and 24h forecasts — for every asset your clients have." +platforms_link: "For platforms →" + +# ── Autonomous loop ─────────────────────────────────────────────────────────── +loop_h2: "The autonomous loop" +loop_sub: "You send a signal. KERN delivers. What happens behind the meter is our job." + +loop_step1_label: Forecast +loop_step1_desc: "Rolling 24h flexibility profile per asset and portfolio" + +loop_step2_label: Demand +loop_step2_desc: "Flexibility signal from aggregator, utility or market" + +loop_step3_label: Rebalance +loop_step3_desc: "Real-time comparison of signal vs. actual asset state" + +loop_step4_label: Dispatch +loop_step4_desc: "Autonomous asset control via MIOTY or Zigbee Mesh" + +loop_step5_label: Confirm +loop_step5_desc: "Execution confirmed back to aggregator in real-time" + +loop_callout: "KERN interacts with your platform at step 1 and 2.
Steps 3–5 are fully autonomous — no manual intervention required." + +# ── Reference block ─────────────────────────────────────────────────────────── +ref_tag: "Live Reference" +ref_h2: "Leading utilities built their flexibility stack on R&C KERN" +ref_proof1: "Live MV/LV microgrid — production system" +ref_proof2: "Utility-owned aggregator securing market bids via KERN" +ref_proof3: "Energy community platform — KERN optimization layer" +ref_visit: "Live system — visitable on request." +ref_cta: "See the full reference →" + +# ── Final CTA ───────────────────────────────────────────────────────────────── +cta_h2: "Stop managing assets.
Let KERN deliver." +cta_p: "30 minutes to show you how the autonomous loop works — on a live system." +cta_primary: "Book a Demo" +cta_secondary: "Explore the Technology" + +# ── Shared CTAs (reused across pages) ───────────────────────────────────────── +shared_book_demo: "Book a Demo" +shared_explore_tech: "Explore the Technology" +shared_see_ref: "See full reference →" + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN Overview page (kern/index.html) +# ══════════════════════════════════════════════════════════════════════════════ +ki_meta_title: "KERN by Riddle&Code — Autonomous Energy Platform" +ki_meta_desc: "KERN is the autonomous energy management platform behind the meter — forecasting, dispatching and delivering flexibility for aggregators, utilities and energy communities." + +ki_eyebrow: "Riddle&Code — Autonomous Energy Platform" +ki_h1: "Autonomous energy
behind the meter." +ki_lead: "KERN is the platform that sits behind the meter — autonomously optimising, forecasting and dispatching flexibility from households, facilities, microgrids and energy communities." + +ki_concept_stmt: "You send a signal.
KERN delivers.
What happens behind the meter is our job." +ki_concept_sub: "Aggregators, utilities and platforms interact with KERN through a clean API — forecast in, demand signal in, flexibility confirmed out. KERN handles everything in between: rebalancing, asset selection, dispatch, confirmation." + +ki_contexts_h2: "Optimising behind the meter" +ki_contexts_sub: "KERN works across four asset contexts — all on one platform." +ki_ctx_household_h3: Households +ki_ctx_household_p: "PV + home storage + heat pump + EV charger — optimised as a unit. HEMS fleet management for utilities." +ki_ctx_ci_h3: "Commercial & Industrial" +ki_ctx_ci_p: "Commercial PV, BESS, CHP, controllable loads on MV/LV level. Peak shaving, load management, flexibility dispatch." +ki_ctx_micro_h3: Microgrids +ki_ctx_micro_p: "Multiple assets behind a shared grid connection point. Coordinated optimisation, island-mode capable." +ki_ctx_esc_h3: "Energy Communities (ESC)" +ki_ctx_esc_p: "Community optimisation across multiple members and meters. Shared self-consumption maximised, collective flexibility aggregated." + +ki_modes_h2: "Three optimisation modes" +ki_modes_sub: "Configurable per asset or portfolio — combinable." +ki_mode1_num: "Mode 01" +ki_mode1_h3: Self-consumption +ki_mode1_p: "Maximise local self-consumption. Minimise grid import and export. Default mode for households and small C&I." +ki_mode2_num: "Mode 02" +ki_mode2_h3: "Economic optimisation" +ki_mode2_p: "Maximise monetary yield — intraday arbitrage, FCR/aFRR bids, peak shaving, demand charge reduction. Dispatch driven by real-time day-ahead and intraday price signals. Default for aggregators and C&I flexibility." +ki_mode3_num: "Mode 03" +ki_mode3_h3: "Community optimisation" +ki_mode3_p: "Maximise shared self-consumption across multiple members. Fair allocation by share. Default for ESC and microgrids." + +ki_conn_h2: "Connectivity by topology" +ki_conn_sub: "The right technology for every asset configuration — both managed as one unified layer in KERN." +ki_zigbee_use: "Contiguous sites" +ki_zigbee_h3: "Zigbee Mesh" +ki_zigbee_p: "For assets on the same premises — buildings, campuses, industrial sites. Low-cost, easy to deploy, self-healing mesh network. No complex gateway infrastructure required." +ki_mioty_use: "Distributed assets" +ki_mioty_h3: MIOTY +ki_mioty_p: "IEC-standard LPWAN for geographically dispersed assets — rural PV, MV-connected BESS, distributed sites. 10km range, 1.5M messages/day, independent of LTE and WiFi." +ki_tech_link: "Full technology overview →" + +ki_forwhom_h2: "KERN for your role" +ki_role_agg_h3: Aggregators +ki_role_agg_p: "Secure bids with confirmed dispatch and 24h forecasts." +ki_role_agg_link: "For aggregators →" +ki_role_util_h3: Utilities +ki_role_util_p: "Turn your customer base into a monetisable flexibility portfolio." +ki_role_util_link: "For utilities →" +ki_role_comm_h3: "Energy Communities" +ki_role_comm_p: "Autonomous self-consumption optimisation and flexibility aggregation." +ki_role_comm_link: "For communities →" +ki_role_vpp_h3: "VPP Platforms" +ki_role_vpp_p: "Close the asset layer gap below your platform with a clean API." +ki_role_vpp_link: "For platforms →" + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN for Utilities page (kern/for-utilities.html) +# ══════════════════════════════════════════════════════════════════════════════ +ku_meta_title: "KERN for Utilities — Riddle&Code" +ku_meta_desc: "Turn your customer base into a steerable flexibility portfolio. KERN manages HEMS fleets, energy communities and C&I assets — autonomously, on one platform." + +ku_eyebrow: "KERN — For Utilities" +ku_h1: "You have the customers.
You have the assets.
KERN connects them." +ku_lead: "Your customers have PV, storage, heat pumps and EV chargers. Your grid has flexibility requirements. KERN is the autonomous platform layer that turns your customer base into a steerable, monetisable flexibility portfolio — without building an operations team for it." + +ku_pains_h2: "Where utilities are leaving value on the table" +ku_pain1_title: "Controllable assets without an optimisation platform" +ku_pain1_desc: "Smart meters and CLS switches are rolling out — but there is no platform above them. No optimisation, no aggregation, no market access. The potential stays untapped." +ku_pain1_sol: "KERN sits above the meter as the autonomous management layer — real-time optimisation, fleet control, market-ready aggregation." +ku_pain2_title: "Redispatch 2.0 is manual and costly" +ku_pain2_desc: "Grid congestion management requires coordinated control of distributed generation — without a platform this is operationally complex, error-prone and doesn't scale." +ku_pain2_sol: "KERN handles Redispatch 2.0-compliant dispatch autonomously, with confirmation per asset." +ku_pain3_title: "Customers leaving for smarter energy providers" +ku_pain3_desc: "New energy players offer HEMS, community tariffs and flexibility revenues. Utilities without smart services lose the customers who want to actively participate." +ku_pain3_sol: "KERN is your behind-the-meter product — branded as your service, delivered by KERN. Customers stay and engage." +ku_pain4_title: "No access to flexibility markets from your own customer base" +ku_pain4_desc: "You have the customer relationships and the assets — but without an aggregation platform you can't monetise that flexibility." +ku_pain4_sol: "KERN aggregates your customer base into a marketable portfolio. You can run your own aggregator subsidiary — or partner with an external one." + +ku_cases_h2: "Three ways to deploy KERN" +ku_case1_num: "Use case 01" +ku_case1_h3: "HEMS Fleet — Customer Base as Flexible Resource" +ku_case1_p: "Deploy KERN HEMS with household customers who have PV and storage. Customers benefit from self-consumption optimisation and lower bills. You gain a steerable fleet for Redispatch or flexibility monetisation — without operational load per customer." +ku_case2_num: "Use case 02" +ku_case2_h3: "Energy Communities — Compliant, Automatic" +ku_case2_p: "KERN ESC manages optimisation and autonomous asset control for energy communities. You can offer energy communities as a service — no custom development, no manual billing processes needed from KERN's side." +ku_case3_num: "Use case 03" +ku_case3_h3: "Flexibility Monetisation — From Your Customer Base" +ku_case3_p: "The aggregated flexibility from HEMS fleet, C&I customers and ESC becomes a marketable portfolio via KERN. Route it through your own aggregator subsidiary or an external partner to FCR, aFRR or intraday markets." + +ku_ref_h2: "The reference model — running in production" +ku_ref_intro: "Leading utilities built their complete flexibility stack on KERN:" +ku_ref_grid_label: Grid +ku_ref_grid_value: "Live MV/LV microgrid — production system, Austria" +ku_ref_agg_label: Aggregator +ku_ref_agg_value: "Utility-owned aggregator securing bids on Austrian energy markets via KERN" +ku_ref_comm_label: Communities +ku_ref_comm_value: "Energy community platform — KERN as optimisation layer" +ku_ref_note: "Live system — visitable on request in Austria." + +ku_cta_h2: "Ready to monetise your customer base?" +ku_cta_p: "30 minutes to map which assets in your network are ready for KERN — and what the flexibility revenue potential looks like." + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN for Aggregators page (kern/for-aggregators.html) +# ══════════════════════════════════════════════════════════════════════════════ +ka_meta_title: "KERN for Aggregators — Riddle&Code" +ka_meta_desc: "Secure your flexibility bids every time. KERN autonomously dispatches and confirms execution behind the meter — no manual intervention, no penalties." +ka_eyebrow: "KERN — For Aggregators" +ka_h1: "Your bids are only as good as
what's behind the meter." +ka_lead: "KERN acts as a forecast-driven, autonomous sub-aggregator behind the meter. You send a flexibility signal — KERN selects assets based on real-time state and forecasted availability, executes via MIOTY or Zigbee, and confirms delivery back to you. No manual intervention. No missed bids." +ka_pains_h2: "The five pains KERN solves" +ka_pain1_title: "Unreliable connectivity to distributed assets" +ka_pain1_desc: "Rural BESS sites, industrial premises, basements — LTE drops, WiFi is unstable. Assets can't be committed to bids. Portfolio size is limited by infrastructure, not by availability." +ka_pain1_sol: "MIOTY (10km, 1.5M msg/day, IEC standard) and Zigbee Mesh connect every asset — independent of LTE and WiFi." +ka_pain2_title: "No dispatch confirmation" +ka_pain2_desc: "Bid placed, dispatch sent — whether the asset responded remains unknown until the next meter reading. Deviations are detected too late." +ka_pain2_sol: "Every dispatch is confirmed at asset level and reported back in real-time. You know immediately whether the bid is being fulfilled." +ka_pain3_title: "Manual response to forecast deviations" +ka_pain3_desc: "Weather change, load shift, asset failure — someone has to notice, decide and intervene. This doesn't scale." +ka_pain3_sol: "KERN continuously compares actual asset state against bid position and rebalances autonomously — before the deviation becomes critical." +ka_pain4_title: "Poor forecast quality without asset visibility" +ka_pain4_desc: "Without real-time telemetry at asset level, flexibility forecasts are estimates. Overbidding means penalties. Underbidding means lost revenue." +ka_pain4_sol: "Rolling 24h flexibility forecast per asset and portfolio — driven by live state of charge, weather-based PV models and historical load patterns. Continuously refined as the delivery window approaches." +ka_pain5_title: "Operational overhead scales with portfolio" +ka_pain5_desc: "Every new asset, every new site, every new asset class adds complexity. Growth requires more team, more monitoring, more manual dispatch management." +ka_pain5_sol: "New assets are onboarded into KERN — the aggregator gets more flexibility capacity, not more operational burden." +ka_loop_h2: "The operative loop" +ka_loop_note: "You interact with steps 1 and 2. Everything else is KERN." +ka_ref_h2: "Proven in production" +ka_ref_quote: "Leading utilities use KERN to power their flexibility aggregator — securing bids on energy markets with confirmed dispatch from MV/LV assets." +ka_ref_meta: "Live system · MV/LV microgrid · Visitable on request" +ka_cta_h2: "Ready to secure every bid?" +ka_cta_p: "30 minutes to show you how KERN fits into your existing dispatch stack — and which assets you can add to your portfolio today." + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN for Communities page (kern/for-communities.html) +# ══════════════════════════════════════════════════════════════════════════════ +kc_meta_title: "KERN for Energy Communities — Riddle&Code" +kc_meta_desc: "Maximise shared self-consumption automatically. KERN optimises every asset in the community and connects collective flexibility to markets." +kc_eyebrow: "KERN — For Energy Communities" +kc_h1: "Your community generates energy.
KERN keeps it in the community." +kc_lead: "KERN autonomously optimises storage, controllable loads and generation across all community members — maximising shared self-consumption and forecasting the collective flexibility that can be offered to markets or grid operators." +kc_pains_h2: "What holds energy communities back today" +kc_pain1_title: "Self-consumption is measured, not optimised" +kc_pain1_desc: "Without real-time optimisation, energy is exported to the grid even when members have demand — the community's potential stays largely untapped." +kc_pain1_sol: "KERN forecasts generation and consumption per member (24h ahead) and steers assets to maximise what stays in the community." +kc_pain2_title: "No real-time visibility across the community" +kc_pain2_desc: "Operators don't know how much is being generated, consumed and shared right now — optimisation and steering are impossible without this view." +kc_pain2_sol: "Real-time telemetry from every asset, aggregated into a community dashboard. Full visibility, per member and as a whole." +kc_pain3_title: "Storage and loads are not coordinated" +kc_pain3_desc: "Community storage and controllable loads are managed manually or not at all — no automatic charging when PV surplus is available, no discharging when members need it." +kc_pain3_sol: "KERN steers shared storage and controllable loads autonomously — aligning generation, storage and consumption in real-time." +kc_pain4_title: "Connectivity across multiple sites is unsolved" +kc_pain4_desc: "Members at different buildings or locations are hard to reliably connect — LTE drops out, WiFi doesn't reach far enough." +kc_pain4_sol: "Zigbee Mesh for contiguous sites, MIOTY for distributed members (10km, independent of LTE/WiFi) — both managed as one unified layer." +kc_pain5_title: "Collective flexibility potential goes unused" +kc_pain5_desc: "An active community with PV and storage has real collective flexibility — but without a platform it can neither be forecasted nor offered to aggregators or grid operators." +kc_pain5_sol: "KERN provides rolling 24h flexibility forecasts for the whole community and connects to aggregators or grid operators on request." +kc_loop_h2: "How KERN operates the community" +kc_features_h2: "What KERN does for communities" +kc_feat1_h3: Community optimisation +kc_feat1_p: "Maximises collective self-consumption across all members — in real-time and with a 24h forecast." +kc_feat2_h3: Storage and load control +kc_feat2_p: "Autonomous steering of shared storage and controllable loads to align supply and demand within the community." +kc_feat3_h3: Real-time dashboard +kc_feat3_p: "Community generation, consumption, self-consumption rate and flexibility potential — for operators and optionally for members." +kc_feat4_h3: Flexibility forecast +kc_feat4_p: "Rolling 24h forecast of available community flexibility — the basis for aggregator or grid operator integration." +kc_feat5_h3: Multi-site connectivity +kc_feat5_p: "Zigbee Mesh for contiguous sites, MIOTY for distributed members — every participant reliably connected." +kc_feat6_h3: Aggregator connection +kc_feat6_p: "Community flexibility dispatched on demand — with confirmed execution back to the requesting party." +kc_partner_h3: "Already handling ESC billing or member management?" +kc_partner_p: "KERN is the optimisation and control layer — not a billing platform. We integrate with your existing billing infrastructure to add autonomous asset management and flexibility forecasting on top of what you already offer your ESC clients. Together you give communities the complete package: billing from you, optimisation from KERN." +kc_partner_cta: "Discuss a partnership →" +kc_cta_h2: "More energy stays in the community." +kc_cta_p: "30 minutes to show how KERN optimises a live energy community — from real-time control to flexibility markets." + +# ══════════════════════════════════════════════════════════════════════════════ +# KERN for Platforms page (kern/for-platforms.html) +# ══════════════════════════════════════════════════════════════════════════════ +kp_meta_title: "KERN for VPP Platforms — Riddle&Code" +kp_meta_desc: "Close the gap below your VPP platform. KERN delivers normalised telemetry, confirmed dispatch and 24h forecasts for every asset your clients have." +kp_eyebrow: "KERN — For VPP Platforms" +kp_h1: "Your platform is strong
above the asset layer.
KERN closes the gap below." +kp_lead: "KERN integrates below your VPP as the asset management and connectivity layer. Your platform gets a clean, normalised API feed, confirmed dispatch and 24h flexibility forecasts — for every asset your clients have, including those currently unreachable." +kp_hero_cta: "Discuss API Integration" +kp_stack_h2: "Where KERN fits in your stack" +kp_pains_h2: "Three gaps KERN fills" +kp_pain1_title: "Assets with unreliable connectivity stay out of the portfolio" +kp_pain1_desc: "Rural sites, industrial premises, basements — LTE drops, WiFi is unstable. Your clients can't bring these assets into your platform. Potential stays on the table." +kp_pain1_sol: "MIOTY (10km, IEC standard) and Zigbee Mesh make every asset reachable — your clients grow their portfolio without infrastructure investment." +kp_pain2_title: "No dispatch feedback — the loop is open" +kp_pain2_desc: "Your platform sends commands — but whether the asset responded stays unknown until the next meter reading. Deviations are detected too late, penalties hit your clients." +kp_pain2_sol: "KERN confirms every dispatch at asset level and reports back in real-time. Your platform knows immediately whether the flexibility commitment is being met." +kp_pain3_title: "Heterogeneous assets increase integration overhead" +kp_pain3_desc: "Every new asset type, every new manufacturer, every new protocol means integration effort — for you or your clients. This slows onboarding and limits scale." +kp_pain3_sol: "KERN normalises all asset types to a single data model. Your platform speaks to KERN — not to every asset individually." +kp_what_h2: "What your platform gets from KERN" +kp_what1_h3: "Clean, normalised API feed" +kp_what1_p: "Unified telemetry regardless of how many asset types, manufacturers or protocols are behind it. One integration, all assets." +kp_what2_h3: "Dispatch with confirmation" +kp_what2_p: "KERN receives your dispatch command, executes at asset level and reports back whether and how it was fulfilled." +kp_what3_h3: "24h flexibility forecast" +kp_what3_p: "Rolling 24h forecast per asset and portfolio — driven by live telemetry, weather-based PV models and historical load patterns. Continuously refined as delivery approaches. More precise bids, fewer penalties for your clients." +kp_what4_h3: "More assets in the portfolio" +kp_what4_p: "Assets currently excluded due to connectivity become available. Your clients grow their dispatchable portfolio without CAPEX." +kp_integ_h2: "Integration options" +kp_integ_th1: Model +kp_integ_th2: Description +kp_integ_th3: Effort +kp_integ1_model: API integration +kp_integ1_desc: "KERN delivers normalised telemetry and accepts dispatch commands via REST/WebSocket. Your platform remains primary." +kp_integ2_model: White-label +kp_integ2_desc: "KERN runs under your brand as an \"Asset Connectivity Module\" for your clients." +kp_integ3_model: Pilot +kp_integ3_desc: "One client, one asset class, defined scope — fast to start, low risk." +kp_cta_h2: "Let's discuss the API." +kp_cta_p: "30 minutes to go through the spec and identify which of your clients' assets are currently excluded — and how quickly that changes with KERN." +kp_cta_primary: "Discuss API Integration" + +# ══════════════════════════════════════════════════════════════════════════════ +# References page (references/index.html) +# ══════════════════════════════════════════════════════════════════════════════ +rp_meta_title: "References — KERN by Riddle&Code" +rp_meta_desc: "R&C KERN running in production — live MV/LV microgrid, utility-owned aggregator, energy community platform. Visitable on request." +rp_eyebrow: References +rp_h1: "Grid. Aggregator. Community.
All live." +rp_lead: "Leading utilities. Three production deployments on a single platform. Visitable on request." +rp_ref_tag: "Live Reference — Austria" +rp_ref_h2: "Leading utilities built their complete flexibility stack on R&C KERN" +rp_item1_label: Grid +rp_item1_title: "Live MV/LV Microgrid" +rp_item1_desc: "Real medium and low-voltage grid in production. KERN managing all assets behind the meter — generation, storage, controllable loads." +rp_item2_label: Aggregator +rp_item2_title: "Utility-owned Flexibility Aggregator" +rp_item2_desc: "Utility subsidiary securing bids on Austrian energy markets. KERN provides autonomous dispatch with confirmed execution — enabling reliable bid fulfilment." +rp_item3_label: Community +rp_item3_title: "Energy Community Platform" +rp_item3_desc: "Energy community management running on KERN as the optimisation and control layer — autonomous asset coordination, collective self-consumption maximisation." +rp_visit_strong: "The system is visitable." +rp_visit_p: "The live installation can be visited on request — a real microgrid, running KERN in production. Contact us to arrange a visit." +rp_visit_cta: "Request a Visit" +rp_soon_h3: "More references coming" +rp_soon_p: "Additional customer references are in preparation. We are currently seeking approval to publish by name." +rp_soon_link: "Contact us" +rp_soon_suffix: "to speak directly with a reference customer." +rp_cta_h2: "See it running." +rp_cta_p: "A 30-minute call or an on-site visit — whichever is more useful for you." +rp_cta_primary: "Book a Demo or Visit" +rp_cta_secondary: "Back to KERN →" + +# ══════════════════════════════════════════════════════════════════════════════ +# Technology page (technology/index.html) +# ══════════════════════════════════════════════════════════════════════════════ +tech_meta_title: "Technology — KERN by Riddle&Code" +tech_meta_desc: "MIOTY, Zigbee Mesh, 24h flexibility forecasting and autonomous dispatch — the technology behind KERN." +tech_eyebrow: Technology +tech_h1: "Built for energy infrastructure.
Not adapted from IoT." +tech_lead: "MIOTY, Zigbee Mesh, a 24h autonomous forecast loop and confirmed dispatch — purpose-built for the demands of flexibility management behind the meter." +tech_conn_h2: "Connectivity by topology" +tech_conn_sub: "The technology choice follows the asset topology — not the other way around." +tech_zigbee_badge: "Contiguous sites" +tech_zigbee_h3: Zigbee Mesh +tech_zigbee_use: "Buildings, campuses, industrial premises, microgrids on one site" +tech_mioty_badge: "Distributed assets" +tech_mioty_h3: MIOTY +tech_mioty_use: "Geographically dispersed assets — rural PV, MV BESS, multiple remote sites" +tech_vs_h3: "MIOTY vs. LoRaWAN" +tech_loop_h2: "The autonomous loop" +tech_loop_sub: "KERN operates continuously — forecasting, reacting and dispatching without manual intervention." +tech_optim_h2: "How KERN makes decisions" +tech_optim_sub: "Each optimization cycle draws on live telemetry, market signals and learned patterns — not manual configuration." +tech_optim1_h4: "Price-signal driven dispatch" +tech_optim1_p: "KERN tracks day-ahead and intraday prices, FCR/aFRR signal values and grid tariff structures in real time. Every asset dispatch decision is evaluated against the active market environment — not a fixed schedule." +tech_optim2_h4: "Rolling forecast engine" +tech_optim2_p: "Consumption and generation forecast 24h ahead per asset — combining live state of charge, weather-based PV models and historical load patterns. Continuously refined as the delivery window approaches." +tech_optim3_h4: "Continuous rebalancing" +tech_optim3_p: "KERN compares actual asset state against committed dispatch position every few minutes. Detected deviations trigger automatic asset reselection and re-dispatch — before the delivery window closes and penalties apply." +tech_assets_h2: "Supported assets and protocols" +tech_assets_sub: "KERN normalises all asset types to a single data model — regardless of manufacturer or protocol." +tech_assets_label1: "Asset types" +tech_assets_label2: "Communication protocols" +tech_security_h2: "Security & compliance" +tech_sec1_h4: "End-to-end encryption" +tech_sec1_p: "All asset communication encrypted end-to-end — from sensor to platform." +tech_sec2_h4: "Certificate-based authentication" +tech_sec2_p: "Every asset authenticated by certificate — no unauthorised control possible." +tech_sec3_h4: "Redispatch 2.0" +tech_sec3_p: "Compliant with Redispatch 2.0 requirements for distributed generation control." +tech_sec4_h4: "§14a / EAG / EnFG" +tech_sec4_p: "Compatible with controllable load regulations in Germany and Austria." +tech_cta: "Book a Technical Demo" + +# ══════════════════════════════════════════════════════════════════════════════ +# About Us page (company/about-us.html) +# ══════════════════════════════════════════════════════════════════════════════ +au_meta_title: "About Riddle&Code — Infrastructure for Distributed Energy" +au_meta_desc: "Riddle&Code builds KERN — the infrastructure platform for distributed energy management. Serving utilities, aggregators, and communities across Europe." +au_eyebrow: "Vienna, Austria" +au_h1: "Infrastructure for
distributed energy." +au_sub: "Riddle&Code builds KERN — the platform utilities and aggregators use to connect, manage, and monetise distributed energy assets at scale. We own the full stack: hardware, connectivity, platform, and market access." +au_why_tag: "WHY WE EXIST" +au_why_h2: "The infrastructure gap in the energy transition" +au_why_desc: "Distributed energy resources are multiplying — rooftop solar, batteries, heat pumps, EV chargers. Utilities face flexibility obligations. Aggregators need scale. Nobody wanted to build the connectivity and compliance layer from scratch.

We did." +au_val1_h3: "Infrastructure, not apps" +au_val1_p: "KERN is the layer that sits between physical assets and energy markets. We're not a consumer app or a meter-reading service. We're the platform your operations team runs — reliably, at scale, without depending on consumer devices or WiFi." +au_val2_h3: "Full stack ownership" +au_val2_p: "Hardware, MIOTY wireless connectivity, HEMS/ESC/LSP platform, and direct market access in a single integration. Partners deploy once — they don't stitch together three separate vendor relationships to get an asset to market." +au_val3_h3: "Regulatory complexity absorbed" +au_val3_p: "ESC compliance, flexibility reporting, and audit documentation are built into KERN — not a manual process your team maintains. We carry the technical and regulatory complexity so you carry the customer relationship." +au_what_h3: "What KERN delivers" +au_what_sub: "One platform. Three asset classes. One integration." +au_tech1_h4: "MIOTY wireless connectivity" +au_tech1_p: "10km range, 1.5 million messages per day, ultra-low power. No WiFi, no consumer app dependency — works in basements, rural areas, and industrial sites. One gateway covers an entire neighbourhood or industrial zone." +au_tech2_h4: "HEMS — residential assets" +au_tech2_p: "Manage residential PV and battery portfolios. Optimise intraday trading, flexibility dispatch, and curtailment prevention — automatically, across thousands of homes." +au_tech3_h4: "ESC — energy sharing communities" +au_tech3_p: "Community energy pooling built for Austrian and EU regulatory frameworks. Compliance is auditable and automated — not a spreadsheet your legal team reviews quarterly." +au_tech4_h4: "LSP — grid-scale flexibility" +au_tech4_p: "Large Scale Plant management for grid-scale assets: BESS, industrial loads, and aggregated portfolios. Direct access to ancillary service and flexibility markets — no third-party aggregator required." +au_proof_tag: "TRACK RECORD" +au_proof_h2: "Validated, not promised" +au_proof1_h3: "Leading utilities" +au_proof1_p: "Validated with leading utilities. The deployment model, regulatory alignment, and economics are validated at regional scale — the same playbook applies to any regional utility territory." +au_proof2_h3: "MIOTY at scale" +au_proof2_p: "1.5 million messages per day demonstrated capacity. IEC standardised — not proprietary lock-in. Partners aren't betting on a single vendor's survival; they're adopting a published standard." +au_proof3_h3: "Unit economics that work" +au_proof3_p: "Hardware at €239 sell / €100 COGS — 58% margin. Platform ARR of €114 per HEMS household per year. The economics support utility bundle pricing and operator margin at scale." +au_founders_tag: FOUNDERS +au_founders_h2: "The team behind KERN" +au_cta_h2: "Talk to the team" +au_cta_p: "Executive briefing, technical deep-dive, or partner conversation — we'll match the format to where you are." +au_cta_primary: "Get in Touch" +au_cta_secondary: "Explore KERN" + +# ══════════════════════════════════════════════════════════════════════════════ +# Get in Touch page (company/get-in-touch.html) +# ══════════════════════════════════════════════════════════════════════════════ +git_meta_title: "Contact — KERN by Riddle&Code" +git_meta_desc: "Book a demo, arrange a site visit, or discuss how KERN fits into your infrastructure. We're here to help." +git_h1: "Let's talk.
Get in Touch" +git_sub: "Book a demo, arrange an on-site visit to our live reference installation, or discuss how KERN fits into your utility or aggregator stack." +git_contact_tag: CONTACT +git_contact_h2: "Ways to Reach Us" +git_inq_h3: "General Inquiries" +git_inq_p: "For general questions about KERN, our technology and partnership options:" +git_inq_email: "office@riddleandcode.com" +git_demo_h3: "Book a Demo" +git_demo_p: "30 minutes — live system, real assets. We'll show you the autonomous loop in action and map which assets in your portfolio are ready for KERN." +git_visit_h3: "Request a Site Visit" +git_visit_p: "Our reference installation in Austria is visitable on request — a live MV/LV microgrid with KERN running in production." +git_loc_tag: LOCATION +git_loc_h2: Headquarters +git_why_tag: "WHY CONNECT" +git_why_h2: "What We Can Help With" +git_why1_h3: "Executive Briefing" +git_why1_p: "Strategic overview of KERN, the market opportunity and how we fit into your flexibility strategy. 45 minutes, C-level format." +git_why2_h3: "Technical Deep Dive" +git_why2_p: "API specs, connectivity architecture, integration approach for your specific asset mix. For your technical team." +git_why3_h3: "Live Reference" +git_why3_p: "Visit our production installation in Austria — a real utility deployment with MV/LV microgrid, aggregator and energy community platform." +git_why4_h3: Partnership +git_why4_p: "Utility partnerships, aggregator relationships, platform integrations — let's discuss the right commercial model." +git_cta_h2: "Ready to Connect?" +git_cta_p: "Reach out to us at office@riddleandcode.com or book a demo directly." +git_cta_primary: "Send us an Email" +git_cta_secondary: "Learn About KERN" + +# ══════════════════════════════════════════════════════════════════════════════ +# Media page (company/media.html) +# ══════════════════════════════════════════════════════════════════════════════ +med_meta_title: "Media — Riddle&Code" +med_meta_desc: "Press kit, brand logos, image materials and media contact for Riddle&Code and KERN." +med_h1: "Media Hub.
Press Kit & Brand Resources" +med_sub: "Welcome to Riddle&Code's Media Hub. Here you can find our press kit, brand logos, image materials, and information about our media activities." +med_who_tag: "ABOUT US" +med_who_h2: "Who We Are" +med_who_p1: "Riddle&Code builds KERN — the infrastructure platform for distributed energy management. We serve utilities, aggregators and energy communities across Europe, providing autonomous asset connectivity, flexibility forecasting and dispatch." +med_who_p2: "Our technology, including MIOTY wireless connectivity and autonomous dispatch, is deployed in production with leading utilities in Austria — managing a live MV/LV microgrid, flexibility aggregator and energy community platform." +med_dl_tag: DOWNLOADS +med_dl_h2: "Press Materials" +med_logo_h3: "Brand Logo" +med_logo_p: "Download our official brand logos in various formats. Includes light and dark versions, horizontal and vertical layouts." +med_logo_cta: "Download Logo Pack" +med_press_h3: "Press Kit" +med_press_p: "Complete press kit including company information, product details, leadership bios, and high-resolution images." +med_press_cta: "Download Press Kit" +med_partner_h3: "Media Partner Logos" +med_partner_p: "Logos showing Riddle&Code alongside our press partners and media mentions. Ready for publication use." +med_partner_cta: "Download Partner Logos" +med_media_tag: "MEDIA INQUIRIES" +med_media_h2: "For Journalists & Media" +med_pr_h3: "Press Releases" +med_pr_p: "Access our latest press releases, announcements, and company news. Stay up to date with our developments." +med_contact_h3: "Media Contact" +med_contact_p: "For media inquiries, interviews, or additional information, please contact us at office@riddleandcode.com" +med_interview_h3: "Interview Requests" +med_interview_p: "We're available for expert commentary on distributed energy management, flexibility markets, MIOTY technology and the energy transition." +med_usage_h3: "Usage Guidelines" +med_usage_p: "Please respect our brand guidelines when using Riddle&Code and KERN assets. Contact us if you have questions." +med_cta_h2: "Need More Information?" +med_cta_p: "Contact our media team for additional resources, interview opportunities, or press inquiries." +med_cta_primary: "Contact Media Team" +med_cta_secondary: "View Latest News" + +# ══════════════════════════════════════════════════════════════════════════════ +# Career page (company/career.html) +# ══════════════════════════════════════════════════════════════════════════════ +car_meta_title: "Career — Riddle&Code" +car_meta_desc: "Join the team building KERN — the infrastructure platform for distributed energy. Work on hard problems that matter for the energy transition." +car_h1: "Join Our Team
Build the Infrastructure for the Energy Transition" +car_sub: "Riddle&Code builds KERN — the platform utilities and aggregators use to connect, dispatch and monetise distributed energy assets at scale. We work on hard problems in energy infrastructure, wireless connectivity and autonomous systems." +car_purpose_tag: "OUR PURPOSE" +car_purpose_h2: "The Riddle&Code Spirit" +car_purpose1_h3: "Purpose: Why do we exist?" +car_purpose1_strong: "Building infrastructure for the energy transition." +car_purpose1_p: "We provide the connectivity and autonomy layer that turns distributed energy assets into manageable, monetisable infrastructure — for utilities and aggregators across Europe." +car_purpose2_h3: "Vision: Where are we headed?" +car_purpose2_strong: "A Europe where every distributed energy asset contributes to grid stability." +car_purpose2_p: "We envision a grid where flexibility behind the meter is continuously forecasted, dispatched and confirmed — without manual intervention, at any scale." +car_purpose3_h3: "Mission: How will we get there?" +car_purpose3_strong: "KERN in every utility flexibility stack in Europe by 2030." +car_purpose3_p: "Our commitment is to deliver the autonomous energy management layer that makes distributed flexibility reliable, monetisable and scalable." +car_values_h3: "Our Core Values" +car_values_sub: "The principles that guide everything we do" +car_val1_label: Curiosity +car_val1_desc: "We're constantly exploring, questioning, and learning. Curiosity drives innovation and helps us push boundaries in building energy infrastructure." +car_val2_label: Empathy +car_val2_desc: "Understanding our colleagues, partners, and customers allows us to build solutions that truly matter and make a difference." +car_val3_label: Listening +car_val3_desc: "Active listening helps us understand needs, collaborate effectively, and build better products together." +car_val4_label: Grit +car_val4_desc: "Solving hard problems requires perseverance. We embrace challenges and persist until we achieve our goals." +car_val5_label: Fun +car_val5_desc: "We believe in enjoying the journey. A positive, engaging workplace culture brings out our best work." +car_val6_label: Commitment +car_val6_desc: "We're dedicated to our mission, our team, and our partners. Commitment drives excellence in everything we deliver." +car_benefits_tag: BENEFITS +car_benefits_h2: "Why Join Riddle&Code" +car_ben1_h3: "Real infrastructure impact" +car_ben1_p: "Work on a production system managing live energy assets. Your code controls real hardware behind real meters — not a simulation." +car_ben2_h3: "Vienna & Remote" +car_ben2_p: "Vienna was ranked the most liveable city for the tenth time in a row, and we know there are other nice places too. Work where you're most productive." +car_ben3_h3: "Flexible Environment" +car_ben3_p: "A modern office or working remotely — enjoy a flexible working environment that adapts to your needs and lifestyle." +car_ben4_h3: "European Energy Market" +car_ben4_p: "Work at the intersection of wireless technology, energy markets and regulatory frameworks across Austria, Germany and the EU." +car_ben5_h3: "Fair Compensation" +car_ben5_p: "Receive fair compensation that corresponds to your qualifications and experience." +car_ben6_h3: "Work-Life Balance" +car_ben6_p: "A refreshed you is a happy you. We ensure you have enough time for work-life balance and offer various perks to support your wellbeing." +car_cta_h2: "Ready to Join Us?" +car_cta_p: "We're always looking for talented people who share our passion for building infrastructure for the energy transition." +car_cta_primary: "View Open Positions" +car_cta_secondary: "Learn More About Us" + +# ══════════════════════════════════════════════════════════════════════════════ +# News page (company/news.html) +# ══════════════════════════════════════════════════════════════════════════════ +news_meta_title: "News — Riddle&Code" +news_meta_desc: "Latest news, research and updates from Riddle&Code and the KERN team." +news_h1: "News & Insights
From Riddle&Code" +news_sub: "Stay up to date with our latest product updates, market research and company news." +news_filter_all: "All" +news_filter_news: "News" +news_filter_research: "Research" +news_filter_updates: "Updates" +news_load_more: "Load More" +news_cta_h2: "Want to stay updated?" +news_cta_p: "Subscribe to our newsletter or follow us on LinkedIn." +news_cta_primary: "Contact Us" +news_cta_secondary: "Back to Home" + +# ══════════════════════════════════════════════════════════════════════════════ +# Navigation +# ══════════════════════════════════════════════════════════════════════════════ +nav_prefix: "/" +nav_products: "Products" +nav_kern_label: "KERN — Autonomous Energy Platform" +nav_kern_overview: "KERN Overview" +nav_for_utilities: "For Utilities" +nav_for_aggregators: "For Aggregators" +nav_for_communities: "For Energy Communities" +nav_for_platforms: "For Platforms" +nav_technology: "Technology" +nav_references: "References" +nav_company: "Company" +nav_about_us: "About Us" +nav_news: "News" +nav_media: "Media" +nav_careers: "Careers" +nav_book_demo: "Book a Demo" + +# ══════════════════════════════════════════════════════════════════════════════ +# Footer +# ══════════════════════════════════════════════════════════════════════════════ +footer_tagline: "Infrastructure for distributed energy." +footer_col_kern: "KERN" +footer_platform_overview: "Platform Overview" +footer_for_utilities: "For Utilities" +footer_for_aggregators: "For Aggregators" +footer_for_communities: "For Energy Communities" +footer_for_platforms: "For Platforms" +footer_col_more: "More" +footer_technology: "Technology" +footer_references: "References" +footer_news: "News" +footer_col_company: "Company" +footer_about_us: "About Us" +footer_careers: "Careers" +footer_media: "Media" +footer_contact: "Contact" +footer_col_legal: "Legal" +footer_imprint: "Imprint" +footer_privacy: "Privacy Policy" +footer_terms: "Terms of Service" +footer_copyright: "© 2025 Riddle&Code GmbH. All rights reserved." diff --git a/lychee/.gitkeep b/lychee/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lychee/out.md b/lychee/out.md new file mode 100644 index 0000000..0606dac --- /dev/null +++ b/lychee/out.md @@ -0,0 +1 @@ +🔍 43 Total (in 0s) ✅ 43 OK 🚫 0 Errors diff --git a/news/index.html b/news/index.html new file mode 100644 index 0000000..d5b7b80 --- /dev/null +++ b/news/index.html @@ -0,0 +1,11 @@ + + + + + + Riddle&Code + + + + + diff --git a/news/low-power-networks-the-backbone-of-profitable-energy-communities.html b/news/low-power-networks-the-backbone-of-profitable-energy-communities.html index 14403df..62663e1 100644 --- a/news/low-power-networks-the-backbone-of-profitable-energy-communities.html +++ b/news/low-power-networks-the-backbone-of-profitable-energy-communities.html @@ -11,7 +11,7 @@ + + + + +
+ References +

Grid. Aggregator. Community.
All live.

+

Leading utilities. Three production deployments on a single platform. Visitable on request.

+
+ +
+ +
+ + +
+ R&C KERN — live installation +
+ + +
+
+ Live Reference — Austria +

Leading utilities built their complete flexibility stack on R&C KERN

+
+
+
+ +
+
Grid
+
Live MV/LV Microgrid
+
Real medium and low-voltage grid in production. KERN managing all assets behind the meter — generation, storage, controllable loads.
+
+ +
+
Aggregator
+
Utility-owned Flexibility Aggregator
+
Utility subsidiary securing bids on Austrian energy markets. KERN provides autonomous dispatch with confirmed execution — enabling reliable bid fulfilment.
+
+ +
+
Community
+
Energy Community Platform
+
Energy community management running on KERN as the optimisation and control layer — autonomous asset coordination, collective self-consumption maximisation.
+
+ +
+ +
+

+ The system is visitable.
+ The live installation can be visited on request — a real microgrid, running KERN in production. Contact us to arrange a visit. +

+ Request a Visit +
+
+
+ + +
+

More references coming

+

Additional customer references are in preparation. We are currently seeking approval to publish by name.
+ Contact us to speak directly with a reference customer.

+
+ +
+ + +
+

See it running.

+

A 30-minute call or an on-site visit — whichever is more useful for you.

+ +
+ + + + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3aecde9 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pyyaml>=6.0 diff --git a/scripts/load-kern-product-bar.js b/scripts/load-kern-product-bar.js new file mode 100644 index 0000000..9c8a1e0 --- /dev/null +++ b/scripts/load-kern-product-bar.js @@ -0,0 +1,10 @@ +(function() { + const placeholder = document.getElementById('kern-product-bar-placeholder'); + if (!placeholder) return; + const depth = (window.location.pathname.match(/\//g) || []).length - 1; + const prefix = depth > 0 ? '../'.repeat(depth) : ''; + fetch(prefix + 'includes/kern-product-bar.html') + .then(r => r.text()) + .then(html => { placeholder.innerHTML = html; }) + .catch(e => console.error('Error loading kern product bar:', e)); +})(); diff --git a/scripts/main.js b/scripts/main.js index d93f118..7f4626d 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -12,10 +12,12 @@ const isFile = window.location.pathname.includes('.'); const depth = isFile ? pathParts.length - 1 : pathParts.length; const prefix = depth > 0 ? '../'.repeat(depth) : ''; + const isDE = window.location.pathname.startsWith('/de/') || window.location.pathname === '/de'; + const includesDir = isDE ? 'de/includes/' : 'includes/'; const components = [ - { id: 'nav-placeholder', file: 'includes/nav.html', init: initNav }, - { id: 'footer-modern-placeholder', file: 'includes/footer.html' }, + { id: 'nav-placeholder', file: includesDir + 'nav.html', init: initNav }, + { id: 'footer-modern-placeholder', file: includesDir + 'footer.html' }, { id: 'solutions-section-placeholder', file: 'includes/solutions-section.html' }, { id: 'capabilities-section-placeholder', file: 'includes/capabilities-section.html' }, { id: 'technology-section-placeholder', file: 'includes/technology-section.html' }, @@ -39,8 +41,8 @@ })(window,document); // 2.2 Favicons - addLinkTag({ rel: 'shortcut icon', type: 'image/x-icon', href: prefix + 'images/641436b897f1d137d2d2845d_fav_icon.png' }); - addLinkTag({ rel: 'apple-touch-icon', href: prefix + 'images/641437162f7f81829faa8c24_webclip.png' }); + addLinkTag({ rel: 'shortcut icon', type: 'image/svg+xml', href: prefix + 'images/kern-symbol.svg' }); + addLinkTag({ rel: 'apple-touch-icon', href: prefix + 'images/kern-symbol.svg' }); // 2.3 Analytics & Scripts const gaId = document.documentElement.getAttribute('data-ga-id') || 'G-K86LPV2ZGE'; @@ -120,23 +122,78 @@ function initNav(container) { const toggle = container.querySelector('#navToggle'); const menu = container.querySelector('#navMenu'); - + if (toggle && menu) { toggle.addEventListener('click', function(e) { e.stopPropagation(); menu.classList.toggle('active'); }); - + document.addEventListener('click', function(event) { if (!toggle.contains(event.target) && !menu.contains(event.target)) { menu.classList.remove('active'); } }); - - container.querySelectorAll('a').forEach(link => { + + // Mobile: tap parent items to open/close dropdowns + container.querySelectorAll('.nav-item > .nav-link').forEach(function(link) { + link.addEventListener('click', function(e) { + if (window.innerWidth <= 900) { + e.preventDefault(); + const item = this.closest('.nav-item'); + container.querySelectorAll('.nav-item.open').forEach(other => { + if (other !== item) other.classList.remove('open'); + }); + item.classList.toggle('open'); + } + }); + }); + + // Close menu when leaf links are clicked + container.querySelectorAll('.nav-dropdown a, .nav-cta').forEach(link => { link.addEventListener('click', () => menu.classList.remove('active')); }); } + + initLangToggle(container); + } + + function initLangToggle(container) { + const path = window.location.pathname; + const isDE = path.startsWith('/de/') || path === '/de'; + + function altUrl(targetLang) { + const basePath = path.replace(/^\/de/, '') || '/'; + if (targetLang === 'de') { + return '/de' + basePath; + } else { + return basePath; + } + } + + const enLink = container.querySelector('#lang-en'); + const deLink = container.querySelector('#lang-de'); + + if (enLink && deLink) { + enLink.href = altUrl('en'); + deLink.href = altUrl('de'); + (isDE ? deLink : enLink).classList.add('active'); + + enLink.addEventListener('click', () => localStorage.setItem('rnc-lang', 'en')); + deLink.addEventListener('click', () => localStorage.setItem('rnc-lang', 'de')); + } + } + + function initAutoRedirect() { + // Only redirect on root homepage, not on DE pages or other paths + if (window.location.pathname !== '/' && window.location.pathname !== '/index.html') return; + const saved = localStorage.getItem('rnc-lang'); + if (saved) return; // user has explicit preference + const browserLang = (navigator.language || '').toLowerCase().slice(0, 2); + if (browserLang === 'de') { + localStorage.setItem('rnc-lang', 'de'); + window.location.replace('/de/'); + } } // --- 4. ANIMATIONS --- @@ -159,6 +216,7 @@ // --- 5. INITIALIZATION --- function init() { + initAutoRedirect(); initHead(); loadComponents(); initAnimations(); diff --git a/slides/AssetDevelopment.html b/slides/AssetDevelopment.html index 557a097..5a6e5f9 100644 --- a/slides/AssetDevelopment.html +++ b/slides/AssetDevelopment.html @@ -562,7 +562,7 @@ .levels-list li:hover { background: #222; transform: translateX(10px); - box-shadow: 0 5px 20px rgba(0, 255, 136, 0.2); + box-shadow: 0 5px 20px rgba(245, 158, 11, 0.2); } .emphasis-text { @@ -609,7 +609,7 @@ .device-card:hover { border-color: #00ff88; - box-shadow: 0 5px 20px rgba(0, 255, 136, 0.15); + box-shadow: 0 5px 20px rgba(245, 158, 11, 0.15); } .device-image { diff --git a/slides/BESSInvestment.html b/slides/BESSInvestment.html index 4c3ceac..4ec530e 100644 --- a/slides/BESSInvestment.html +++ b/slides/BESSInvestment.html @@ -562,7 +562,7 @@ .levels-list li:hover { background: #222; transform: translateX(10px); - box-shadow: 0 5px 20px rgba(0, 255, 136, 0.2); + box-shadow: 0 5px 20px rgba(245, 158, 11, 0.2); } .emphasis-text { @@ -609,7 +609,7 @@ .device-card:hover { border-color: #00ff88; - box-shadow: 0 5px 20px rgba(0, 255, 136, 0.15); + box-shadow: 0 5px 20px rgba(245, 158, 11, 0.15); } .device-image { diff --git a/slides/BESSInvestmentEURAU.html b/slides/BESSInvestmentEURAU.html index d38e4c9..9165782 100644 --- a/slides/BESSInvestmentEURAU.html +++ b/slides/BESSInvestmentEURAU.html @@ -562,7 +562,7 @@ .levels-list li:hover { background: #222; transform: translateX(10px); - box-shadow: 0 5px 20px rgba(0, 255, 136, 0.2); + box-shadow: 0 5px 20px rgba(245, 158, 11, 0.2); } .emphasis-text { @@ -609,7 +609,7 @@ .device-card:hover { border-color: #00ff88; - box-shadow: 0 5px 20px rgba(0, 255, 136, 0.15); + box-shadow: 0 5px 20px rgba(245, 158, 11, 0.15); } .device-image { diff --git a/slides/decentralization-layers.html b/slides/decentralization-layers.html index 1405a03..26f8927 100644 --- a/slides/decentralization-layers.html +++ b/slides/decentralization-layers.html @@ -51,7 +51,7 @@ margin: 0 auto 80px; display: block; border-radius: 12px; - box-shadow: 0 20px 60px rgba(0, 255, 136, 0.1); + box-shadow: 0 20px 60px rgba(245, 158, 11, 0.1); } .layers-container { @@ -86,7 +86,7 @@ .layer-card:hover { transform: translateY(-5px); border-color: #00ff88; - box-shadow: 0 10px 40px rgba(0, 255, 136, 0.2); + box-shadow: 0 10px 40px rgba(245, 158, 11, 0.2); } .layer-card:hover::before { diff --git a/slides/fwv25.html b/slides/fwv25.html index 674fa90..b9e17db 100644 --- a/slides/fwv25.html +++ b/slides/fwv25.html @@ -609,7 +609,7 @@ .levels-list li:hover { background: #222; transform: translateX(10px); - box-shadow: 0 5px 20px rgba(0, 255, 136, 0.2); + box-shadow: 0 5px 20px rgba(245, 158, 11, 0.2); } .emphasis-text { @@ -656,7 +656,7 @@ .device-card:hover { border-color: #00ff88; - box-shadow: 0 5px 20px rgba(0, 255, 136, 0.15); + box-shadow: 0 5px 20px rgba(245, 158, 11, 0.15); } .device-image { diff --git a/slides/infrastructure-iq.pdf b/slides/infrastructure-iq.pdf new file mode 100644 index 0000000..e128310 Binary files /dev/null and b/slides/infrastructure-iq.pdf differ diff --git a/styles/article.css b/styles/article.css deleted file mode 100644 index 6ab9bd0..0000000 --- a/styles/article.css +++ /dev/null @@ -1,52 +0,0 @@ -/* Article Styles for News and Showcase Pages */ -.article-hero { - padding: 100px 20px 60px; - max-width: 1200px; - margin: 0 auto; -} - -.article-hero .section-tag { - font-size: 0.85rem; - letter-spacing: 2px; - text-transform: uppercase; - color: var(--primary-green); - margin-bottom: 20px; - font-weight: 600; -} - -.article-hero h1 { - font-size: 2.5rem; - line-height: 1.2; - margin-bottom: 20px; - color: var(--text-dark); -} - -.article-hero .highlight { - color: var(--primary-green); -} - -.article-date { - color: #666; - font-size: 0.95rem; - margin-bottom: 40px; -} - -.featured-image { - max-width: 1200px; - margin: 0 auto 60px; - padding: 0 20px; -} - -.featured-image img { - width: 100%; - height: auto; - border-radius: 12px; - box-shadow: 0 8px 30px rgba(0, 255, 136, 0.15); -} - -.article-content { - max-width: 800px; - margin: 0 auto; - padding: 0 20px 80px; -} - diff --git a/styles/custom-nav.css b/styles/custom-nav.css deleted file mode 100644 index 567fc9a..0000000 --- a/styles/custom-nav.css +++ /dev/null @@ -1,62 +0,0 @@ -/* Dropdown positioning fix - must override Webflow CSS */ -.w-dropdown, .dropdown-2 { position: relative; } -.w-dropdown-list, .dropdown-list-2 { - position: absolute !important; - top: 100% !important; - left: 0 !important; - right: auto !important; - z-index: 900; - display: none; - min-width: 120px; - width: auto; - margin-top: 5px; - padding: 5px 0; - background: white; - border-radius: 4px; - box-shadow: 0 2px 10px rgba(0,0,0,0.1); -} -.w-dropdown-list a, .dropdown-list-2 a { - display: block; - padding: 8px 16px; - white-space: nowrap; - font-size: 14px; -} -.w-dropdown.w--open .w-dropdown-list, .dropdown-2.w--open .dropdown-list-2 { - display: block !important; -} - -/* Full-width navigation menu */ -.nav-menu { - width: 100%; -} -.menu-links { - display: flex; - justify-content: space-between; - width: 100%; - max-width: 100%; - gap: 2rem; -} -.menu-links .column { - flex: 1; - min-width: 0; -} - -/* Smooth hamburger menu animation - mobile only */ -@media (max-width: 991px) { - .nav-menu { - transition: max-height 0.4s ease-out, opacity 0.3s ease-out; - will-change: max-height, opacity; - } -} - -/* Hide stray navigation elements */ -.nav-icon-line { display: block !important; } - -/* Webflow replacement animations */ -.section[data-w-id].is-visible { - opacity: 1 !important; - transform: translateY(0) !important; -} -[data-w-id] { - transition: opacity 0.6s ease-out, transform 0.6s ease-out; -} diff --git a/styles/dropdown-fix.css b/styles/dropdown-fix.css deleted file mode 100644 index 606f4a0..0000000 --- a/styles/dropdown-fix.css +++ /dev/null @@ -1,80 +0,0 @@ -/* Simple dropdown styles - override Webflow if needed */ -.w-dropdown, -.dropdown-2 { - position: relative; -} - -.w-dropdown-list, -.dropdown-list-2 { - position: absolute !important; - top: 100% !important; - left: 0 !important; - right: auto !important; - z-index: 900; - display: none; - min-width: 120px; - width: auto; - margin-top: 5px; - padding: 5px 0; - background: white; - border-radius: 4px; - box-shadow: 0 2px 10px rgba(0,0,0,0.1); -} - -.w-dropdown-list a, -.dropdown-list-2 a { - display: block; - padding: 8px 16px; - white-space: nowrap; - font-size: 14px; -} - -.w-dropdown.w--open .w-dropdown-list, -.dropdown-2.w--open .dropdown-list-2 { - display: block !important; -} - -.w-dropdown-toggle { - cursor: pointer; - user-select: none; -} - -/* Navigation menu */ -.nav-menu { - display: none; - position: fixed; - top: 0; - right: -100%; - width: 400px; - max-width: 90vw; - height: 100vh; - z-index: 800; - background: rgba(0,0,0,0.95); - padding: 80px 40px 40px; - overflow-y: auto; - transition: right 0.3s ease-in-out; - box-shadow: -2px 0 10px rgba(0,0,0,0.3); -} - -.navbar.open .nav-menu { - display: flex !important; - right: 0; -} - -/* Overlay behind menu */ -.nav-menu::before { - content: ''; - position: fixed; - top: 0; - left: 0; - right: 400px; - bottom: 0; - background: rgba(0,0,0,0.5); - z-index: -1; -} - -.nav-icon { - cursor: pointer; - z-index: 900; - position: relative; -} diff --git a/styles/legal-content.css b/styles/legal-content.css index a22f84b..745d591 100644 --- a/styles/legal-content.css +++ b/styles/legal-content.css @@ -39,7 +39,7 @@ .cookie-settings-btn { display: inline-block; padding: 0.75rem 1.5rem; - background: rgba(0, 255, 136, 0.1); + background: rgba(245, 158, 11, 0.1); border: 1px solid var(--primary-green); border-radius: 8px; color: var(--primary-green); @@ -49,6 +49,6 @@ } .cookie-settings-btn:hover { - background: rgba(0, 255, 136, 0.2); + background: rgba(245, 158, 11, 0.2); } diff --git a/styles/main.css b/styles/main.css index 978b800..c2a22f9 100644 --- a/styles/main.css +++ b/styles/main.css @@ -6,21 +6,19 @@ } :root { - --primary-green: #00ff88; - --primary-blue: #00d4ff; - --dark-bg: #0a0a0a; - --card-bg: #111111; + --kern-accent: #F59E0B; /* warm amber gold — primary brand accent */ + --primary-green: #F59E0B; /* alias — kept for includes not yet migrated */ + --dark-bg: #1C2333; + --card-bg: #243048; --text-primary: #ffffff; --text-secondary: #e0e0e0; - --text-muted: #999999; - --border-color: #333333; + --text-muted: #8899aa; + --border-color: #2e3d52; --spacing-xs: 0.5rem; --spacing-sm: 1rem; --spacing-md: 2rem; --spacing-lg: 4rem; --spacing-xl: 6rem; - --mypwr: #fc4c02; - --black: black; } body { @@ -112,7 +110,7 @@ html { .section-tag { display: inline-block; - color: var(--primary-blue); + color: var(--kern-accent); font-size: 0.875rem; font-weight: 600; text-transform: uppercase; @@ -153,7 +151,7 @@ html { .target-card:hover { transform: translateY(-4px); border-color: var(--primary-green); - box-shadow: 0 8px 24px rgba(0, 255, 136, 0.15); + box-shadow: 0 8px 24px rgba(245, 158, 11, 0.15); } .target-icon { @@ -177,12 +175,12 @@ html { .target-card:hover .target-icon { transform: scale(1.1); - filter: drop-shadow(0 2px 8px rgba(0, 255, 136, 0.4)); + filter: drop-shadow(0 2px 8px rgba(245, 158, 11, 0.4)); } .target-title { font-size: 1.5rem; - color: var(--primary-blue); + color: var(--text-primary); margin-bottom: var(--spacing-sm); font-weight: 600; } @@ -223,12 +221,12 @@ html { } .benefit-tag { - background: rgba(0, 255, 136, 0.1); + background: rgba(245, 158, 11, 0.1); color: var(--primary-green); padding: 0.4rem 0.8rem; border-radius: 6px; font-size: 0.875rem; - border: 1px solid rgba(0, 255, 136, 0.2); + border: 1px solid rgba(245, 158, 11, 0.2); } /* Value Proposition */ @@ -262,7 +260,7 @@ html { .value-card:hover .value-icon { transform: scale(1.1); - filter: drop-shadow(0 2px 8px rgba(0, 255, 136, 0.4)); + filter: drop-shadow(0 2px 8px rgba(245, 158, 11, 0.4)); } .value-card h3 { @@ -294,7 +292,7 @@ html { } .tech-layer { - background: rgba(0, 255, 136, 0.05); + background: rgba(245, 158, 11, 0.05); border-left: 4px solid var(--primary-green); padding: 1rem 1.25rem; border-radius: 8px; @@ -332,7 +330,7 @@ html { /* CTA Section */ .cta-section { text-align: center; - background: linear-gradient(135deg, rgba(0, 255, 136, 0.1), rgba(0, 212, 255, 0.1)); + background: linear-gradient(135deg, rgba(245, 158, 11, 0.1), rgba(0, 212, 255, 0.1)); border: 1px solid var(--border-color); border-radius: 12px; padding: var(--spacing-lg); @@ -370,7 +368,7 @@ html { .btn-primary:hover { transform: translateY(-2px); - box-shadow: 0 6px 20px rgba(0, 255, 136, 0.4); + box-shadow: 0 6px 20px rgba(245, 158, 11, 0.4); } .btn-secondary { @@ -380,7 +378,7 @@ html { } .btn-secondary:hover { - background: rgba(0, 255, 136, 0.1); + background: rgba(245, 158, 11, 0.1); transform: translateY(-2px); } @@ -420,149 +418,68 @@ html { animation: fadeInUp 0.8s ease forwards; } -/* Smooth scroll */ -html { - scroll-behavior: smooth; -} - -/* MYPWR Orange Styles */ -.orange-pwr { - color: var(--mypwr); -} - -.orange-pwr.mypwr { - text-align: center; - font-size: 3em; -} - -.button.orange-pwr { - background-color: var(--mypwr); - color: var(--black); -} -.button.small-orange-pwr { - background-color: var(--mypwr); - color: var(--black); +/* ── Split problem / solution rows ─────────────────────────────────────── */ +.split-list { + display: flex; flex-direction: column; + gap: 0.75rem; + margin-bottom: var(--spacing-lg); } -.solid.orange-pwr { - z-index: -1; - background-color: var(--mypwr); - margin-bottom: 0; +.split-row { + display: grid; + grid-template-columns: 1fr 1fr; + border: 1px solid #2e3d52; + border-radius: 12px; + overflow: hidden; } -.tag-headline.orange-pwr { - text-align: left; +.split-problem { + padding: 1.75rem 2rem; + background: var(--card-bg); + border-right: 1px solid #2e3d52; } -@media (max-width: 991px) { - .orange-pwr.mypwr { - font-size: 2.5em; - } +.split-solution { + padding: 1.75rem 2rem; + background: #16202f; + border-left: 3px solid var(--primary-green); } -@media (max-width: 767px) { - .orange-pwr.mypwr { - font-size: 2em; - } +.split-label { + font-size: 0.7rem; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + margin-bottom: 0.6rem; + display: block; } -/* Infographic and Pop-up Styles */ -.infographic-headline { - color: var(--text-primary); - font-size: 2rem; - margin-bottom: 1rem; -} +.split-problem .split-label { color: var(--text-muted); } +.split-solution .split-label { color: var(--primary-green); } -.pop-up-content { - color: var(--text-secondary); +.split-title { + font-size: 0.95rem; + font-weight: 600; + color: var(--text-primary); + margin-bottom: 0.4rem; } -.pop-up-content p { - color: var(--text-secondary); +.split-desc { + font-size: 0.875rem; + color: var(--text-muted); line-height: 1.6; - margin-bottom: 1rem; } -.w-richtext p { +.split-answer { + font-size: 0.875rem; color: var(--text-secondary); line-height: 1.6; } -.infographic-link .button { - display: inline-block; - padding: 1rem 2rem; -} - -.button p { - color: inherit; -} - -.mypwr-logo { - max-width: 300px; - margin-bottom: 2rem; -} - -/* Hide slider navigation arrows and buttons */ -.slider-main_button, -.swiper-button-next, -.swiper-button-prev, -.slider-main_button-wrapper, -.slider-main_button-icon, -.w-embed svg { - display: none !important; -} - -/* Partner Grid Styles */ -.partner-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); - gap: 2rem; - margin-top: 2rem; - align-items: center; -} - -.partner-logo-container { - background: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 12px; - padding: 1.5rem; - display: flex; - align-items: center; - justify-content: center; - min-height: 100px; - transition: all 0.3s ease; -} - -.partner-logo-container:hover { - background: rgba(255, 255, 255, 0.08); - border-color: rgba(255, 255, 255, 0.2); -} - -.partner-logo-container img { - max-width: 100%; - max-height: 60px; - width: auto; - height: auto; - object-fit: contain; - filter: brightness(0) invert(1); - opacity: 0.8; -} - -.partner-logo-container img[src*=".jpeg"], -.partner-logo-container img[src*=".jpg"] { - filter: none; - mix-blend-mode: screen; -} - -.partner-logo-container:hover img { - opacity: 1; -} - -@media (max-width: 768px) { - .partner-grid { - grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); - gap: 1.5rem; - } +@media (max-width: 680px) { + .split-row { grid-template-columns: 1fr; } + .split-problem { border-right: none; border-bottom: 1px solid #2e3d52; } + .split-solution { border-left: none; border-top: 3px solid var(--primary-green); } } diff --git a/styles/showcase.css b/styles/showcase.css index 79e9a54..f822286 100644 --- a/styles/showcase.css +++ b/styles/showcase.css @@ -12,7 +12,7 @@ .showcase-card:hover { background: rgba(255, 255, 255, 0.05); - border-color: var(--primary-blue); + border-color: var(--kern-accent); transform: translateY(-4px); } diff --git a/technology/index.html b/technology/index.html new file mode 100644 index 0000000..1244384 --- /dev/null +++ b/technology/index.html @@ -0,0 +1,253 @@ + + + + + Technology — KERN by Riddle&Code + + + + + + + + + + + + +
+ Technology +

Built for energy infrastructure.
Not adapted from IoT.

+

MIOTY, Zigbee Mesh, a 24h autonomous forecast loop and confirmed dispatch — purpose-built for the demands of flexibility management behind the meter.

+
+ +
+ + +
+
+ KERN hardware device +
+
+ + +
+

Connectivity by topology

+

The technology choice follows the asset topology — not the other way around.

+ +
+
+
Contiguous sites
+

Zigbee Mesh

+

Buildings, campuses, industrial premises, microgrids on one site

+
    +
  • RangeUp to 100m per node, mesh extends coverage
  • +
  • DeploymentNo gateway per room — mesh self-organises
  • +
  • CostLow hardware cost per node
  • +
  • TopologySelf-healing mesh — resilient to node failure
  • +
  • Use caseHEMS, C&I facilities, ESC on one campus
  • +
+
+
+
Distributed assets
+

MIOTY

+

Geographically dispersed assets — rural PV, MV BESS, multiple remote sites

+
    +
  • Range10 km per gateway
  • +
  • Capacity1.5M messages/day per gateway
  • +
  • StandardIEC 62657-1 — purpose-built for energy
  • +
  • IndependenceNo LTE, no WiFi required
  • +
  • Latency<1 second for dispatch commands
  • +
+
+
+ +

MIOTY vs. LoRaWAN

+ + + + + + + + + + + + + + + + +
CapabilityMIOTYLoRaWAN
StandardIEC 62657-1 (international)LoRa Alliance proprietary
RangeUp to 10 kmUp to 5 km
Messages/day/gateway1,500,000~50,000
Designed forEnergy infrastructure, utility gradeGeneral IoT sensing
Dispatch latency<1 secondSeconds to minutes
LTE independence
+
+ +
+ + +
+

The autonomous loop

+

KERN operates continuously — forecasting, reacting and dispatching without manual intervention.

+
+
1. FORECAST  (rolling, 24h ahead)
+   Per asset: state of charge, PV forecast (weather-based),
+   load forecast (historical patterns), available flexibility window.
+   Per portfolio: aggregated flexibility profile (MW, time, confidence).
+   → Delivered to aggregator / platform as API feed.
+
+2. DEMAND  (inbound signal)
+   Flexibility signal received from aggregator, utility or market:
+   volume (kW), time window, direction (increase/decrease).
+
+3. REBALANCE  (real-time delta)
+   KERN compares demand signal against current actual asset state.
+   Detects deviations: weather change, load shift, asset failure.
+   Adjusts dispatch plan autonomously — before deviation becomes critical.
+
+4. DISPATCH  (autonomous asset control)
+   KERN selects assets, determines control sequence, sends commands.
+   Execution via Zigbee Mesh (contiguous) or MIOTY (distributed).
+   Asset protocols: Modbus, SunSpec, EEBUS, proprietary inverter APIs.
+
+5. CONFIRMATION
+   Asset-level execution confirmed back to KERN.
+   Fulfillment status reported to aggregator / platform in real-time.
+   Next forecast cycle starts immediately.
+
+
+ +
+ + +
+

How KERN makes decisions

+

Each optimization cycle draws on live telemetry, market signals and learned patterns — not manual configuration.

+
+
+

Price-signal driven dispatch

+

KERN tracks day-ahead and intraday prices, FCR/aFRR signal values and grid tariff structures in real time. Every asset dispatch decision is evaluated against the active market environment — not a fixed schedule.

+
+
+

Rolling forecast engine

+

Consumption and generation forecast 24h ahead per asset — combining live state of charge, weather-based PV models and historical load patterns. Continuously refined as the delivery window approaches.

+
+
+

Continuous rebalancing

+

KERN compares actual asset state against committed dispatch position every few minutes. Detected deviations trigger automatic asset reselection and re-dispatch — before the delivery window closes and penalties apply.

+
+
+
+ +
+ + +
+

Supported assets and protocols

+

KERN normalises all asset types to a single data model — regardless of manufacturer or protocol.

+ +

Asset types

+
+
PV (residential)
+
PV (commercial)
+
Home storage
+
Commercial BESS
+
Heat pumps
+
EV chargers
+
CHP
+
Biogas
+
Controllable loads
+
MV-connected assets
+
+ +

Communication protocols

+
+
Modbus TCP/RTU
+
SunSpec
+
EEBUS
+
REST API
+
OCPP (EV)
+
Proprietary inverter APIs
+
+
+ +
+ + +
+

Security & compliance

+
+
+

End-to-end encryption

+

All asset communication encrypted end-to-end — from sensor to platform.

+
+
+

Certificate-based authentication

+

Every asset authenticated by certificate — no unauthorised control possible.

+
+
+

Redispatch 2.0

+

Compliant with Redispatch 2.0 requirements for distributed generation control.

+
+
+

§14a / EAG / EnFG

+

Compatible with controllable load regulations in Germany and Austria.

+
+
+ Book a Technical Demo +
+ + + + diff --git a/templates/company/about-us.html b/templates/company/about-us.html new file mode 100644 index 0000000..224703c --- /dev/null +++ b/templates/company/about-us.html @@ -0,0 +1,193 @@ + + + + + {{ au_meta_title }} + + + + + + + + + + + + + +
+ + +
+

{{ au_eyebrow }}

+

+ {{ au_h1 }} +

+

+ {{ au_sub }} +

+
+ + +
+
+ +

{{ au_why_h2 }}

+

+ {{ au_why_desc }} +

+
+ +
+
+

{{ au_val1_h3 }}

+

{{ au_val1_p }}

+
+ +
+

{{ au_val2_h3 }}

+

{{ au_val2_p }}

+
+ +
+

{{ au_val3_h3 }}

+

{{ au_val3_p }}

+
+
+
+ + +
+
+

{{ au_what_h3 }}

+

{{ au_what_sub }}

+ +
+
+

{{ au_tech1_h4 }}

+

{{ au_tech1_p }}

+
+ IEC standard + 10km range + 1.5M msg/day + No per-asset commissioning +
+
+ +
+

{{ au_tech2_h4 }}

+

{{ au_tech2_p }}

+
+ PV + battery + Intraday trading + €114/asset/yr ARR +
+
+ +
+

{{ au_tech3_h4 }}

+

{{ au_tech3_p }}

+
+ EU regulatory compliant + Automated reporting + €24/member/yr ARR +
+
+ +
+

{{ au_tech4_h4 }}

+

{{ au_tech4_p }}

+
+ aFRR / FCR + Direct market access + €25k/plant/yr ARR +
+
+
+
+
+ + +
+
+ +

{{ au_proof_h2 }}

+
+ +
+
+

{{ au_proof1_h3 }}

+

{{ au_proof1_p }}

+
+ +
+

{{ au_proof2_h3 }}

+

{{ au_proof2_p }}

+
+ +
+

{{ au_proof3_h3 }}

+

{{ au_proof3_p }}

+
+
+
+ + +
+
+ +

{{ au_founders_h2 }}

+
+ +
+
+
+ Manfred Bodner +
+

Manfred Bodner

+

Co-Founder

+ + LinkedIn + +
+ +
+
+ Tom Fürstner +
+

Tom Fürstner

+

Co-Founder

+ + LinkedIn + +
+ +
+
+ Rene Schrittwieser +
+

Rene Schrittwieser

+

Investor

+ + LinkedIn + +
+
+
+ +
+
+

{{ au_cta_h2 }}

+

{{ au_cta_p }}

+ +
+
+ + +
+ + diff --git a/templates/company/career.html b/templates/company/career.html new file mode 100644 index 0000000..1abcf8a --- /dev/null +++ b/templates/company/career.html @@ -0,0 +1,162 @@ + + + + + {{ car_meta_title }} + + + + + + + + + + + + + +
+ + +
+

+ {{ car_h1 }} +

+

+ {{ car_sub }} +

+
+ +
+
+ +

{{ car_purpose_h2 }}

+
+ +
+
+

{{ car_purpose1_h3 }}

+

{{ car_purpose1_strong }}

+

{{ car_purpose1_p }}

+
+ +
+

{{ car_purpose2_h3 }}

+

{{ car_purpose2_strong }}

+

{{ car_purpose2_p }}

+
+ +
+

{{ car_purpose3_h3 }}

+

{{ car_purpose3_strong }}

+

{{ car_purpose3_p }}

+
+
+
+ +
+
+

{{ car_values_h3 }}

+

{{ car_values_sub }}

+ +
+
+
{{ car_val1_label }}
+
+ {{ car_val1_desc }} +
+
+ +
+
{{ car_val2_label }}
+
+ {{ car_val2_desc }} +
+
+ +
+
{{ car_val3_label }}
+
+ {{ car_val3_desc }} +
+
+ +
+
{{ car_val4_label }}
+
+ {{ car_val4_desc }} +
+
+ +
+
{{ car_val5_label }}
+
+ {{ car_val5_desc }} +
+
+ +
+
{{ car_val6_label }}
+
+ {{ car_val6_desc }} +
+
+
+
+
+ +
+
+ +

{{ car_benefits_h2 }}

+
+ +
+
+

{{ car_ben1_h3 }}

+

{{ car_ben1_p }}

+
+ +
+

{{ car_ben2_h3 }}

+

{{ car_ben2_p }}

+
+ +
+

{{ car_ben3_h3 }}

+

{{ car_ben3_p }}

+
+ +
+

{{ car_ben4_h3 }}

+

{{ car_ben4_p }}

+
+ +
+

{{ car_ben5_h3 }}

+

{{ car_ben5_p }}

+
+ +
+

{{ car_ben6_h3 }}

+

{{ car_ben6_p }}

+
+
+
+ +
+
+

{{ car_cta_h2 }}

+

{{ car_cta_p }}

+ +
+
+ + +
+ + diff --git a/templates/company/get-in-touch.html b/templates/company/get-in-touch.html new file mode 100644 index 0000000..a15d5d0 --- /dev/null +++ b/templates/company/get-in-touch.html @@ -0,0 +1,117 @@ + + + + + {{ git_meta_title }} + + + + + + + + + + + + + +
+ + +
+

+ {{ git_h1 }} +

+

+ {{ git_sub }} +

+
+ +
+
+ +

{{ git_contact_h2 }}

+
+ +
+
+

{{ git_inq_h3 }}

+

{{ git_inq_p }}

+

{{ git_inq_email }}

+
+ +
+

{{ git_demo_h3 }}

+

{{ git_demo_p }}

+
+ +
+

{{ git_visit_h3 }}

+

{{ git_visit_p }}

+
+
+
+ +
+
+ +

{{ git_loc_h2 }}

+
+ +
+
+

+ Riddle & Code GmbH
+ c/o Spaces Icon Central Station
+ Gertrude-Fröhlich-Sandner-Straße 2-4/Tower 9
+ 1100 Vienna, Austria +

+
+
+
+ +
+
+ +

{{ git_why_h2 }}

+
+ +
+
+

{{ git_why1_h3 }}

+

{{ git_why1_p }}

+
+ +
+

{{ git_why2_h3 }}

+

{{ git_why2_p }}

+
+ +
+

{{ git_why3_h3 }}

+

{{ git_why3_p }}

+
+ +
+

{{ git_why4_h3 }}

+

{{ git_why4_p }}

+
+
+
+ +
+
+

{{ git_cta_h2 }}

+

{{ git_cta_p }}

+ +
+
+ + +
+ + diff --git a/templates/company/media.html b/templates/company/media.html new file mode 100644 index 0000000..1b116b0 --- /dev/null +++ b/templates/company/media.html @@ -0,0 +1,119 @@ + + + + + {{ med_meta_title }} + + + + + + + + + + + + + +
+ + +
+

+ {{ med_h1 }} +

+

+ {{ med_sub }} +

+
+ +
+
+ +

{{ med_who_h2 }}

+
+ +
+
+

+ {{ med_who_p1 }} +

+

+ {{ med_who_p2 }} +

+
+
+
+ +
+
+ +

{{ med_dl_h2 }}

+
+ +
+
+

{{ med_logo_h3 }}

+

{{ med_logo_p }}

+ {{ med_logo_cta }} +
+ +
+

{{ med_press_h3 }}

+

{{ med_press_p }}

+ {{ med_press_cta }} +
+ +
+

{{ med_partner_h3 }}

+

{{ med_partner_p }}

+ {{ med_partner_cta }} +
+
+
+ +
+
+ +

{{ med_media_h2 }}

+
+ +
+
+

{{ med_pr_h3 }}

+

{{ med_pr_p }}

+
+ +
+

{{ med_contact_h3 }}

+

{{ med_contact_p }}

+
+ +
+

{{ med_interview_h3 }}

+

{{ med_interview_p }}

+
+ +
+

{{ med_usage_h3 }}

+

{{ med_usage_p }}

+
+
+
+ +
+
+

{{ med_cta_h2 }}

+

{{ med_cta_p }}

+ +
+
+ + +
+ + diff --git a/templates/company/news.html b/templates/company/news.html new file mode 100644 index 0000000..3f06435 --- /dev/null +++ b/templates/company/news.html @@ -0,0 +1,371 @@ + + + + + {{ news_meta_title }} + + + + + + + + + + + + + + +
+ + +
+

+ {{ news_h1 }} +

+

+ {{ news_sub }} +

+
+ +
+
+ +

Latest Content

+
+ +
+ + + + +
+ +
+ +
+
+ +
+
+

{{ news_cta_h2 }}

+

{{ news_cta_p }}

+ +
+
+ + + + +
+ + diff --git a/templates/includes/footer.html b/templates/includes/footer.html new file mode 100644 index 0000000..ffb9b57 --- /dev/null +++ b/templates/includes/footer.html @@ -0,0 +1,179 @@ + + + diff --git a/templates/includes/nav.html b/templates/includes/nav.html new file mode 100644 index 0000000..fc0d801 --- /dev/null +++ b/templates/includes/nav.html @@ -0,0 +1,224 @@ + + diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..2387f1a --- /dev/null +++ b/templates/index.html @@ -0,0 +1,526 @@ + + + + + {{ meta_title }} + + + + + + + + + + + + + + + + + + +
+
+
Riddle&Code — {{ hero_location }}
+

+ {{ hero_h1 }} +

+

+ {{ hero_sub }} +

+ +
+ + + +
+ + +
+ + +
+ + +
+
+

{{ loop_h2 }}

+

{{ loop_sub }}

+ +
+
+
1
+
{{ loop_step1_label }}
+
{{ loop_step1_desc }}
+
+
+
+
2
+
{{ loop_step2_label }}
+
{{ loop_step2_desc }}
+
+
+
+
3
+
{{ loop_step3_label }}
+
{{ loop_step3_desc }}
+
+
+
+
4
+
{{ loop_step4_label }}
+
{{ loop_step4_desc }}
+
+
+
+
5
+
{{ loop_step5_label }}
+
{{ loop_step5_desc }}
+
+
+ +
+ {{ loop_callout }} +
+
+
+ + +
+
+ {{ ref_tag }} +

{{ ref_h2 }}

+
+
{{ ref_proof1 }}
+
{{ ref_proof2 }}
+
{{ ref_proof3 }}
+
+

+ {{ ref_visit }} +

+ {{ ref_cta }} +
+
+ + +
+

{{ cta_h2 }}

+

{{ cta_p }}

+ +
+ + + + + diff --git a/templates/kern/for-aggregators.html b/templates/kern/for-aggregators.html new file mode 100644 index 0000000..c31cd82 --- /dev/null +++ b/templates/kern/for-aggregators.html @@ -0,0 +1,184 @@ + + + + + {{ ka_meta_title }} + + + + + + + + + + + +
+ + +
+ {{ ka_eyebrow }} +

{{ ka_h1 }}

+

{{ ka_lead }}

+ Book a Demo +
+ +
+ + +
+

{{ ka_pains_h2 }}

+
+ +
+
+ Problem +
{{ ka_pain1_title }}
+
{{ ka_pain1_desc }}
+
+
+ KERN +
{{ ka_pain1_sol }}
+
+
+ +
+
+ Problem +
{{ ka_pain2_title }}
+
{{ ka_pain2_desc }}
+
+
+ KERN +
{{ ka_pain2_sol }}
+
+
+ +
+
+ Problem +
{{ ka_pain3_title }}
+
{{ ka_pain3_desc }}
+
+
+ KERN +
{{ ka_pain3_sol }}
+
+
+ +
+
+ Problem +
{{ ka_pain4_title }}
+
{{ ka_pain4_desc }}
+
+
+ KERN +
{{ ka_pain4_sol }}
+
+
+ +
+
+ Problem +
{{ ka_pain5_title }}
+
{{ ka_pain5_desc }}
+
+
+ KERN +
{{ ka_pain5_sol }}
+
+
+ +
+
+ +
+ + +
+

{{ ka_loop_h2 }}

+
+
1. FORECAST  (rolling, 24h ahead)
+   KERN calculates per asset and portfolio:
+   what flexibility is available, when?
+   → Output: flexibility profile (MW, time window, confidence)
+   → Basis for your bidding strategy
+
+2. DEMAND  (flexibility signal from you / market)
+   You place bids based on the forecast.
+   On award, the demand signal comes back:
+   "X kW, time window T, direction reduce/increase"
+
+3. REBALANCE  (forecast vs. actual state)
+   KERN compares the demand signal against current
+   asset state in real-time: weather, state of charge,
+   current load, failures.
+   Deviation from forecast → KERN reacts autonomously.
+
+4. DISPATCH  (autonomous local control)
+   KERN decides which assets to control — BESS, HVAC,
+   EV chargers, PV curtailment — via Zigbee or MIOTY.
+   Execution confirmed.
+
+5. CONFIRMATION
+   Fulfillment status back to you in real-time.
+   Next forecast cycle starts.
+
+

+ {{ ka_loop_note }} +

+
+ +
+ + +
+

{{ ka_ref_h2 }}

+
+
+
+ "{{ ka_ref_quote }}" +
{{ ka_ref_meta }}
+
+
+ See full reference → +
+
+ + +
+

{{ ka_cta_h2 }}

+

{{ ka_cta_p }}

+ +
+ + + + diff --git a/templates/kern/for-communities.html b/templates/kern/for-communities.html new file mode 100644 index 0000000..18c1467 --- /dev/null +++ b/templates/kern/for-communities.html @@ -0,0 +1,200 @@ + + + + + {{ kc_meta_title }} + + + + + + + + + + + +
+ + +
+ {{ kc_eyebrow }} +

{{ kc_h1 }}

+

{{ kc_lead }}

+ Book a Demo +
+ +
+ + +
+

{{ kc_pains_h2 }}

+
+ +
+
+ Problem +
{{ kc_pain1_title }}
+
{{ kc_pain1_desc }}
+
+
+ KERN +
{{ kc_pain1_sol }}
+
+
+ +
+
+ Problem +
{{ kc_pain2_title }}
+
{{ kc_pain2_desc }}
+
+
+ KERN +
{{ kc_pain2_sol }}
+
+
+ +
+
+ Problem +
{{ kc_pain3_title }}
+
{{ kc_pain3_desc }}
+
+
+ KERN +
{{ kc_pain3_sol }}
+
+
+ +
+
+ Problem +
{{ kc_pain4_title }}
+
{{ kc_pain4_desc }}
+
+
+ KERN +
{{ kc_pain4_sol }}
+
+
+ +
+
+ Problem +
{{ kc_pain5_title }}
+
{{ kc_pain5_desc }}
+
+
+ KERN +
{{ kc_pain5_sol }}
+
+
+ +
+
+ +
+ + +
+

{{ kc_loop_h2 }}

+
+
1. REAL-TIME MONITORING
+   KERN tracks generation and consumption of all members
+   continuously — at meter level, in real-time.
+
+2. COMMUNITY OPTIMISATION  (24h forecast + real-time)
+   KERN forecasts generation (PV) and consumption per member.
+   Goal: maximise shared self-consumption —
+   who needs what, when, and what is available right now?
+
+3. AUTONOMOUS CONTROL
+   KERN steers shared storage, controllable loads and feed-in
+   points to keep as much energy within the community as possible.
+   No manual intervention required.
+
+4. FLEXIBILITY  (optional)
+   Surplus or forecastable flexibility can be offered as a 24h
+   forecast to an aggregator or grid operator and dispatched
+   on demand — confirmed back to the requesting party.
+
+
+ +
+ + +
+

{{ kc_features_h2 }}

+
+
+

{{ kc_feat1_h3 }}

+

{{ kc_feat1_p }}

+
+
+

{{ kc_feat2_h3 }}

+

{{ kc_feat2_p }}

+
+
+

{{ kc_feat3_h3 }}

+

{{ kc_feat3_p }}

+
+
+

{{ kc_feat4_h3 }}

+

{{ kc_feat4_p }}

+
+
+

{{ kc_feat5_h3 }}

+

{{ kc_feat5_p }}

+
+
+

{{ kc_feat6_h3 }}

+

{{ kc_feat6_p }}

+
+
+ + +
+

{{ kc_partner_h3 }}

+

{{ kc_partner_p }}

+ {{ kc_partner_cta }} +
+
+ + +
+

{{ kc_cta_h2 }}

+

{{ kc_cta_p }}

+ +
+ + + + diff --git a/templates/kern/for-platforms.html b/templates/kern/for-platforms.html new file mode 100644 index 0000000..e767de3 --- /dev/null +++ b/templates/kern/for-platforms.html @@ -0,0 +1,196 @@ + + + + + {{ kp_meta_title }} + + + + + + + + + + + +
+ + +
+ {{ kp_eyebrow }} +

{{ kp_h1 }}

+

{{ kp_lead }}

+ {{ kp_hero_cta }} +
+ +
+ + +
+

{{ kp_stack_h2 }}

+
+
Market / TSO / Grid Operator
+         ↓
+┌─────────────────────────────────────────────┐
+│         YOUR PLATFORM                       │
+│  VPP optimisation · Bidding · Redispatch    │
+│  Trading · Reporting                        │
+└─────────────────┬───────────────────────────┘
+                  │  Normalised telemetry feed
+                  │  Dispatch commands + confirmation
+                  │  24h flexibility forecast
+┌─────────────────▼───────────────────────────┐
+│         KERN                           │
+│  Asset management · Autonomous dispatch     │
+│  Real-time optimisation · Forecasting       │
+└─────────────────┬───────────────────────────┘
+                  │
+         Zigbee Mesh  ·  MIOTY
+                  │
+┌─────────────────▼───────────────────────────┐
+│  PV · BESS · Heat pumps · EV chargers       │
+│  CHP · Controllable loads · Microgrids      │
+└─────────────────────────────────────────────┘
+
+
+ +
+ + +
+

{{ kp_pains_h2 }}

+
+ +
+
+ Problem +
{{ kp_pain1_title }}
+
{{ kp_pain1_desc }}
+
+
+ KERN +
{{ kp_pain1_sol }}
+
+
+ +
+
+ Problem +
{{ kp_pain2_title }}
+
{{ kp_pain2_desc }}
+
+
+ KERN +
{{ kp_pain2_sol }}
+
+
+ +
+
+ Problem +
{{ kp_pain3_title }}
+
{{ kp_pain3_desc }}
+
+
+ KERN +
{{ kp_pain3_sol }}
+
+
+ +
+
+ +
+ + +
+

{{ kp_what_h2 }}

+
+
+

{{ kp_what1_h3 }}

+

{{ kp_what1_p }}

+
+
+

{{ kp_what2_h3 }}

+

{{ kp_what2_p }}

+
+
+

{{ kp_what3_h3 }}

+

{{ kp_what3_p }}

+
+
+

{{ kp_what4_h3 }}

+

{{ kp_what4_p }}

+
+
+ +

{{ kp_integ_h2 }}

+ + + + + + + + + + + + + + + + + + + + + + + + + +
{{ kp_integ_th1 }}{{ kp_integ_th2 }}{{ kp_integ_th3 }}
{{ kp_integ1_model }}{{ kp_integ1_desc }}Low
{{ kp_integ2_model }}{{ kp_integ2_desc }}Medium
{{ kp_integ3_model }}{{ kp_integ3_desc }}Minimal
+
+ + +
+

{{ kp_cta_h2 }}

+

{{ kp_cta_p }}

+ +
+ + + + diff --git a/templates/kern/for-utilities.html b/templates/kern/for-utilities.html new file mode 100644 index 0000000..6179ef9 --- /dev/null +++ b/templates/kern/for-utilities.html @@ -0,0 +1,177 @@ + + + + + {{ ku_meta_title }} + + + + + + + + + + + +
+ + +
+ {{ ku_eyebrow }} +

{{ ku_h1 }}

+

{{ ku_lead }}

+ {{ shared_book_demo }} +
+ +
+ + +
+

{{ ku_pains_h2 }}

+
+ +
+
+ Problem +
{{ ku_pain1_title }}
+
{{ ku_pain1_desc }}
+
+
+ KERN +
{{ ku_pain1_sol }}
+
+
+ +
+
+ Problem +
{{ ku_pain2_title }}
+
{{ ku_pain2_desc }}
+
+
+ KERN +
{{ ku_pain2_sol }}
+
+
+ +
+
+ Problem +
{{ ku_pain3_title }}
+
{{ ku_pain3_desc }}
+
+
+ KERN +
{{ ku_pain3_sol }}
+
+
+ +
+
+ Problem +
{{ ku_pain4_title }}
+
{{ ku_pain4_desc }}
+
+
+ KERN +
{{ ku_pain4_sol }}
+
+
+ +
+
+ +
+ + +
+

{{ ku_cases_h2 }}

+
+ +
+
{{ ku_case1_num }}
+

{{ ku_case1_h3 }}

+

{{ ku_case1_p }}

+
+ +
+
{{ ku_case2_num }}
+

{{ ku_case2_h3 }}

+

{{ ku_case2_p }}

+
+ +
+
{{ ku_case3_num }}
+

{{ ku_case3_h3 }}

+

{{ ku_case3_p }}

+
+ +
+
+ +
+ + +
+

{{ ku_ref_h2 }}

+
+

+ {{ ku_ref_intro }} +

+
+
+
{{ ku_ref_grid_label }}
+
{{ ku_ref_grid_value }}
+
+
+
{{ ku_ref_agg_label }}
+
{{ ku_ref_agg_value }}
+
+
+
{{ ku_ref_comm_label }}
+
{{ ku_ref_comm_value }}
+
+
+

{{ ku_ref_note }}

+
+ {{ shared_see_ref }} +
+ + +
+

{{ ku_cta_h2 }}

+

{{ ku_cta_p }}

+ +
+ + + + diff --git a/templates/kern/index.html b/templates/kern/index.html new file mode 100644 index 0000000..862b44e --- /dev/null +++ b/templates/kern/index.html @@ -0,0 +1,176 @@ + + + + + {{ ki_meta_title }} + + + + + + + + + + + +
+ + +
+ {{ ki_eyebrow }} +

{{ ki_h1 }}

+

{{ ki_lead }}

+ {{ shared_book_demo }} +
+ +
+ + +
+
+
{{ ki_concept_stmt }}
+

{{ ki_concept_sub }}

+
+
+ +
+ + +
+

{{ ki_contexts_h2 }}

+

{{ ki_contexts_sub }}

+
+
+

{{ ki_ctx_household_h3 }}

+

{{ ki_ctx_household_p }}

+
+
+

{{ ki_ctx_ci_h3 }}

+

{{ ki_ctx_ci_p }}

+
+
+

{{ ki_ctx_micro_h3 }}

+

{{ ki_ctx_micro_p }}

+
+
+

{{ ki_ctx_esc_h3 }}

+

{{ ki_ctx_esc_p }}

+
+
+
+ +
+ + +
+

{{ ki_modes_h2 }}

+

{{ ki_modes_sub }}

+
+
+
{{ ki_mode1_num }}
+

{{ ki_mode1_h3 }}

+

{{ ki_mode1_p }}

+
+
+
{{ ki_mode2_num }}
+

{{ ki_mode2_h3 }}

+

{{ ki_mode2_p }}

+
+
+
{{ ki_mode3_num }}
+

{{ ki_mode3_h3 }}

+

{{ ki_mode3_p }}

+
+
+
+ +
+ + +
+

{{ ki_conn_h2 }}

+

{{ ki_conn_sub }}

+
+
+
{{ ki_zigbee_use }}
+

{{ ki_zigbee_h3 }}

+

{{ ki_zigbee_p }}

+
+
+
{{ ki_mioty_use }}
+

{{ ki_mioty_h3 }}

+

{{ ki_mioty_p }}

+
+
+ {{ ki_tech_link }} +
+ +
+ + +
+

{{ ki_forwhom_h2 }}

+ +
+ + + + diff --git a/templates/references/index.html b/templates/references/index.html new file mode 100644 index 0000000..d06911a --- /dev/null +++ b/templates/references/index.html @@ -0,0 +1,127 @@ + + + + + {{ rp_meta_title }} + + + + + + + + + + + + +
+ {{ rp_eyebrow }} +

{{ rp_h1 }}

+

{{ rp_lead }}

+
+ +
+ +
+ + +
+ R&C KERN — live installation +
+ + +
+
+ {{ rp_ref_tag }} +

{{ rp_ref_h2 }}

+
+
+
+ +
+
{{ rp_item1_label }}
+
{{ rp_item1_title }}
+
{{ rp_item1_desc }}
+
+ +
+
{{ rp_item2_label }}
+
{{ rp_item2_title }}
+
{{ rp_item2_desc }}
+
+ +
+
{{ rp_item3_label }}
+
{{ rp_item3_title }}
+
{{ rp_item3_desc }}
+
+ +
+ +
+

+ {{ rp_visit_strong }}
+ {{ rp_visit_p }} +

+ {{ rp_visit_cta }} +
+
+
+ + +
+

{{ rp_soon_h3 }}

+

{{ rp_soon_p }}
+ {{ rp_soon_link }} {{ rp_soon_suffix }}

+
+ +
+ + +
+

{{ rp_cta_h2 }}

+

{{ rp_cta_p }}

+ +
+ + + + diff --git a/templates/technology/index.html b/templates/technology/index.html new file mode 100644 index 0000000..41f0ef2 --- /dev/null +++ b/templates/technology/index.html @@ -0,0 +1,253 @@ + + + + + {{ tech_meta_title }} + + + + + + + + + + + + +
+ {{ tech_eyebrow }} +

{{ tech_h1 }}

+

{{ tech_lead }}

+
+ +
+ + +
+
+ KERN hardware device +
+
+ + +
+

{{ tech_conn_h2 }}

+

{{ tech_conn_sub }}

+ +
+
+
{{ tech_zigbee_badge }}
+

{{ tech_zigbee_h3 }}

+

{{ tech_zigbee_use }}

+
    +
  • RangeUp to 100m per node, mesh extends coverage
  • +
  • DeploymentNo gateway per room — mesh self-organises
  • +
  • CostLow hardware cost per node
  • +
  • TopologySelf-healing mesh — resilient to node failure
  • +
  • Use caseHEMS, C&I facilities, ESC on one campus
  • +
+
+
+
{{ tech_mioty_badge }}
+

{{ tech_mioty_h3 }}

+

{{ tech_mioty_use }}

+
    +
  • Range10 km per gateway
  • +
  • Capacity1.5M messages/day per gateway
  • +
  • StandardIEC 62657-1 — purpose-built for energy
  • +
  • IndependenceNo LTE, no WiFi required
  • +
  • Latency<1 second for dispatch commands
  • +
+
+
+ +

{{ tech_vs_h3 }}

+ + + + + + + + + + + + + + + + +
CapabilityMIOTYLoRaWAN
StandardIEC 62657-1 (international)LoRa Alliance proprietary
RangeUp to 10 kmUp to 5 km
Messages/day/gateway1,500,000~50,000
Designed forEnergy infrastructure, utility gradeGeneral IoT sensing
Dispatch latency<1 secondSeconds to minutes
LTE independence
+
+ +
+ + +
+

{{ tech_loop_h2 }}

+

{{ tech_loop_sub }}

+
+
1. FORECAST  (rolling, 24h ahead)
+   Per asset: state of charge, PV forecast (weather-based),
+   load forecast (historical patterns), available flexibility window.
+   Per portfolio: aggregated flexibility profile (MW, time, confidence).
+   → Delivered to aggregator / platform as API feed.
+
+2. DEMAND  (inbound signal)
+   Flexibility signal received from aggregator, utility or market:
+   volume (kW), time window, direction (increase/decrease).
+
+3. REBALANCE  (real-time delta)
+   KERN compares demand signal against current actual asset state.
+   Detects deviations: weather change, load shift, asset failure.
+   Adjusts dispatch plan autonomously — before deviation becomes critical.
+
+4. DISPATCH  (autonomous asset control)
+   KERN selects assets, determines control sequence, sends commands.
+   Execution via Zigbee Mesh (contiguous) or MIOTY (distributed).
+   Asset protocols: Modbus, SunSpec, EEBUS, proprietary inverter APIs.
+
+5. CONFIRMATION
+   Asset-level execution confirmed back to KERN.
+   Fulfillment status reported to aggregator / platform in real-time.
+   Next forecast cycle starts immediately.
+
+
+ +
+ + +
+

{{ tech_optim_h2 }}

+

{{ tech_optim_sub }}

+
+
+

{{ tech_optim1_h4 }}

+

{{ tech_optim1_p }}

+
+
+

{{ tech_optim2_h4 }}

+

{{ tech_optim2_p }}

+
+
+

{{ tech_optim3_h4 }}

+

{{ tech_optim3_p }}

+
+
+
+ +
+ + +
+

{{ tech_assets_h2 }}

+

{{ tech_assets_sub }}

+ +

{{ tech_assets_label1 }}

+
+
PV (residential)
+
PV (commercial)
+
Home storage
+
Commercial BESS
+
Heat pumps
+
EV chargers
+
CHP
+
Biogas
+
Controllable loads
+
MV-connected assets
+
+ +

{{ tech_assets_label2 }}

+
+
Modbus TCP/RTU
+
SunSpec
+
EEBUS
+
REST API
+
OCPP (EV)
+
Proprietary inverter APIs
+
+
+ +
+ + +
+

{{ tech_security_h2 }}

+
+
+

{{ tech_sec1_h4 }}

+

{{ tech_sec1_p }}

+
+
+

{{ tech_sec2_h4 }}

+

{{ tech_sec2_p }}

+
+
+

{{ tech_sec3_h4 }}

+

{{ tech_sec3_p }}

+
+
+

{{ tech_sec4_h4 }}

+

{{ tech_sec4_p }}

+
+
+ {{ tech_cta }} +
+ + + +