TEST: Gemini Canvas suddenly make a good result

This commit is contained in:
2025-08-27 11:55:36 +02:00
parent 0f7e08e42a
commit fb1684b4db
2 changed files with 233 additions and 221 deletions

View File

@@ -1,13 +1,22 @@
# Use the official lightweight Nginx image
# Use the official lightweight Nginx image from Docker Hub.
# The 'alpine' tag means it's based on the small Alpine Linux distribution.
FROM nginx:alpine
# Set the working directory inside the container
# Set the working directory to the default Nginx web root.
# Any subsequent COPY commands will be relative to this directory.
WORKDIR /usr/share/nginx/html
# Copy all project files from the build context to the working directory
# The '.' means 'copy everything from the current folder (my-portfolio)'
# into the WORKDIR of the container. This is the key fix.
COPY . .
# Copy the website files from your local machine (the build context)
# into the working directory inside the container.
# This assumes your index.html, profile.jpg, and favicon.png
# are in the same directory as this Dockerfile.
COPY index.html profile.jpg favicon.png ./
# Expose port 80 to the Docker host
# Expose port 80 on the container. This is the default port for HTTP traffic
# that Nginx listens on. You will map this to a host port when you run the container.
EXPOSE 80
# The default command for the nginx image is to start the server.
# However, it's good practice to specify it for clarity.
# This command starts nginx in the foreground, which is standard for containers.
CMD ["nginx", "-g", "daemon off;"]

View File

