459 lines
No EOL
15 KiB
Text
459 lines
No EOL
15 KiB
Text
file:///home/denode/Documents/index.html {"mtime":1762360958188,"ctime":1761735301935,"size":14937,"etag":"3f4o2ogflfgq","orphaned":false,"typeId":""}
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Luca Klemmig - Computer Science Student & Homelab Enthusiast</title>
|
|
<style>
|
|
:root {
|
|
--bg-primary: #ffffff;
|
|
--bg-secondary: #f8fafc;
|
|
--text-primary: #0f172a;
|
|
--text-secondary: #475569;
|
|
--accent-blue: #3b82f6;
|
|
--accent-blue-light: #60a5fa;
|
|
--border-color: #e2e8f0;
|
|
--card-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] {
|
|
--bg-primary: #0f172a;
|
|
--bg-secondary: #1e293b;
|
|
--text-primary: #f1f5f9;
|
|
--text-secondary: #cbd5e1;
|
|
--accent-blue: #60a5fa;
|
|
--accent-blue-light: #93c5fd;
|
|
--border-color: #334155;
|
|
--card-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
background: var(--bg-primary);
|
|
color: var(--text-primary);
|
|
line-height: 1.6;
|
|
transition: background 0.3s ease, color 0.3s ease;
|
|
}
|
|
|
|
.container {
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
padding: 0 20px;
|
|
}
|
|
|
|
/* Header & Navigation */
|
|
header {
|
|
position: sticky;
|
|
top: 0;
|
|
background: var(--bg-primary);
|
|
border-bottom: 1px solid var(--border-color);
|
|
padding: 1rem 0;
|
|
z-index: 100;
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
|
|
nav {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.logo {
|
|
font-size: 1.5rem;
|
|
font-weight: 600;
|
|
color: var(--accent-blue);
|
|
}
|
|
|
|
.nav-links {
|
|
display: flex;
|
|
gap: 2rem;
|
|
list-style: none;
|
|
align-items: center;
|
|
}
|
|
|
|
.nav-links a {
|
|
color: var(--text-secondary);
|
|
text-decoration: none;
|
|
transition: color 0.2s;
|
|
}
|
|
|
|
.nav-links a:hover {
|
|
color: var(--accent-blue);
|
|
}
|
|
|
|
.theme-toggle {
|
|
background: none;
|
|
border: 1px solid var(--border-color);
|
|
padding: 0.5rem;
|
|
border-radius: 8px;
|
|
cursor: pointer;
|
|
color: var(--text-primary);
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
.theme-toggle:hover {
|
|
background: var(--bg-secondary);
|
|
}
|
|
|
|
/* Hero Section */
|
|
.hero {
|
|
padding: 6rem 0;
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 4rem;
|
|
align-items: center;
|
|
}
|
|
|
|
.hero-content h1 {
|
|
font-size: 3rem;
|
|
margin-bottom: 1rem;
|
|
background: linear-gradient(135deg, var(--accent-blue) 0%, var(--accent-blue-light) 100%);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
.hero-content p {
|
|
font-size: 1.25rem;
|
|
color: var(--text-secondary);
|
|
margin-bottom: 2rem;
|
|
}
|
|
|
|
.hero-buttons {
|
|
display: flex;
|
|
gap: 1rem;
|
|
}
|
|
|
|
.btn {
|
|
padding: 0.75rem 1.5rem;
|
|
border-radius: 8px;
|
|
text-decoration: none;
|
|
font-weight: 500;
|
|
transition: all 0.2s;
|
|
display: inline-block;
|
|
}
|
|
|
|
.btn-primary {
|
|
background: var(--accent-blue);
|
|
color: white;
|
|
}
|
|
|
|
.btn-primary:hover {
|
|
background: var(--accent-blue-light);
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
.btn-secondary {
|
|
border: 1px solid var(--border-color);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.btn-secondary:hover {
|
|
background: var(--bg-secondary);
|
|
}
|
|
|
|
.hero-image {
|
|
display: flex;
|
|
justify-content: center;
|
|
}
|
|
|
|
.profile-pic {
|
|
width: 300px;
|
|
height: 300px;
|
|
border-radius: 50%;
|
|
background: linear-gradient(135deg, var(--accent-blue) 0%, var(--accent-blue-light) 100%);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 5rem;
|
|
color: white;
|
|
box-shadow: var(--card-shadow);
|
|
}
|
|
|
|
/* Section Styles */
|
|
section {
|
|
padding: 4rem 0;
|
|
}
|
|
|
|
.section-title {
|
|
font-size: 2rem;
|
|
margin-bottom: 3rem;
|
|
text-align: center;
|
|
}
|
|
|
|
/* About Section */
|
|
.about-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
|
gap: 2rem;
|
|
}
|
|
|
|
.about-card {
|
|
background: var(--bg-secondary);
|
|
padding: 2rem;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--border-color);
|
|
transition: transform 0.2s;
|
|
}
|
|
|
|
.about-card:hover {
|
|
transform: translateY(-4px);
|
|
box-shadow: var(--card-shadow);
|
|
}
|
|
|
|
.about-card h3 {
|
|
color: var(--accent-blue);
|
|
margin-bottom: 1rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
/* Projects Section */
|
|
.project-card {
|
|
background: var(--bg-secondary);
|
|
padding: 2rem;
|
|
border-radius: 12px;
|
|
border: 1px solid var(--border-color);
|
|
margin-bottom: 2rem;
|
|
}
|
|
|
|
.project-card h3 {
|
|
color: var(--accent-blue);
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.project-tags {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
flex-wrap: wrap;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.tag {
|
|
background: var(--accent-blue);
|
|
color: white;
|
|
padding: 0.25rem 0.75rem;
|
|
border-radius: 20px;
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
/* Contact Section */
|
|
.contact-info {
|
|
text-align: center;
|
|
max-width: 600px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.contact-links {
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: 2rem;
|
|
margin-top: 2rem;
|
|
}
|
|
|
|
.contact-links a {
|
|
color: var(--accent-blue);
|
|
text-decoration: none;
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
/* Footer */
|
|
footer {
|
|
background: var(--bg-secondary);
|
|
padding: 2rem 0;
|
|
text-align: center;
|
|
margin-top: 4rem;
|
|
border-top: 1px solid var(--border-color);
|
|
}
|
|
|
|
/* Responsive */
|
|
@media (max-width: 768px) {
|
|
.hero {
|
|
grid-template-columns: 1fr;
|
|
text-align: center;
|
|
}
|
|
|
|
.hero-content h1 {
|
|
font-size: 2rem;
|
|
}
|
|
|
|
.nav-links {
|
|
gap: 1rem;
|
|
}
|
|
|
|
.profile-pic {
|
|
width: 200px;
|
|
height: 200px;
|
|
font-size: 3rem;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
/*------------------------------------------------------------------------------------------------------------------------------*/
|
|
<body>
|
|
<header>
|
|
<nav class="container">
|
|
<div class="logo">Denode</div>
|
|
<ul class="nav-links">
|
|
<li><a href="#about">About</a></li>
|
|
<li><a href="#projects">Projects</a></li>
|
|
<li><a href="#tutorials">Tutorials</a></li>
|
|
<li><a href="#contact">Contact</a></li>
|
|
<li><a href="/dashboard" class="btn btn-secondary" style="padding: 0.5rem 1rem;">Dashboard</a></li>
|
|
<li><button class="theme-toggle" onclick="toggleTheme()">🌓</button></li>
|
|
</ul>
|
|
</nav>
|
|
</header>
|
|
|
|
<main class="container">
|
|
<!-- Hero Section -->
|
|
<section class="hero">
|
|
<div class="hero-content">
|
|
<h1>Hi, I'm Luca Klemmig</h1>
|
|
<p>Computer Science student at DHSN Dresden, VHS instructor, and homelab enthusiast passionate about self-hosting and automation.</p>
|
|
<div class="hero-buttons">
|
|
<a href="#projects" class="btn btn-primary">View Projects</a>
|
|
<a href="#contact" class="btn btn-secondary">Get in Touch</a>
|
|
</div>
|
|
</div>
|
|
<div class="hero-image">
|
|
<div class="profile-pic">👨💻</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- About Section -->
|
|
<section id="about">
|
|
<h2 class="section-title">About Me</h2>
|
|
<div class="about-grid">
|
|
<div class="about-card">
|
|
<h3>🎓 Education</h3>
|
|
<p>Currently studying Computer Science at DHSN Dresden, focusing on software development and system architecture.</p>
|
|
</div>
|
|
<div class="about-card">
|
|
<h3>👨🏫 Teaching</h3>
|
|
<p>Instructor at VHS (Volkshochschule), teaching computer courses for eldery people and sharing knowledge with aspiring learners.</p>
|
|
</div>
|
|
<div class="about-card">
|
|
<h3>🖥️ Homelab</h3>
|
|
<p>Running self-hosted services including Nextcloud, BookStack, and Overleaf on my personal infrastructure.</p>
|
|
</div>
|
|
<div class="about-card">
|
|
<h3>🍳 Interests</h3>
|
|
<p>When not coding, you'll find me cooking, experimenting with new recipes, or optimizing my homelab setup.</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Projects Section -->
|
|
<section id="projects">
|
|
<h2 class="section-title">Projects & Homelab</h2>
|
|
|
|
<div class="project-card">
|
|
<h3>Self-Hosted Infrastructure</h3>
|
|
<p>Complete homelab setup running various services on private infrastructure, including cloud storage, documentation, and productivity tools.</p>
|
|
<div class="project-tags">
|
|
<span class="tag">Docker</span>
|
|
<span class="tag">Linux (Arch btw)</span>
|
|
<span class="tag">Nextcloud</span>
|
|
<span class="tag">Self-Hosting</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="project-card">
|
|
<h3>Monitoring & Automation</h3>
|
|
<p>Infrastructure monitoring with Beszel, automated backups, and system administration tools for managing multiple services.</p>
|
|
<div class="project-tags">
|
|
<span class="tag">Monitoring</span>
|
|
<span class="tag">Automation</span>
|
|
<span class="tag">DevOps</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="project-card">
|
|
<h3>VHS Course Materials</h3>
|
|
<p>Developing and maintaining course content for computer science education at Volkshochschule Dresden.</p>
|
|
<div class="project-tags">
|
|
<span class="tag">Education</span>
|
|
<span class="tag">Teaching</span>
|
|
<span class="tag">Documentation</span>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Tutorials Section -->
|
|
<section id="tutorials">
|
|
<h2 class="section-title">Tutorials & Guides</h2>
|
|
<div class="about-grid">
|
|
<div class="about-card">
|
|
<h3>📚 Docker Basics</h3>
|
|
<p>Getting started with containerization and managing your first Docker applications.</p>
|
|
<a href="#" style="color: var(--accent-blue); text-decoration: none;">Read more →</a>
|
|
</div>
|
|
<div class="about-card">
|
|
<h3>🔧 Homelab Setup</h3>
|
|
<p>Step-by-step guide to building your own homelab infrastructure from scratch.</p>
|
|
<a href="#" style="color: var(--accent-blue); text-decoration: none;">Read more →</a>
|
|
</div>
|
|
<div class="about-card">
|
|
<h3>☁️ Self-Hosting Guide</h3>
|
|
<p>Complete guide to hosting your own services: Nextcloud, BookStack, and more.</p>
|
|
<a href="#" style="color: var(--accent-blue); text-decoration: none;">Read more →</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Contact Section -->
|
|
<section id="contact">
|
|
<h2 class="section-title">Get in Touch</h2>
|
|
<div class="contact-info">
|
|
<p>Interested in collaborating, have questions about my projects, or want to discuss homelab setups? Feel free to reach out!</p>
|
|
<div class="contact-links">
|
|
<a href="mailto:luca.klemmig@icloud.com">📧 Email</a>
|
|
<a href="https://github.com/auchnurluca" target="_blank">💻 GitHub</a>
|
|
<a href="https://www.instagram.com/eigentlichnurluca/" target="_blank"> Instagram</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<footer>
|
|
<div class="container">
|
|
<p>© 2025 Luca Klemmig | Built with <3 and self-host-energy</p>
|
|
</div>
|
|
</footer>
|
|
|
|
<script>
|
|
// Theme Toggle
|
|
function toggleTheme() {
|
|
const html = document.documentElement;
|
|
const currentTheme = html.getAttribute('data-theme');
|
|
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
|
|
html.setAttribute('data-theme', newTheme);
|
|
localStorage.setItem('theme', newTheme);
|
|
}
|
|
|
|
// Load saved theme
|
|
const savedTheme = localStorage.getItem('theme') || 'light';
|
|
document.documentElement.setAttribute('data-theme', savedTheme);
|
|
|
|
// Smooth scrolling
|
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
|
anchor.addEventListener('click', function (e) {
|
|
e.preventDefault();
|
|
const target = document.querySelector(this.getAttribute('href'));
|
|
if (target) {
|
|
target.scrollIntoView({ behavior: 'smooth' });
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |