From 71cd0c3a95730be46862f359fa769933d4d93607 Mon Sep 17 00:00:00 2001 From: antigravity Date: Mon, 15 Jun 2026 14:27:15 +0200 Subject: [PATCH] Update homepage to a modern German under construction page --- public/index.html | 171 +++++++++++++++++++-------------------------- public/js/utils.js | 8 ++- tests/unit.test.js | 2 +- 3 files changed, 80 insertions(+), 101 deletions(-) diff --git a/public/index.html b/public/index.html index 62b2d4a..1749106 100644 --- a/public/index.html +++ b/public/index.html @@ -1,9 +1,9 @@ - + - Robert Müller — Software Engineer & Architect + Robert Müller — Webseite im Aufbau @@ -15,7 +15,6 @@ --border-color: rgba(255, 255, 255, 0.08); --accent-color: #6366f1; --accent-glow: rgba(99, 102, 241, 0.3); - --accent-secondary: #06b6d4; --text-main: #f8fafc; --text-muted: #94a3b8; } @@ -46,7 +45,7 @@ width: 60vw; height: 60vw; border-radius: 50%; - background: radial-gradient(circle, rgba(99, 102, 241, 0.15) 0%, rgba(6, 182, 212, 0.05) 50%, rgba(0,0,0,0) 70%); + background: radial-gradient(circle, rgba(99, 102, 241, 0.12) 0%, rgba(6, 182, 212, 0.04) 50%, rgba(0,0,0,0) 70%); filter: blur(120px); z-index: 0; top: -10vw; @@ -59,7 +58,7 @@ width: 50vw; height: 50vw; border-radius: 50%; - background: radial-gradient(circle, rgba(6, 182, 212, 0.15) 0%, rgba(99, 102, 241, 0.05) 50%, rgba(0,0,0,0) 70%); + background: radial-gradient(circle, rgba(6, 182, 212, 0.12) 0%, rgba(99, 102, 241, 0.04) 50%, rgba(0,0,0,0) 70%); filter: blur(120px); z-index: 0; bottom: -10vw; @@ -81,7 +80,7 @@ border-radius: 24px; padding: 4rem 3rem; width: 100%; - max-width: 650px; + max-width: 600px; text-align: center; z-index: 10; box-shadow: 0 30px 60px -15px rgba(0,0,0,0.6); @@ -89,27 +88,44 @@ } .container:hover { - border-color: rgba(99, 102, 241, 0.25); + border-color: rgba(99, 102, 241, 0.2); } - /* Badge */ - .badge { - display: inline-block; - background: rgba(99, 102, 241, 0.08); + /* Construction / Under Construction Icon */ + .icon-wrapper { + width: 80px; + height: 80px; + margin: 0 auto 2rem; + background: rgba(99, 102, 241, 0.1); border: 1px solid rgba(99, 102, 241, 0.3); + border-radius: 20px; + display: flex; + align-items: center; + justify-content: center; color: #a5b4fc; - padding: 0.4rem 1rem; - border-radius: 99px; - font-size: 0.8rem; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.1em; - margin-bottom: 2rem; + position: relative; + } + + .icon-wrapper::after { + content: ''; + position: absolute; + width: 100%; + height: 100%; + border-radius: 20px; + border: 1px solid var(--accent-color); + opacity: 0; + transform: scale(0.9); + transition: all 0.5s ease; + } + + .container:hover .icon-wrapper::after { + opacity: 1; + transform: scale(1.1); } /* Header */ h1 { - font-size: 3rem; + font-size: 2.75rem; font-weight: 800; margin-bottom: 0.5rem; background: linear-gradient(135deg, #ffffff 40%, #a5b4fc 100%); @@ -119,73 +135,36 @@ } .subtitle { - font-size: 1.25rem; - color: var(--accent-secondary); + font-size: 1.1rem; + color: var(--text-muted); font-weight: 600; margin-bottom: 1.5rem; - letter-spacing: 0.05em; + letter-spacing: 0.15em; text-transform: uppercase; } - /* Dynamic greeting */ + .divider { + width: 60px; + height: 2px; + background: linear-gradient(90deg, var(--accent-color), #06b6d4); + margin: 1.5rem auto; + } + .greeting { - font-size: 1.05rem; + font-size: 1rem; color: var(--text-muted); - margin-bottom: 2rem; - min-height: 24px; + margin-bottom: 1.5rem; font-style: italic; } p.description { color: var(--text-muted); - font-size: 1.15rem; - line-height: 1.75; + font-size: 1.1rem; + line-height: 1.8; margin-bottom: 2.5rem; font-weight: 300; } - /* Skills Grid */ - .skills-title { - font-size: 0.9rem; - text-transform: uppercase; - color: var(--text-muted); - letter-spacing: 0.15em; - margin-bottom: 1.2rem; - font-weight: 600; - } - - .skills-grid { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 1rem; - margin-bottom: 3rem; - } - - .skill-card { - background: rgba(255, 255, 255, 0.015); - border: 1px solid var(--border-color); - border-radius: 12px; - padding: 1rem; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - } - - .skill-card:hover { - background: var(--panel-hover); - border-color: rgba(6, 182, 212, 0.3); - transform: translateY(-4px); - } - - .skill-card h3 { - font-size: 0.95rem; - font-weight: 600; - margin-bottom: 0.25rem; - } - - .skill-card p { - font-size: 0.8rem; - color: var(--text-muted); - } - /* Actions / Button */ .btn { display: inline-flex; @@ -194,7 +173,7 @@ background: linear-gradient(135deg, var(--accent-color) 0%, #4f46e5 100%); color: white; text-decoration: none; - padding: 1rem 2.25rem; + padding: 0.9rem 2.25rem; border-radius: 99px; font-size: 1rem; font-weight: 600; @@ -210,15 +189,15 @@ filter: brightness(1.1); } - .btn:active { - transform: translateY(0); + .btn svg { + margin-right: 8px; } /* Footer */ footer { margin-top: 3rem; font-size: 0.8rem; - color: rgba(255,255,255,0.2); + color: rgba(255,255,255,0.15); z-index: 10; } @@ -227,9 +206,6 @@ padding: 3rem 1.5rem; } h1 { font-size: 2.25rem; } - .skills-grid { - grid-template-columns: 1fr; - } } @@ -238,37 +214,34 @@
- Online +
+ + + +
+