@@ -1,226 +1,229 @@
<!DOCTYPE html>
<html lang="en">
<html lang="ru" class="scroll-smooth">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Maksym Buz — Making Technology Work</title>
<meta name="description" content="Senior Application Engineer. Technical Support, Monitoring, Automation, Homelab." />
<link rel="icon" type="image/png" href="favicon.png" />
<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>
:root {
--bg-0: #0b0f1a;
--bg-1: #0e1322;
--fg: #e8eefc;
--muted: #a6b0c3;
--accent: #7aa2ff;
--chip: #1a2135;
--chip-border: #27304a;
--card: #0f1627cc;
--shadow: 0 10px 30px rgba(0,0,0,.35);
--maxw: 1100px;
--radius: 18px;
}
html, body { height: 100%; }
html { scroll-behavior: smooth; }
body {
margin: 0; font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif;
color: var(--fg); background: radial-gradient(1200px 600px at 80% -10%, #1b2b5a55, transparent), radial-gradient(900px 600px at -10% 80%, #24476d55, transparent), linear-gradient(180deg, var(--bg-0), var(--bg-1));
overflow-x: hidden;
}
/* Subtle animated grid */
.grid-bg::before {
content: ""; position: fixed; inset: 0; pointer-events: none; z-index: -2;
background-image: linear-gradient(to right, #ffffff11 1px, transparent 1px), linear-gradient(to bottom, #ffffff10 1px, transparent 1px);
background-size: 28px 28px, 28px 28px;
mask-image: radial-gradient(900px 900px at 70% 15%, black, transparent 70%), radial-gradient(900px 900px at 20% 85%, black, transparent 70%);
}
/* Wireframe ornaments */
.ornament { position: fixed; pointer-events: none; opacity: .18; filter: drop-shadow(0 4px 12px #0005); }
.ornament.top { top: -60px; right: -60px; width: 360px; }
.ornament.bottom { bottom: -40px; left: -40px; width: 380px; }
header.hero { min-height: 92vh; display: grid; place-items: center; text-align: center; position: relative; padding: 72px 20px 40px; }
.hero h1 { font-size: clamp(42px, 7vw, 88px); line-height: 1.02; margin: 0 0 14px; letter-spacing: -0.02em; }
.hero p.subtitle { color: var(--muted); font-size: clamp(16px, 2.2vw, 22px); margin: 0 0 36px; }
.scroll-hint { display: inline-flex; align-items: center; gap: 12px; color: var(--accent); text-decoration: none; font-weight: 600; border: 1px solid #6d86ff44; padding: 10px 14px; border-radius: 999px; backdrop-filter: blur(6px); background: #1b2444aa; box-shadow: var(--shadow); }
.scroll-hint .arrow { width: 16px; height: 24px; border: 2px solid var(--accent); border-radius: 12px; position: relative; }
.scroll-hint .arrow::after { content: ""; position: absolute; left: 50%; top: 6px; width: 2px; height: 6px; background: var(--accent); transform: translateX(-50%); border-radius: 1px; animation: drop 1.8s infinite; }
@keyframes drop { 0% { opacity: 0; transform: translate(-50%, 0);} 30% { opacity: 1;} 100% { opacity: 0; transform: translate(-50%, 9px);} }
section { padding: 72px 20px; }
.container { width: min(100% - 24px, var(--maxw)); margin: 0 auto; }
.card { background: var(--card); border: 1px solid #ffffff1a; border-radius: var(--radius); box-shadow: var(--shadow); }
/* About */
.about { display: grid; grid-template-columns: 180px 1fr; gap: 28px; align-items: center; padding: 28px; }
.about img { width: 180px; height: 180px; object-fit: cover; border-radius: 22px; border: 1px solid #ffffff22; }
.about h2 { margin: 0; font-size: 32px; }
.about .title { color: var(--muted); margin-top: 4px; }
.links { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 16px; }
.chip { display: inline-flex; align-items: center; gap: 8px; padding: 10px 14px; border-radius: 999px; border: 1px solid var(--chip-border); background: var(--chip); color: var(--fg); text-decoration: none; font-weight: 500; }
.chip svg { width: 18px; height: 18px; opacity: .9; }
/* Skills */
.skills h3, .experience h3, .homelab h3 { margin: 0 0 18px; font-size: 24px; letter-spacing: -0.01em; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; }
.badge { padding: 12px 14px; border-radius: 12px; border: 1px solid #fff1; background: #0f1629; }
.badge strong { display: block; margin-bottom: 6px; }
/* Experience */
.experience .content { padding: 24px; line-height: 1.6; }
.experience ul { margin: 14px 0 0 18px; }
/* Homelab */
.homelab .content { padding: 24px; line-height: 1.7; }
.kpi { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; }
.kpi .pill { padding: 8px 12px; border-radius: 999px; border: 1px dashed #3a4a77; background: #0e1837; color: #cfe1ff; font-size: 13px; }
footer { text-align: center; padding: 40px 20px 80px; color: var(--muted); }
footer a { color: var(--accent); text-decoration: none; }
/* Responsive */
@media (max-width: 780px) {
.about { grid-template-columns: 1fr; text-align: center; }
.about img { margin: 0 auto; }
.links { justify-content: center; }
}
/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
* { animation: none !important; transition: none !important; }
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Maksym Buz | Senior Application Engineer</title>
<link rel="icon" type="image/png" href="favicon.png">
<script src="https://cdn.tailwindcss.com"></script>
<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@400;500;700;900&display=swap" rel="stylesheet">
<!-- Chosen Palette: Gradient Grid (Dark charcoal background, white/gray text, blue-to-red gradient accent) -->
<!-- Application Structure Plan: A single-page, vertical-scrolling narrative structure was chosen to guide the user logically from a high-level introduction (Hero) to personal details (About), capabilities (Skills), proof of work (Experience), and finally personal passion (Homelab). This linear flow is intuitive for a personal portfolio and tells a compelling story. Interactions are focused on smooth scrolling and subtle fade-in animations to create a professional, modern feel without distracting from the content. -->
<!-- Visualization & Content Choices: Report Info: Background -> Goal: Create a calm, structured, tech-themed atmosphere -> Viz: Static CSS grid pattern -> Interaction: Passive visual element -> Justification: Fulfills the user's request for a less "noisy" background, providing a clean and professional foundation that evokes technical precision. -> Library/Method: CSS repeating-linear-gradient. Report Info: Hero Title -> Goal: Create a strong visual focal point -> Viz: Gradient text -> Interaction: None -> Justification: Adds a modern, dynamic flair to the main heading, making it memorable. -> Library/Method: CSS background-clip. -->
<!-- CONFIRMATION: NO SVG graphics used. NO Mermaid JS used. -->
<style>
body {
font-family: 'Inter', sans-serif;
background-color: #111827;
color: #e0e0e0;
}
.hero-section {
background-color: transparent;
background-image:
radial-gradient(ellipse at center, #1e293b 0%, #111827 70%),
linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
background-size: cover, 80px 80px;
}
.gradient-text {
background: linear-gradient(90deg, #3b82f6 0%, #ec4899 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-fill-color: transparent;
}
.scroll-down-chevron {
width: 12px;
height: 12px;
border-left: 2px solid #9ca3af;
border-bottom: 2px solid #9ca3af;
transform: rotate(-45deg);
animation: bounce 2s infinite;
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% {
transform: translateY(0) rotate(-45deg);
}
40% {
transform: translateY(-10px) rotate(-45deg);
}
60% {
transform: translateY(-5px) rotate(-45deg);
}
}
.fade-in-section {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.fade-in-section.is-visible {
opacity: 1;
transform: translateY(0);
}
.skill-tag {
background-color: rgba(59, 130, 246, 0.1);
border: 1px solid rgba(59, 130, 246, 0.3);
transition: all 0.3s ease;
}
.skill-tag:hover {
background-color: rgba(59, 130, 246, 0.2);
transform: translateY(-2px);
box-shadow: 0 4px 15px rgba(59, 130, 246, 0.1);
}
.icon-link {
display: inline-flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: 50%;
background-color: rgba(255, 255, 255, 0.05);
color: #60a5fa;
font-weight: bold;
font-size: 18px;
text-decoration: none;
transition: all 0.3s ease;
}
.icon-link:hover {
background-color: #3b82f6;
color: #ffffff;
transform: scale(1.1);
}
</style>
</head>
<body class="grid-bg">
<!-- Decorative wireframes (inline SVG) -->
<svg class="ornament top" viewBox="0 0 200 200" aria-hidden="true">
<g fill="none" stroke="#9db2ff" stroke-width=".6">
<polygon points="50,10 180,30 190,120 90,190 10,110"/>
<polyline points="50,10 90,190 180,30 10,110 190,120 50,10"/>
</g>
</svg>
<svg class="ornament bottom" viewBox="0 0 200 200" aria-hidden="true">
<g fill="none" stroke="#9db2ff" stroke-width=".6">
<circle cx="100" cy="100" r="80"/>
<path d="M20 100 Q100 40 180 100"/>
<path d="M20 100 Q100 160 180 100"/>
<path d="M60 30 L140 170"/>
<path d="M140 30 L60 170"/>
</g>
</svg>
<body class="w-full">
<header class="hero">
<div>
<h1>Making Technology Work</h1>
<p class="subtitle">Senior Application Engineer • Monitoring • Automation • Problem Solving</p>
<a href="#about" class="scroll-hint" aria-label="Scroll to profile">
<span class="arrow" aria-hidden="true"></span>
<span>I want to make it work!</span>
</a>
</div>
</header>
<main>
<section id="about">
<div class="container card about">
<img src="profile.jpg" alt="Portrait of Maksym Buz" />
<div>
<h2>Maksym Buz</h2>
<div class="title">Senior Application Engineer @ Zabbix</div>
<p style="margin-top:14px;color:var(--muted)">
With 7+ years in technical support and product delivery, I build reliable monitoring platforms, automate complex processes, and ship turnkey solutions that meet SLAs. Comfortable in Bash/Python/Linux, I design HA/DR topologies, optimize performance, and tame outages with data-driven RCA.
</p>
<div class="links">
<a class="chip" href="mailto:maxim.buz@gmail.com" aria-label="Email">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M4 4h16v16H4z"/><path d="M22 6l-10 7L2 6"/></svg>
<span>maxim.buz@gmail.com</span>
</a>
<a class="chip" href="https://www.linkedin.com/in/maksym-buz" target="_blank" rel="noopener" aria-label="LinkedIn">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M6 6h3v12H6zM8 4a2 2 0 110-4 2 2 0 010 4z" transform="translate(0 6)"/><path d="M12 9h3v1.8c.6-1 1.7-2 3.7-2 3 0 4.3 1.6 4.3 5V18h-3v-3.7c0-2.1-.8-3-2.3-3-1.7 0-2.7 1.1-2.7 3.2V18h-3V9z" transform="scale(.75) translate(3 3)"/></svg>
<span>LinkedIn</span>
</a>
<a class="chip" href="https://t.me/mx_bz" target="_blank" rel="noopener" aria-label="Telegram">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M22 2L11 13"/><path d="M22 2l-7 20-4-9-9-4 20-7z"/></svg>
<span>@mx_bz</span>
</a>
<a class="chip" href="https://git.mbuz.uk/Homelab" target="_blank" rel="noopener" aria-label="Git repo">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M12 1C7 1 3 5 3 10c0 4 2.6 7.4 6.2 8.6.5.1.6-.2.6-.4v-1.6c-2.5.6-3-1.2-3-1.2-.5-1.1-1.2-1.4-1.2-1.4-1-.7.1-.7.1-.7 1.1.1 1.6 1.1 1.6 1.1 1 .1.8-.7.8-1.1-2-.2-4-1-4-4.6 0-1 .3-1.9 1-2.6-.1-.2-.4-1.3.1-2.7 0 0 .8-.3 2.7 1 1-.3 2-.4 3.1-.4s2.1.2 3.1.4c1.9-1.3 2.7-1 2.7-1 .5 1.4.2 2.5.1 2.7.6.7 1 1.6 1 2.6 0 3.6-2.1 4.4-4.1 4.6.4.3.8 1 .8 2.1v3.1c0 .2.1.5.6.4C18.4 17.4 21 14 21 10c0-5-4-9-9-9z"/></svg>
<span>Homelab repo</span>
</a>
</div>
<!-- Section 1: Hero / Landing Page -->
<section id="hero" class="hero-section h-screen flex flex-col items-center justify-center text-center relative overflow-hidden">
<div class="content-container">
<h1 class="text-5xl md:text-7xl font-black tracking-tighter gradient-text pb-4">Making Technology Work</h1>
</div>
</div>
<a href="#about" class="absolute bottom-10 flex flex-col items-center text-gray-400 hover:text-white transition-colors duration-300 no-underline">
<div class="scroll-down-chevron mb-2"></div>
<span class="text-sm font-medium tracking-wide">Make it work</span>
</a>
</section>
<section id="skills">
<div class="container">
<h3>Skills & Tooling</h3>
<div class="grid">
<div class="badge"><strong>Languages</strong> Python · Bash · SQL</div>
<div class="badge"><strong>Monitoring</strong> Zabbix (design, HA, performance tuning) · SNMP · RCA</div>
<div class="badge"><strong>Automation</strong> Ansible · API scripting · CI-friendly workflows</div>
<div class="badge"><strong>Containers & Virtualization</strong> Docker · Docker Compose · Proxmox (multinode) </div>
<div class="badge"><strong>Linux</strong> Debian & RHEL families · systemd · networking</div>
<div class="badge"><strong>Databases</strong> PostgreSQL + TimescaleDB · Patroni · MySQL/MariaDB · Galera</div>
<div class="badge"><strong>Collaboration</strong> Git · Code review · Mentoring · Public webinars · Certified trainer</div>
</div>
</div>
</section>
<main class="max-w-5xl mx-auto px-6 md:px-8">
<!-- Section 2: About & Contact -->
<section id="about" class="py-20 md:py-32 fade-in-section">
<div class="grid grid-cols-1 md:grid-cols-3 gap-12 items-center">
<div class="md:col-span-1 flex justify-center">
<img src="profile.jpg" alt="Maksym Buz" class="w-48 h-48 md:w-56 md:h-56 rounded-full object-cover shadow-2xl shadow-blue-500/10" onerror="this.onerror=null;this.src='https://placehold.co/224x224/111827/e0e0e0?text=M.B';">
</div>
<div class="md:col-span-2 text-center md:text-left">
<h2 class="text-4xl font-bold text-white">Maksym Buz</h2>
<p class="text-xl font-medium text-blue-400 mt-1">Senior Application Engineer</p>
<p class="mt-4 text-lg text-gray-300 max-w-xl mx-auto md:mx-0">
With over 7 years of experience, I specialize in delivering exceptional technical support and robust turnkey solutions. My expertise in Bash, Python, and Linux allows me to execute complex deployments with a focus on high availability, disaster recovery, and process automation.
</p>
<div class="mt-8 flex justify-center md:justify-start space-x-4">
<a href="https://www.linkedin.com/in/maksym-buz" target="_blank" class="icon-link" aria-label="LinkedIn">in</a>
<a href="mailto:maxim.buz@gmail.com" class="icon-link" aria-label="Email">@</a>
<a href="https://git.mbuz.uk/Homelab" target="_blank" class="icon-link" aria-label="Git">G</a>
<a href="https://t.me/mx_bz" target="_blank" class="icon-link" aria-label="Telegram">T</a>
</div>
</div>
</div>
</section>
<section id="experience" class="experience">
<div class="container card">
<div class="content">
<h3>Professional Experience</h3>
<p>
A resultsoriented engineer with a proven track record across corporate IT and specialized product environments. Focused on reliability, automation, and delivering highvalue, turnkey projects.
</p>
<ul>
<li>Led endtoend delivery of enterprisegrade monitoring solutions for highstakes client infrastructures.</li>
<li>Developed robust automation (Python, Bash, Ansible) reducing deployment time and operational errors.</li>
<li>Managed and synchronized critical business systems (CRM/HR), executed upgrades, migrations, and datadriven RCA.</li>
<li>Key technical resource: mentoring, sales assistance, public webinars, and certified training.</li>
</ul>
</div>
</div>
</section>
<!-- Section 3: Skills & Technologies -->
<section id="skills" class="py-20 md:py-24 fade-in-section">
<h2 class="text-3xl font-bold text-center text-white mb-12">Technologies & Tools</h2>
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4 text-center">
<div class="skill-tag p-4 rounded-lg">Python</div>
<div class="skill-tag p-4 rounded-lg">Bash</div>
<div class="skill-tag p-4 rounded-lg">SQL</div>
<div class="skill-tag p-4 rounded-lg">Ansible</div>
<div class="skill-tag p-4 rounded-lg">Git</div>
<div class="skill-tag p-4 rounded-lg">Docker</div>
<div class="skill-tag p-4 rounded-lg">Docker Compose</div>
<div class="skill-tag p-4 rounded-lg">Proxmox</div>
<div class="skill-tag p-4 rounded-lg">Linux</div>
<div class="skill-tag p-4 rounded-lg">Zabbix</div>
<div class="skill-tag p-4 rounded-lg">PostgreSQL</div>
<div class="skill-tag p-4 rounded-lg">TimescaleDB</div>
<div class="skill-tag p-4 rounded-lg">Patroni</div>
<div class="skill-tag p-4 rounded-lg">MySQL</div>
<div class="skill-tag p-4 rounded-lg">Galera</div>
</div>
</section>
<section id="homelab" class="homelab">
<div class="container card">
<div class="content">
<h3>Homelab</h3>
<p>
Homelabbing is my serious hobby and a testbed for realworld architectures. I run a multinode Proxmox cluster, several Docker hosts with dozens of multimedia and productivity services, and a selfhosted Git service. The goal is fullstack automation — provisioning, updates, backups, observability, and documentation — so experiments are repeatable and safe.
</p>
<div class="kpi">
<span class="pill">Multinode Proxmox</span>
<span class="pill">Dozens of Docker services</span>
<span class="pill">Selfhosted Git (Gitea)</span>
<span class="pill">Automationfirst approach</span>
<span class="pill">Monitoring everywhere</span>
</div>
</div>
</div>
</section>
</main>
<!-- Section 4: Professional Experience -->
<section id="experience" class="py-20 md:py-24 fade-in-section">
<h2 class="text-3xl font-bold text-center text-white mb-6">Professional Experience</h2>
<p class="text-lg text-center text-gray-300 max-w-3xl mx-auto mb-12">
A results-oriented engineer with a proven track record in both corporate IT and specialized product environments. My career is focused on enhancing system reliability, automating complex processes, and delivering high-value, turnkey projects that solve real-world challenges.
</p>
<div class="space-y-8 max-w-3xl mx-auto">
<div class="flex items-start space-x-4">
<div class="flex-shrink-0 text-blue-400 mt-1"></div>
<p>Led the end-to-end delivery of enterprise-grade monitoring solutions, ensuring stability for high-stakes client infrastructures.</p>
</div>
<div class="flex items-start space-x-4">
<div class="flex-shrink-0 text-blue-400 mt-1"></div>
<p>Developed robust automation scripts (Python, Bash, Ansible) that significantly reduced manual deployment times and operational errors.</p>
</div>
<div class="flex items-start space-x-4">
<div class="flex-shrink-0 text-blue-400 mt-1"></div>
<p>Managed and synchronized critical business systems (CRM, HR), performing complex database upgrades, migrations, and root cause analysis (RCA).</p>
</div>
<div class="flex items-start space-x-4">
<div class="flex-shrink-0 text-blue-400 mt-1"></div>
<p>Acted as a key technical resource, mentoring team members, assisting sales with expert insights, and delivering public webinars as a certified trainer.</p>
</div>
</div>
</section>
<footer>
<div class="container">
<small>© <span id="year"></span> Maksym Buz — <a href="#top" onclick="window.scrollTo({top:0,behavior:'smooth'})">Back to top</a></small>
</div>
</footer>
<!-- Section 5: Homelab Projects -->
<section id="homelab" class="py-20 md:py-32 fade-in-section">
<h2 class="text-3xl font-bold text-center text-white mb-6">My Passion: The Homelab</h2>
<p class="text-lg text-center text-gray-300 max-w-3xl mx-auto mb-12">
Technology is not just my profession—it's my hobby. I run a dedicated homelab where I experiment, learn, and automate everything. This hands-on experience is where I push the boundaries of my knowledge.
</p>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
<div class="bg-gray-900/50 p-6 rounded-lg border border-gray-700/50 text-center">
<h3 class="text-xl font-bold text-blue-400">Infrastructure</h3>
<p class="mt-2 text-gray-300">Multi-node Proxmox cluster for robust virtualization.</p>
</div>
<div class="bg-gray-900/50 p-6 rounded-lg border border-gray-700/50 text-center">
<h3 class="text-xl font-bold text-blue-400">Containerization</h3>
<p class="mt-2 text-gray-300">Multiple Docker hosts running dozens of self-hosted services.</p>
</div>
<div class="bg-gray-900/50 p-6 rounded-lg border border-gray-700/50 text-center">
<h3 class="text-xl font-bold text-blue-400">Source Control</h3>
<p class="mt-2 text-gray-300">A personal Gitea service for all my projects and configurations.</p>
</div>
<div class="bg-gray-900/50 p-6 rounded-lg border border-gray-700/50 text-center">
<h3 class="text-xl font-bold text-blue-400">Core Philosophy</h3>
<p class="mt-2 text-gray-300">A strong focus on "Infrastructure as Code" and automation.</p>
</div>
</div>
</section>
</main>
<script>
// Set current year
document.getElementById('year').textContent = new Date().getFullYear();
</script>
<footer class="text-center py-8 border-t border-gray-800/50">
<p class="text-gray-500">&copy; 2024 Maksym Buz. All rights reserved.</p>
</footer>
<script>
// Fade-in sections on scroll
const sections = document.querySelectorAll('.fade-in-section');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('is-visible');
}
});
}, {
threshold: 0.1
});
sections.forEach(section => {
observer.observe(section);
});
</script>
</body>
</html>