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
This commit is contained in:
90
README.md
90
README.md
@@ -1,3 +1,91 @@
|
||||
# onepager
|
||||
|
||||
Mono-repo for 40+ vanity domain onepager sites — single nginx container with template system
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user