Robert Müller

-
Software Engineer & Architect
+
Webseite im Aufbau
+ +
...

- Specializing in building robust, high-performance distributed systems, container orchestration, and security-hardened self-hosted platforms. Committed to craftsmanship, optimization, and clean architectures. + Herzlich willkommen! Meine neue Internetpräsenz befindet sich aktuell im Aufbau. Bitte schauen Sie zu einem späteren Zeitpunkt noch einmal vorbei. Bei Fragen oder Mitteilungen können Sie mich gerne per E-Mail kontaktieren.

-
Core Competencies
-
-
-

DevOps

-

Docker & Compose

-
-
-

Backend

-

PostgreSQL & Node.js

-
-
-

SysOps

-

Nginx & Linux OS

-
-
- - Get In Touch + + + + + + Kontakt aufnehmen +
@@ -285,7 +258,7 @@ if (typeof formatGreeting === 'function') { greetingBox.textContent = formatGreeting(timeOfDay, 'Robert Müller'); } else { - greetingBox.textContent = `Welcome to Robert Müller's portfolio!`; + greetingBox.textContent = `Herzlich willkommen!`; } }); diff --git a/public/js/utils.js b/public/js/utils.js index 49f5c0b..a41c601 100644 --- a/public/js/utils.js +++ b/public/js/utils.js @@ -4,7 +4,13 @@ function validateEmail(email) { } function formatGreeting(timeOfDay, name) { - return `Good ${timeOfDay}, welcome to ${name}'s portfolio!`; + const greetings = { + morning: 'Guten Morgen', + afternoon: 'Guten Tag', + evening: 'Guten Abend' + }; + const greeting = greetings[timeOfDay] || 'Herzlich willkommen'; + return `${greeting}, herzlich willkommen auf der Webseite von ${name}!`; } if (typeof module !== 'undefined' && module.exports) { diff --git a/tests/unit.test.js b/tests/unit.test.js index 680a0aa..ec03cb7 100644 --- a/tests/unit.test.js +++ b/tests/unit.test.js @@ -11,6 +11,6 @@ test('Unit Tests: validateEmail', (t) => { test('Unit Tests: formatGreeting', (t) => { assert.strictEqual( formatGreeting('evening', 'Robert Müller'), - "Good evening, welcome to Robert Müller's portfolio!" + "Guten Abend, herzlich willkommen auf der Webseite von Robert Müller!" ); });