From 6f5de542ab8b616e1bc615d16631aab589f30514 Mon Sep 17 00:00:00 2001 From: mAi Date: Sun, 29 Mar 2026 13:20:27 +0200 Subject: [PATCH] feat: initial mono-repo with 30 vanity domain sites Scaffold complete repo structure: - 28 static sites extracted from running containers on mlake - 2 dynamic sites (dasbes.de, dumusst.com) marked for separate handling - Template system with 6 templates (person-dark/light, product-dark, editorial, fun, minimal) - Shared CSS (variables, responsive, animations, noise overlay) - nginx config generator with multi-domain alias support - Build script with Docker-based nginx validation - add-site.sh helper for scaffolding new domains - Dockerfile for single nginx:alpine container Sites: clemensplassmann.de, danosi.de, deinesei.de, derkaiseristnackt.de, elefantenhor.de, fragina.de, frenchkis.de, ichbinaufbali.de, ichbinaufbarley.de, insain.de, julietensity.de, kainco.de (+keinco.de), kainstress.de, keinefreun.de, knzlmgmt.de, kopffrai.de, legalais.de, machesdocheinfach.de, mai-otto.de (+otto.flexsiebels.de, ottomatisch.de, ichbinotto.de), martinsiebels.de, matthiasbreier.de, osterai.de, paragraphenraiter.de, schulfrai.de, smartin3.de, sorgenfrai.de, vonschraitter.de, wartebitte.de Refs: otto#341 --- .gitignore | 4 + Dockerfile | 5 + README.md | 90 +- add-site.sh | 81 ++ build.sh | 59 ++ nginx/generate-nginx.sh | 65 ++ render.sh | 190 ++++ shared/css/animations.css | 25 + shared/css/noise.css | 12 + shared/css/responsive.css | 45 + shared/css/variables.css | 24 + shared/fonts.html | 3 + sites/clemensplassmann.de/index.html | 131 +++ sites/clemensplassmann.de/site.yaml | 4 + sites/danosi.de/index.html | 871 ++++++++++++++++++ sites/danosi.de/site.yaml | 4 + sites/dasbes.de/site.yaml | 8 + sites/deinesei.de/index.html | 357 ++++++++ sites/deinesei.de/site.yaml | 4 + sites/derkaiseristnackt.de/index.html | 469 ++++++++++ sites/derkaiseristnackt.de/site.yaml | 4 + sites/dumusst.com/site.yaml | 12 + sites/elefantenhor.de/index.html | 899 ++++++++++++++++++ sites/elefantenhor.de/site.yaml | 4 + sites/fragina.de/index.html | 573 ++++++++++++ sites/fragina.de/site.yaml | 4 + sites/frenchkis.de/index.html | 896 ++++++++++++++++++ sites/frenchkis.de/site.yaml | 4 + sites/ichbinaufbali.de/index.html | 107 +++ sites/ichbinaufbali.de/site.yaml | 4 + sites/ichbinaufbarley.de/index.html | 136 +++ sites/ichbinaufbarley.de/site.yaml | 4 + sites/insain.de/index.html | 60 ++ sites/insain.de/site.yaml | 4 + sites/julietensity.de/index.html | 589 ++++++++++++ sites/julietensity.de/site.yaml | 4 + sites/kainco.de/index.html | 619 +++++++++++++ sites/kainco.de/site.yaml | 6 + sites/kainstress.de/index.html | 581 ++++++++++++ sites/kainstress.de/site.yaml | 4 + sites/keinefreun.de/index.html | 633 +++++++++++++ sites/keinefreun.de/site.yaml | 4 + sites/knzlmgmt.de/index.html | 60 ++ sites/knzlmgmt.de/site.yaml | 4 + sites/kopffrai.de/index.html | 60 ++ sites/kopffrai.de/site.yaml | 4 + sites/legalais.de/index.html | 364 ++++++++ sites/legalais.de/site.yaml | 4 + sites/machesdocheinfach.de/index.html | 228 +++++ sites/machesdocheinfach.de/site.yaml | 4 + sites/mai-otto.de/index.html | 440 +++++++++ sites/mai-otto.de/site.yaml | 8 + sites/martinsiebels.de/index.html | 396 ++++++++ sites/martinsiebels.de/site.yaml | 4 + sites/matthiasbreier.de/assets/portrait.jpg | Bin 0 -> 12045 bytes sites/matthiasbreier.de/index.html | 952 ++++++++++++++++++++ sites/matthiasbreier.de/site.yaml | 4 + sites/osterai.de/index.html | 271 ++++++ sites/osterai.de/site.yaml | 4 + sites/paragraphenraiter.de/index.html | 732 +++++++++++++++ sites/paragraphenraiter.de/site.yaml | 4 + sites/schulfrai.de/index.html | 60 ++ sites/schulfrai.de/site.yaml | 4 + sites/smartin3.de/index.html | 448 +++++++++ sites/smartin3.de/site.yaml | 4 + sites/sorgenfrai.de/index.html | 60 ++ sites/sorgenfrai.de/site.yaml | 4 + sites/vonschraitter.de/index.html | 686 ++++++++++++++ sites/vonschraitter.de/site.yaml | 4 + sites/wartebitte.de/index.html | 423 +++++++++ sites/wartebitte.de/site.yaml | 4 + templates/base.html | 22 + templates/editorial.html | 83 ++ templates/fun.html | 63 ++ templates/minimal.html | 36 + templates/person-dark.html | 156 ++++ templates/person-light.html | 158 ++++ templates/product-dark.html | 112 +++ 78 files changed, 13471 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100755 add-site.sh create mode 100755 build.sh create mode 100755 nginx/generate-nginx.sh create mode 100755 render.sh create mode 100644 shared/css/animations.css create mode 100644 shared/css/noise.css create mode 100644 shared/css/responsive.css create mode 100644 shared/css/variables.css create mode 100644 shared/fonts.html create mode 100644 sites/clemensplassmann.de/index.html create mode 100644 sites/clemensplassmann.de/site.yaml create mode 100644 sites/danosi.de/index.html create mode 100644 sites/danosi.de/site.yaml create mode 100644 sites/dasbes.de/site.yaml create mode 100644 sites/deinesei.de/index.html create mode 100644 sites/deinesei.de/site.yaml create mode 100644 sites/derkaiseristnackt.de/index.html create mode 100644 sites/derkaiseristnackt.de/site.yaml create mode 100644 sites/dumusst.com/site.yaml create mode 100644 sites/elefantenhor.de/index.html create mode 100644 sites/elefantenhor.de/site.yaml create mode 100644 sites/fragina.de/index.html create mode 100644 sites/fragina.de/site.yaml create mode 100644 sites/frenchkis.de/index.html create mode 100644 sites/frenchkis.de/site.yaml create mode 100644 sites/ichbinaufbali.de/index.html create mode 100644 sites/ichbinaufbali.de/site.yaml create mode 100644 sites/ichbinaufbarley.de/index.html create mode 100644 sites/ichbinaufbarley.de/site.yaml create mode 100644 sites/insain.de/index.html create mode 100644 sites/insain.de/site.yaml create mode 100644 sites/julietensity.de/index.html create mode 100644 sites/julietensity.de/site.yaml create mode 100644 sites/kainco.de/index.html create mode 100644 sites/kainco.de/site.yaml create mode 100644 sites/kainstress.de/index.html create mode 100644 sites/kainstress.de/site.yaml create mode 100644 sites/keinefreun.de/index.html create mode 100644 sites/keinefreun.de/site.yaml create mode 100644 sites/knzlmgmt.de/index.html create mode 100644 sites/knzlmgmt.de/site.yaml create mode 100644 sites/kopffrai.de/index.html create mode 100644 sites/kopffrai.de/site.yaml create mode 100644 sites/legalais.de/index.html create mode 100644 sites/legalais.de/site.yaml create mode 100644 sites/machesdocheinfach.de/index.html create mode 100644 sites/machesdocheinfach.de/site.yaml create mode 100644 sites/mai-otto.de/index.html create mode 100644 sites/mai-otto.de/site.yaml create mode 100644 sites/martinsiebels.de/index.html create mode 100644 sites/martinsiebels.de/site.yaml create mode 100644 sites/matthiasbreier.de/assets/portrait.jpg create mode 100644 sites/matthiasbreier.de/index.html create mode 100644 sites/matthiasbreier.de/site.yaml create mode 100644 sites/osterai.de/index.html create mode 100644 sites/osterai.de/site.yaml create mode 100644 sites/paragraphenraiter.de/index.html create mode 100644 sites/paragraphenraiter.de/site.yaml create mode 100644 sites/schulfrai.de/index.html create mode 100644 sites/schulfrai.de/site.yaml create mode 100644 sites/smartin3.de/index.html create mode 100644 sites/smartin3.de/site.yaml create mode 100644 sites/sorgenfrai.de/index.html create mode 100644 sites/sorgenfrai.de/site.yaml create mode 100644 sites/vonschraitter.de/index.html create mode 100644 sites/vonschraitter.de/site.yaml create mode 100644 sites/wartebitte.de/index.html create mode 100644 sites/wartebitte.de/site.yaml create mode 100644 templates/base.html create mode 100644 templates/editorial.html create mode 100644 templates/fun.html create mode 100644 templates/minimal.html create mode 100644 templates/person-dark.html create mode 100644 templates/person-light.html create mode 100644 templates/product-dark.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed12340 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +build/ +nginx/nginx.conf +*.tmp +.DS_Store diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fd69f70 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +FROM nginx:alpine +COPY build/ /usr/share/nginx/html/ +COPY nginx/nginx.conf /etc/nginx/nginx.conf +RUN nginx -t +EXPOSE 80 diff --git a/README.md b/README.md index 65bccda..21a80a7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,91 @@ # onepager -Mono-repo for 40+ vanity domain onepager sites — single nginx container with template system \ No newline at end of file +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 + +```bash +# Templated site +./add-site.sh example.de --template person-dark --name "Max Mustermann" + +# Custom HTML site +./add-site.sh example.de --template custom +``` + +### Build + +```bash +./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 + +```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 diff --git a/add-site.sh b/add-site.sh new file mode 100755 index 0000000..906476e --- /dev/null +++ b/add-site.sh @@ -0,0 +1,81 @@ +#!/bin/bash +# Scaffold a new site folder with default site.yaml +# Usage: ./add-site.sh example.de [--template person-dark] [--name "John Doe"] +set -euo pipefail + +DOMAIN="${1:?Usage: ./add-site.sh [--template