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:
mAi
2026-03-29 13:20:27 +02:00
parent ec3e1e42f3
commit 6f5de542ab
78 changed files with 13471 additions and 1 deletions

619
sites/kainco.de/index.html Normal file
View File

@@ -0,0 +1,619 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KeinCo.de — Kein Code. Nur Ergebnisse.</title>
<meta name="description" content="KeinCo.de — Du beschreibst das Problem, KI baut die Loesung. Kein Code, kein No-Code-Tool. Einfach Ergebnisse.">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>K</text></svg>">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
:root {
--bg: #08090c;
--bg-elevated: #0e1014;
--bg-card: #12141a;
--border: #1a1d25;
--border-hover: #252830;
--text: #e4e5ea;
--text-secondary: #9496a1;
--text-muted: #505264;
--accent: #2dd4bf;
--accent-light: #5eead4;
--accent-glow: rgba(45, 212, 191, 0.15);
--accent-glow-strong: rgba(45, 212, 191, 0.25);
--accent-subtle: rgba(45, 212, 191, 0.06);
}
html { scroll-behavior: smooth; }
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
background: var(--bg);
color: var(--text);
line-height: 1.6;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow-x: hidden;
}
/* Subtle grain overlay */
body::after {
content: '';
position: fixed;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.025'/%3E%3C/svg%3E");
pointer-events: none;
z-index: 9999;
}
.container {
max-width: 900px;
margin: 0 auto;
padding: 0 28px;
}
/* ---- NAV ---- */
nav {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 100;
padding: 18px 0;
background: rgba(8, 9, 12, 0.85);
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
border-bottom: 1px solid var(--border);
}
nav .container {
display: flex;
justify-content: space-between;
align-items: center;
}
.nav-brand {
font-size: 1.05rem;
font-weight: 600;
letter-spacing: -0.01em;
color: var(--text);
}
.nav-brand .hi {
color: var(--accent);
font-weight: 700;
}
.nav-brand .dim {
color: var(--text-muted);
}
nav a.nav-link {
color: var(--text-secondary);
text-decoration: none;
font-size: 0.84rem;
font-weight: 500;
transition: color 0.2s;
}
nav a.nav-link:hover {
color: var(--text);
}
/* ---- HERO ---- */
.hero {
padding: 200px 0 140px;
text-align: center;
position: relative;
}
.hero::before {
content: '';
position: absolute;
top: 40px;
left: 50%;
transform: translateX(-50%);
width: 800px;
height: 600px;
background: radial-gradient(ellipse at center, var(--accent-glow) 0%, rgba(45, 212, 191, 0.04) 40%, transparent 70%);
pointer-events: none;
}
.hero-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 7px 18px;
border: 1px solid var(--border);
border-radius: 100px;
font-size: 0.72rem;
font-weight: 600;
color: var(--text-secondary);
letter-spacing: 0.08em;
text-transform: uppercase;
margin-bottom: 40px;
background: var(--bg-elevated);
}
.hero-badge .dot {
width: 6px;
height: 6px;
background: var(--accent);
border-radius: 50%;
box-shadow: 0 0 10px var(--accent-glow-strong);
animation: pulse 2.5s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.35; }
}
.brand-main {
font-size: clamp(3.5rem, 8vw, 6.5rem);
font-weight: 800;
letter-spacing: -0.05em;
line-height: 1;
margin-bottom: 8px;
position: relative;
}
.brand-main .hi {
color: var(--accent);
text-shadow: 0 0 40px var(--accent-glow-strong);
}
.brand-tld {
font-size: clamp(1.5rem, 3.5vw, 2.8rem);
font-weight: 300;
color: var(--text-muted);
letter-spacing: -0.02em;
margin-bottom: 36px;
}
.tagline {
font-size: clamp(1.15rem, 2.5vw, 1.55rem);
font-weight: 400;
color: var(--text-secondary);
margin-bottom: 16px;
letter-spacing: -0.01em;
}
.tagline strong {
color: var(--text);
font-weight: 600;
}
.hero-desc {
font-size: 1.05rem;
color: var(--text-muted);
max-width: 500px;
margin: 0 auto 48px;
line-height: 1.7;
font-weight: 400;
}
.cta-row {
display: flex;
gap: 14px;
justify-content: center;
flex-wrap: wrap;
}
.btn {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 14px 30px;
border-radius: 10px;
font-size: 0.88rem;
font-weight: 600;
text-decoration: none;
transition: all 0.2s ease;
border: none;
cursor: pointer;
font-family: inherit;
}
.btn-accent {
background: var(--accent);
color: #08090c;
box-shadow: 0 0 30px var(--accent-glow), 0 1px 0 rgba(255,255,255,0.1) inset;
}
.btn-accent:hover {
background: var(--accent-light);
transform: translateY(-1px);
box-shadow: 0 0 50px var(--accent-glow-strong), 0 1px 0 rgba(255,255,255,0.15) inset;
}
.btn-outline {
background: transparent;
color: var(--text-secondary);
border: 1px solid var(--border);
}
.btn-outline:hover {
color: var(--text);
border-color: var(--border-hover);
background: var(--bg-elevated);
}
/* ---- DIVIDER ---- */
.divider {
height: 1px;
background: var(--border);
max-width: 900px;
margin: 0 auto;
}
/* ---- SECTION COMMON ---- */
section {
padding: 100px 0;
}
.section-label {
font-size: 0.7rem;
font-weight: 700;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 16px;
}
h2 {
font-size: clamp(1.6rem, 3vw, 2rem);
font-weight: 700;
letter-spacing: -0.03em;
margin-bottom: 16px;
line-height: 1.2;
}
.section-desc {
color: var(--text-secondary);
font-size: 1rem;
max-width: 540px;
margin-bottom: 56px;
font-weight: 400;
line-height: 1.7;
}
/* ---- PROBLEM / SOLUTION ---- */
.contrast {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.contrast-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 14px;
padding: 36px;
position: relative;
overflow: hidden;
}
.contrast-card.old {
opacity: 0.7;
}
.contrast-card.old::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(135deg, transparent 60%, rgba(8, 9, 12, 0.5));
pointer-events: none;
}
.contrast-card.new {
border-color: rgba(45, 212, 191, 0.2);
box-shadow: 0 0 40px rgba(45, 212, 191, 0.05);
}
.contrast-label {
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
margin-bottom: 20px;
}
.contrast-card.old .contrast-label {
color: var(--text-muted);
}
.contrast-card.new .contrast-label {
color: var(--accent);
}
.contrast-card h3 {
font-size: 1.15rem;
font-weight: 700;
margin-bottom: 14px;
letter-spacing: -0.02em;
}
.contrast-card ul {
list-style: none;
padding: 0;
}
.contrast-card ul li {
position: relative;
padding-left: 20px;
margin-bottom: 10px;
font-size: 0.88rem;
line-height: 1.5;
color: var(--text-secondary);
}
.contrast-card.old ul li::before {
content: '\2013';
position: absolute;
left: 0;
color: var(--text-muted);
}
.contrast-card.new ul li::before {
content: '\2713';
position: absolute;
left: 0;
color: var(--accent);
font-weight: 700;
}
.contrast-card.old ul li {
color: var(--text-muted);
text-decoration: line-through;
text-decoration-color: var(--text-muted);
}
/* ---- STEPS ---- */
.steps {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
counter-reset: step;
}
.step {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 14px;
padding: 36px 28px;
counter-increment: step;
transition: border-color 0.3s, box-shadow 0.3s;
}
.step:hover {
border-color: var(--border-hover);
box-shadow: 0 8px 40px rgba(0, 0, 0, 0.3);
}
.step-number {
display: flex;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
border-radius: 10px;
background: var(--accent-subtle);
border: 1px solid rgba(45, 212, 191, 0.12);
color: var(--accent);
font-size: 0.82rem;
font-weight: 700;
margin-bottom: 20px;
}
.step h3 {
font-size: 1rem;
font-weight: 700;
margin-bottom: 8px;
letter-spacing: -0.01em;
}
.step p {
color: var(--text-secondary);
font-size: 0.86rem;
line-height: 1.6;
}
/* ---- CAPABILITIES GRID ---- */
.capabilities-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 16px;
}
.cap-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 14px;
padding: 32px;
transition: border-color 0.3s, box-shadow 0.3s;
}
.cap-card:hover {
border-color: var(--border-hover);
box-shadow: 0 8px 40px rgba(0, 0, 0, 0.3);
}
.cap-icon {
width: 40px;
height: 40px;
border-radius: 10px;
background: var(--accent-subtle);
border: 1px solid rgba(45, 212, 191, 0.12);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 20px;
font-size: 1.1rem;
}
.cap-card h3 {
font-size: 0.98rem;
font-weight: 700;
margin-bottom: 8px;
}
.cap-card p {
color: var(--text-secondary);
font-size: 0.84rem;
line-height: 1.6;
}
/* ---- FOOTER ---- */
footer {
padding: 48px 0;
text-align: center;
border-top: 1px solid var(--border);
}
footer .footer-brand {
font-size: 1rem;
font-weight: 600;
margin-bottom: 8px;
color: var(--text);
}
footer .footer-brand .hi {
color: var(--accent);
}
footer .footer-sub {
color: var(--text-muted);
font-size: 0.78rem;
}
/* ---- RESPONSIVE ---- */
@media (max-width: 768px) {
.hero { padding: 160px 0 100px; }
section { padding: 72px 0; }
.contrast { grid-template-columns: 1fr; }
.steps { grid-template-columns: 1fr; }
.capabilities-grid { grid-template-columns: 1fr; }
.contrast-card { padding: 28px; }
.step { padding: 28px 24px; }
}
@media (max-width: 480px) {
.hero { padding: 140px 0 80px; }
.container { padding: 0 20px; }
.brand-main { letter-spacing: -0.04em; }
}
</style>
</head>
<body>
<!-- NAV -->
<nav>
<div class="container">
<div class="nav-brand"><span class="hi">K</span>e<span class="hi">I</span>nCo<span class="dim">.de</span></div>
<a href="mailto:kainco@msbls.de?subject=KeinCo.de%20%E2%80%94%20Interesse" class="nav-link">Kontakt</a>
</div>
</nav>
<!-- HERO -->
<section class="hero">
<div class="container">
<div class="hero-badge">
<span class="dot"></span>
Coming Soon
</div>
<div class="brand-main"><span class="hi">K</span>e<span class="hi">I</span>nCo</div>
<div class="brand-tld">.de</div>
<div class="tagline"><strong>Kein Code.</strong> Nur Ergebnisse.</div>
<p class="hero-desc">
Du beschreibst das Problem. KI baut die Loesung. Kein Framework, kein No-Code-Tool, kein Entwickler noetig.
</p>
<div class="cta-row">
<a href="mailto:kainco@msbls.de?subject=KeinCo.de%20%E2%80%94%20Interesse" class="btn btn-accent">Zugang anfragen</a>
<a href="#so-gehts" class="btn btn-outline">So funktioniert's</a>
</div>
</div>
</section>
<div class="divider"></div>
<!-- PROBLEM / SOLUTION -->
<section>
<div class="container">
<div class="section-label">Das Problem</div>
<h2>Du hast eine Idee. Du brauchst keinen Entwickler.</h2>
<div class="section-desc">
Bisher hiess Software bauen: Entwickler suchen, Wochen warten, Budget verbrennen. Oder sich durch No-Code-Tools kaempfen, die am Ende doch nicht reichen.
</div>
<div class="contrast">
<div class="contrast-card old">
<div class="contrast-label">Bisher</div>
<h3>Der klassische Weg</h3>
<ul>
<li>Entwickler briefen</li>
<li>Wochen auf Ergebnis warten</li>
<li>Aenderungen kosten extra</li>
<li>No-Code-Tools mit Workarounds</li>
<li>Ergebnis passt nie ganz</li>
</ul>
</div>
<div class="contrast-card new">
<div class="contrast-label">Mit KeinCo.de</div>
<h3>Der KI-Weg</h3>
<ul>
<li>Problem beschreiben, fertig</li>
<li>Ergebnis in Minuten, nicht Wochen</li>
<li>Anpassen durch Feedback</li>
<li>Keine Tools lernen</li>
<li>Genau das, was du brauchst</li>
</ul>
</div>
</div>
</div>
</section>
<div class="divider"></div>
<!-- HOW IT WORKS -->
<section id="so-gehts">
<div class="container">
<div class="section-label">So funktioniert's</div>
<h2>Drei Schritte. Kein Code.</h2>
<div class="section-desc">
Du redest. KI arbeitet. Du bekommst das Ergebnis.
</div>
<div class="steps">
<div class="step">
<div class="step-number">01</div>
<h3>Beschreiben</h3>
<p>Erklaer in deinen Worten, was du brauchst. Kein Fachwissen noetig, kein Pflichtenheft, keine Spezifikation.</p>
</div>
<div class="step">
<div class="step-number">02</div>
<h3>KI baut</h3>
<p>Kuenstliche Intelligenz entwirft, programmiert und testet die Loesung. Du siehst den Fortschritt und gibst Feedback.</p>
</div>
<div class="step">
<div class="step-number">03</div>
<h3>Laeuft</h3>
<p>Deine Loesung wird deployed und ist sofort einsatzbereit. Hosting, Wartung, Updates — alles inklusive.</p>
</div>
</div>
</div>
</section>
<div class="divider"></div>
<!-- WHAT'S POSSIBLE -->
<section>
<div class="container">
<div class="section-label">Was moeglich ist</div>
<h2>Alles, wofuer man frueher Code brauchte.</h2>
<div class="section-desc">
Von der einfachen Landing Page bis zur komplexen Daten-Pipeline. KI kennt keine Grenzen des Drag-and-Drop.
</div>
<div class="capabilities-grid">
<div class="cap-card">
<div class="cap-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:var(--accent)"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18"/><path d="M9 21V9"/></svg>
</div>
<h3>Websites und Web-Apps</h3>
<p>Landing Pages, Dashboards, interne Tools, Kundenportale — responsive, modern, deployed.</p>
</div>
<div class="cap-card">
<div class="cap-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:var(--accent)"><polyline points="16 3 21 3 21 8"/><line x1="4" y1="20" x2="21" y2="3"/><polyline points="21 16 21 21 16 21"/><line x1="15" y1="15" x2="21" y2="21"/><line x1="4" y1="4" x2="9" y2="9"/></svg>
</div>
<h3>Automatisierungen</h3>
<p>Wiederkehrende Aufgaben, Workflows, Benachrichtigungen — laeuft im Hintergrund, zuverlaessig, ohne Aufwand.</p>
</div>
<div class="cap-card">
<div class="cap-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:var(--accent)"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"/><path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"/></svg>
</div>
<h3>Daten-Pipelines</h3>
<p>CSVs verarbeiten, APIs anbinden, Datenbanken fuellen. Strukturiert, sauber, automatisch.</p>
</div>
<div class="cap-card">
<div class="cap-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color:var(--accent)"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>
</div>
<h3>Integrationen</h3>
<p>E-Mail, Kalender, CRM, Slack, APIs — alles verbinden, ohne Zapier, ohne Webhook-Gefummel.</p>
</div>
</div>
</div>
</section>
<div class="divider"></div>
<!-- FOOTER -->
<footer>
<div class="container">
<div class="footer-brand"><span class="hi">K</span>e<span class="hi">I</span>nCo<span style="color:var(--text-muted)">.de</span></div>
<p class="footer-sub">Kein Code. Nur Ergebnisse. — Ein Projekt von msbls.de</p>
</div>
</footer>
</body>
</html>