Merge mai/knuth/ai-ki-disclosure-footer (3 commits vom 2026-04-01) nach diesem Branch. Bringt: - i18n-Annotations (data-de/data-en) + Footer-Toggle auf 54 Custom-Sites - shared/ai-disclosure.js (3 Tones: playful/serious/minimal, KI/AI nach lang) - Template-Infrastruktur in render.sh + base.html (title_i18n, sections, ai-disclosure-Tag mit disclosure_tone) Konflikt-Auflösung (Issue #6): - shared/impressum.js: main behalten (theme-aware + msbls-alias aus #4) - 10 Sites mit Marken-Setup aus #3 + #5: main's Brand-Konfiguration behalten, nur knuth's i18n-Annotations und ai-disclosure/i18n-Scripts übernommen. - heygoldi, lexsiebels, mai-otto: <script impressum.js data-owner=flexsiebels> - martinsiebels: <script impressum.js data-owner=martinsiebels> - 9 Satire (kilibri/kilitaer/killegal/killionaer/killions/killuminati/ killusion/paragraphenraiter/patentonkel): KEIN impressum.js, dafür statischer onepager-msbls-link Footer. - billableaua, smartin3, clemensplassmann: main's neuere Prosa/Struktur behalten (durch #1, #5, #7 nachträglich umgeschrieben). Knuth's i18n- Annotations dort verworfen, da auf altem Text. Toggle/Scripts kommen trotzdem rein (auto-merged), Re-Annotation später möglich. QA: ./build.sh -> 59 sites OK. Smoke-Tests heygoldi/kilibri/ichbinotto: korrekte Brand-Setup, ai-disclosure + i18n.js geladen, Footer-Toggle da.
onepager
Mono-repo for 40+ vanity domain onepager sites. Single nginx container with template system and server_name-based routing.
Structure
sites/ # One folder per domain
example.de/
site.yaml # Domain config, template choice, variables
index.html # Content (generated or hand-crafted)
assets/ # Optional images, fonts
templates/ # Shared HTML templates
shared/css/ # Shared CSS (variables, responsive, animations)
nginx/ # Generated nginx.conf + generator script
build/ # Generated output (gitignored)
Usage
Add a new site
# Templated site
./add-site.sh example.de --template person-dark --name "Max Mustermann"
# Custom HTML site
./add-site.sh example.de --template custom
Build
./build.sh
Requires yq for YAML parsing. Outputs to build/ directory.
Deploy
Push to main — Dokploy auto-deploys. All domains must be configured in Dokploy.
Templates
| Template | Description |
|---|---|
person-dark |
Professional profile, dark theme |
person-light |
Professional profile, light/cream theme |
product-dark |
Product/service landing page, dark |
editorial |
Long-form manifesto/editorial style |
fun |
Playful/personal pages |
minimal |
Bare-bones single section |
custom |
Hand-crafted HTML, no rendering |
site.yaml
domain: example.de
aliases: [www.example.de]
template: person-dark
title: "Page Title"
description: "Meta description"
lang: de
vars:
name: "Name"
role: "Role"
initials: "AB"
tagline: "Tagline here"
accent: "#c9a84c"
accent_light: "rgba(201, 168, 76, 0.1)"
font_primary: "Inter"
font_secondary: "Newsreader"
tags: ["Tag 1", "Tag 2"]
sections:
- type: features
title: "Section Title"
items:
- title: "Item"
desc: "Description"
- type: profile
bio: "Bio text"
cta:
text: "Contact"
href: "mailto:info@example.de"
Related
- Issue #341: Onepager Mono-Repo
- Issue #335: Container consolidation
Description
Mono-repo for 40+ vanity domain onepager sites — single nginx container with template system
Readme
2.2 MiB
Languages
HTML
93.1%
Python
2.6%
Shell
2.2%
JavaScript
1.8%
CSS
0.3%