diff --git a/landing/Dockerfile b/landing/Dockerfile new file mode 100644 index 0000000..3ea88ae --- /dev/null +++ b/landing/Dockerfile @@ -0,0 +1,5 @@ +FROM nginx:1.27-alpine +COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY index.html /usr/share/nginx/html/ +COPY css/ /usr/share/nginx/html/css/ +EXPOSE 80 diff --git a/landing/css/style.css b/landing/css/style.css new file mode 100644 index 0000000..b7df2af --- /dev/null +++ b/landing/css/style.css @@ -0,0 +1,265 @@ +/* ===== Reset & Base ===== */ +*, *::before, *::after { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --bg-primary: #080a0f; + --bg-secondary: #0e1119; + --bg-card: #12151f; + --text-primary: #e8eaf0; + --text-secondary: #9ba0b0; + --accent: #8b7cf6; + --accent-hover: #a396ff; + --border: #1e2230; + --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, + Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + --container-width: 960px; + --transition: 0.25s ease; +} + +html { + scroll-behavior: smooth; +} + +body { + font-family: var(--font-family); + background: var(--bg-primary); + color: var(--text-primary); + line-height: 1.6; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + color: var(--accent); + text-decoration: none; + transition: color var(--transition); +} + +a:hover { + color: var(--accent-hover); +} + +/* ===== Container ===== */ +.container { + max-width: var(--container-width); + margin: 0 auto; + padding: 0 1.5rem; +} + +/* ===== Hero ===== */ +.hero { + min-height: 70vh; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + background: linear-gradient(180deg, var(--bg-primary) 0%, var(--bg-secondary) 100%); + border-bottom: 1px solid var(--border); +} + +.hero-inner { + animation: fadeInUp 0.8s ease forwards; +} + +@keyframes fadeInUp { + 0% { + opacity: 0; + transform: translateY(30px); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +.hero-title { + font-size: 4rem; + font-weight: 800; + letter-spacing: -0.03em; + line-height: 1.1; + margin-bottom: 0.5rem; + background: linear-gradient(135deg, var(--text-primary) 0%, var(--accent) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.hero-subtitle { + font-size: 1.25rem; + color: var(--text-secondary); + margin-bottom: 2rem; + max-width: 480px; + margin-left: auto; + margin-right: auto; +} + +.btn { + display: inline-block; + padding: 0.85rem 2.2rem; + border-radius: 8px; + background: var(--accent); + color: #fff; + font-size: 1rem; + font-weight: 600; + transition: background var(--transition), transform var(--transition); + border: none; + cursor: pointer; +} + +.btn:hover { + background: var(--accent-hover); + color: #fff; + transform: translateY(-2px); +} + +/* ===== Sections ===== */ +section { + padding: 5rem 0; +} + +.section-title { + font-size: 1.75rem; + font-weight: 700; + margin-bottom: 2.5rem; + text-align: center; + color: var(--text-primary); +} + +/* ===== Features Grid ===== */ +.features { + background: var(--bg-secondary); +} + +.features-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 2rem; +} + +.card { + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: 12px; + padding: 2rem; + transition: border-color var(--transition), transform var(--transition); +} + +.card:hover { + border-color: var(--accent); + transform: translateY(-4px); +} + +.card-title { + font-size: 1.25rem; + font-weight: 700; + margin-bottom: 0.75rem; + color: var(--text-primary); +} + +.card-text { + font-size: 0.95rem; + color: var(--text-secondary); + line-height: 1.7; +} + +/* ===== Status Placeholder ===== */ +.status { + background: var(--bg-primary); +} + +.status-placeholder { + text-align: center; + padding: 3rem; + border: 2px dashed var(--border); + border-radius: 12px; +} + +.status-hint { + color: var(--text-secondary); + font-size: 0.95rem; +} + +/* ===== Footer ===== */ +.footer { + border-top: 1px solid var(--border); + padding: 2rem 0; + background: var(--bg-secondary); +} + +.footer-inner { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 1rem; +} + +.footer-copy { + color: var(--text-secondary); + font-size: 0.9rem; +} + +.footer-links { + display: flex; + gap: 1.5rem; +} + +.footer-links a { + font-size: 0.9rem; + color: var(--text-secondary); +} + +.footer-links a:hover { + color: var(--accent); +} + +/* ===== Responsive ===== */ +@media (max-width: 768px) { + .hero { + min-height: 60vh; + } + + .hero-title { + font-size: 2.5rem; + } + + .hero-subtitle { + font-size: 1.1rem; + } + + .features-grid { + grid-template-columns: 1fr; + gap: 1.5rem; + } + + .section-title { + font-size: 1.5rem; + } + + .footer-inner { + flex-direction: column; + text-align: center; + } + + .footer-links { + justify-content: center; + } +} + +@media (max-width: 480px) { + .hero-title { + font-size: 2rem; + } + + .container { + padding: 0 1rem; + } + + section { + padding: 3rem 0; + } +} diff --git a/landing/index.html b/landing/index.html new file mode 100644 index 0000000..bc9a89a --- /dev/null +++ b/landing/index.html @@ -0,0 +1,73 @@ + + + + + + Noveria – Tools, Infrastruktur & KI-Lösungen + + + + + + +
+
+

Noveria

+

Tools, Infrastruktur & KI-Lösungen

+ Zum Nexus Dashboard +
+
+ + +
+
+

Unsere Plattform

+
+
+

Nexus

+

+ Zentrale Projekt- und Ressourcenverwaltung mit intelligentem Task-Management und + Echtzeit-Kollaboration – die Schaltzentrale deiner Workflows. +

+
+
+

OpenClaw Gateway

+

+ Sicheres Gateway zur Steuerung und Orchestrierung von KI-Agenten, + Bots und Automatisierungspipelines – skalierbar und erweiterbar. +

+
+
+

CI/CD Pipeline

+

+ Vollautomatisierte Build-, Test- und Deployment-Pipelines für schnelle, + zuverlässige Releases – von der Idee zur Produktion. +

+
+
+
+
+ + +
+
+

Service-Status

+
+

Status-Indikatoren werden hier live angezeigt.

+
+
+
+ + + + + + diff --git a/landing/nginx.conf b/landing/nginx.conf new file mode 100644 index 0000000..0ce3a1a --- /dev/null +++ b/landing/nginx.conf @@ -0,0 +1,15 @@ +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } + + # Security headers + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header Referrer-Policy "no-referrer-when-downgrade" always; +}