Viktor Saar — IT Specialist CV Portfolio
A technical dark CV-style portfolio for IT and systems engineers: a sidebar technical profile with Download CV, animated IT skill bars, work experience, infrastructure projects, severity-tagged incident-resolution examples, a technology stack, certifications and languages.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"><div class="it-shell">
<aside class="it-side">
<div class="it-prof" data-rv>
<div class="it-av">VS</div>
<h1>Viktor Saar</h1>
<p class="it-role">Senior IT Systems Engineer</p>
<span class="it-avail"><i></i> Open to opportunities</span>
<a class="it-dl" href="#" download>⬇ Download CV</a>
</div>
<div class="it-sblock" data-rv>
<h3>// contact</h3>
<ul class="it-contact">
<li><span>@</span> viktor.saar@protonmail.com</li>
<li><span>#</span> +372 5123 4567</li>
<li><span>⌖</span> Tallinn, Estonia</li>
<li><span>git</span> github.com/vsaar</li>
</ul>
</div>
<div class="it-sblock" data-rv>
<h3>// core skills</h3>
<div class="it-skill" data-bar><label>Linux / Bash <span>95%</span></label><div class="it-track"><i data-w="95%"></i></div></div>
<div class="it-skill" data-bar><label>Kubernetes <span>88%</span></label><div class="it-track"><i data-w="88%"></i></div></div>
<div class="it-skill" data-bar><label>AWS / Cloud <span>90%</span></label><div class="it-track"><i data-w="90%"></i></div></div>
<div class="it-skill" data-bar><label>Networking <span>85%</span></label><div class="it-track"><i data-w="85%"></i></div></div>
<div class="it-skill" data-bar><label>Python / Go <span>80%</span></label><div class="it-track"><i data-w="80%"></i></div></div>
</div>
<div class="it-sblock" data-rv>
<h3>// languages</h3>
<ul class="it-langs"><li>Estonian <b>Native</b></li><li>English <b>C1</b></li><li>Russian <b>B2</b></li></ul>
</div>
</aside>
<main class="it-main">
<section class="it-block" data-rv>
<h2>Technical profile</h2>
<p>Senior IT systems engineer with 12 years keeping critical infrastructure online. I design, automate and harden cloud and on-prem systems — and I'm the person on call when things break at 3am. Strong bias for automation, observability and clean runbooks.</p>
<div class="it-stats">
<div class="it-stat" data-count="99"><b>0</b><span>% uptime maintained</span></div>
<div class="it-stat" data-count="350"><b>0</b><span>servers managed</span></div>
<div class="it-stat" data-count="12"><b>0</b><span>years experience</span></div>
</div>
</section>
<section class="it-block" data-rv>
<h2>Work experience</h2>
<div class="it-exp"><div class="it-exp-top"><b>Senior Systems Engineer</b><span>2020 — Present</span></div><em>Wise · Tallinn</em><p>Own the Kubernetes platform serving 16M customers. Led the migration from VMs to containers and cut infrastructure cost 38%.</p></div>
<div class="it-exp"><div class="it-exp-top"><b>DevOps Engineer</b><span>2016 — 2020</span></div><em>Pipedrive · Tartu</em><p>Built CI/CD pipelines and infrastructure-as-code with Terraform. Reduced deployment time from hours to minutes.</p></div>
<div class="it-exp"><div class="it-exp-top"><b>System Administrator</b><span>2013 — 2016</span></div><em>Telia Eesti</em><p>Managed Linux fleet, networking and backups for a telecom data center. Maintained 99.95% service availability.</p></div>
</section>
<section class="it-block" data-rv>
<h2>Infrastructure projects</h2>
<div class="it-projects">
<div class="it-proj"><div class="it-proj-h"><h4>Zero-downtime K8s migration</h4><span class="it-badge">Cloud</span></div><p>Migrated 200+ services from VMs to a self-healing Kubernetes cluster with no customer-facing downtime.</p><div class="it-tags"><span>Kubernetes</span><span>Helm</span><span>ArgoCD</span></div></div>
<div class="it-proj"><div class="it-proj-h"><h4>Observability stack</h4><span class="it-badge">Monitoring</span></div><p>Rolled out Prometheus + Grafana + Loki, cutting mean-time-to-detect from 25 min to under 3.</p><div class="it-tags"><span>Prometheus</span><span>Grafana</span><span>Loki</span></div></div>
<div class="it-proj"><div class="it-proj-h"><h4>IaC platform</h4><span class="it-badge">Automation</span></div><p>Codified all infrastructure in Terraform modules, enabling reproducible environments in minutes.</p><div class="it-tags"><span>Terraform</span><span>AWS</span><span>GitOps</span></div></div>
<div class="it-proj"><div class="it-proj-h"><h4>Backup & DR</h4><span class="it-badge">Resilience</span></div><p>Designed cross-region backup and disaster-recovery with tested 15-minute RTO.</p><div class="it-tags"><span>Velero</span><span>S3</span><span>Runbooks</span></div></div>
</div>
</section>
<section class="it-block" data-rv>
<h2>Incident & problem solving</h2>
<div class="it-incidents">
<div class="it-inc"><span class="it-inc-sev it-sev-crit">P1</span><div><b>Production database failover</b><p>Diagnosed a cascading replication failure during peak load, promoted a healthy replica and restored service in 8 minutes. Wrote the post-mortem and automation to prevent recurrence.</p></div></div>
<div class="it-inc"><span class="it-inc-sev it-sev-high">P2</span><div><b>DDoS mitigation</b><p>Detected and absorbed a 40Gbps volumetric attack using rate-limiting and CDN rules with zero downtime for customers.</p></div></div>
<div class="it-inc"><span class="it-inc-sev it-sev-med">P3</span><div><b>Memory-leak root cause</b><p>Traced a slow memory leak across microservices to a misconfigured connection pool, patched it and added an alert.</p></div></div>
</div>
</section>
<section class="it-block" data-rv>
<h2>Technology stack</h2>
<div class="it-stack">
<div class="it-stack-cat"><h4>Cloud & infra</h4><div class="it-tags"><span>AWS</span><span>GCP</span><span>Kubernetes</span><span>Docker</span><span>Terraform</span></div></div>
<div class="it-stack-cat"><h4>Observability</h4><div class="it-tags"><span>Prometheus</span><span>Grafana</span><span>Loki</span><span>PagerDuty</span></div></div>
<div class="it-stack-cat"><h4>Languages</h4><div class="it-tags"><span>Bash</span><span>Python</span><span>Go</span><span>SQL</span></div></div>
</div>
</section>
<section class="it-block" data-rv>
<h2>Certifications</h2>
<ul class="it-certs">
<li><b>CKA — Certified Kubernetes Administrator</b><span>CNCF · 2024</span></li>
<li><b>AWS Solutions Architect — Professional</b><span>Amazon · 2023</span></li>
<li><b>Red Hat Certified Engineer (RHCE)</b><span>Red Hat · 2021</span></li>
</ul>
</section>
<section class="it-block it-cta" data-rv>
<h2>Available for hire</h2>
<p>Looking for senior SRE / platform engineering roles. Let's talk infrastructure.</p>
<div class="it-cta-row"><a class="it-btn" href="mailto:viktor.saar@protonmail.com">Email me</a><a class="it-btn it-btn-out" href="#" download>Download CV</a></div>
</section>
<footer class="it-foot">$ echo "© 2026 Viktor Saar" · Made with <a href="https://convertatlas.org" target="_blank" rel="noopener">convertatlas.org</a></footer>
</main>
</div>*{box-sizing:border-box}
body{margin:0;background:#0b0f14;color:#c9d4e0;font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;line-height:1.6}
a{text-decoration:none;color:inherit}
.it-mono{font-family:ui-monospace,'JetBrains Mono',monospace}
.it-shell{max-width:1120px;margin:30px auto;display:grid;grid-template-columns:320px 1fr;background:#0f151c;border:1px solid #1c2630;border-radius:18px;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.it-side{background:#0b0f14;border-right:1px solid #1c2630;padding:34px 26px}
.it-prof{text-align:center;padding-bottom:22px;border-bottom:1px solid #1c2630}
.it-av{width:90px;height:90px;border-radius:18px;background:linear-gradient(135deg,#10b981,#06b6d4);color:#04110d;display:grid;place-items:center;font-size:2rem;font-weight:800;margin:0 auto 14px}
.it-prof h1{font-size:1.4rem;margin:0 0 4px;color:#fff}
.it-role{color:#34d399;font-size:.9rem;margin:0 0 12px}
.it-avail{display:inline-flex;align-items:center;gap:7px;background:rgba(16,185,129,.1);border:1px solid rgba(16,185,129,.3);color:#6ee7b7;border-radius:999px;padding:5px 13px;font-size:.78rem;margin-bottom:16px}
.it-avail i{width:7px;height:7px;border-radius:50%;background:#10b981;animation:itP 2s infinite}
@keyframes itP{0%{box-shadow:0 0 0 0 rgba(16,185,129,.5)}70%{box-shadow:0 0 0 7px rgba(16,185,129,0)}}
.it-dl{display:block;background:#10b981;color:#04110d;font-weight:700;font-size:.86rem;padding:10px;border-radius:9px;transition:.18s}
.it-dl:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(16,185,129,.3)}
.it-sblock{padding:20px 0;border-bottom:1px solid #1c2630}
.it-sblock:last-child{border-bottom:0}
.it-sblock h3{font-family:ui-monospace,monospace;font-size:.78rem;letter-spacing:.06em;color:#34d399;margin:0 0 14px}
.it-contact{list-style:none;padding:0;margin:0}
.it-contact li{display:flex;align-items:center;gap:11px;padding:5px 0;font-size:.86rem;word-break:break-all}
.it-contact span{font-family:ui-monospace,monospace;width:26px;text-align:center;color:#34d399}
.it-skill{margin-bottom:13px}
.it-skill label{display:flex;justify-content:space-between;font-size:.84rem;margin-bottom:6px}
.it-skill label span{color:#34d399;font-family:ui-monospace,monospace;font-size:.78rem}
.it-track{height:6px;background:#1a2530;border-radius:3px;overflow:hidden}
.it-track i{display:block;height:100%;width:0;background:linear-gradient(90deg,#10b981,#06b6d4);border-radius:3px;transition:width 1.1s cubic-bezier(.2,.7,.2,1)}
.it-langs{list-style:none;padding:0;margin:0}
.it-langs li{display:flex;justify-content:space-between;font-size:.86rem;padding:5px 0}
.it-langs b{color:#fff;font-weight:600}
.it-main{padding:40px 42px}
.it-block{margin-bottom:34px}
.it-block h2{font-size:1.2rem;color:#fff;margin:0 0 16px;padding-bottom:10px;border-bottom:1px solid #1c2630;position:relative}
.it-block h2::before{content:"# ";color:#34d399;font-family:ui-monospace,monospace}
.it-block>p{color:#8c9aab;margin:0 0 18px}
.it-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.it-stat{background:#0b0f14;border:1px solid #1c2630;border-radius:12px;padding:18px;text-align:center}
.it-stat b{display:block;font-size:1.9rem;font-weight:800;color:#34d399}
.it-stat span{color:#8c9aab;font-size:.8rem}
.it-exp{padding-left:18px;border-left:2px solid #1c2630;margin-bottom:18px;position:relative}
.it-exp::before{content:"";position:absolute;left:-7px;top:5px;width:12px;height:12px;border-radius:50%;background:#10b981;border:3px solid #0f151c}
.it-exp-top{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px}
.it-exp-top b{font-size:1.02rem;color:#e8eef5}
.it-exp-top span{color:#34d399;font-family:ui-monospace,monospace;font-size:.8rem}
.it-exp em{color:#22d3ee;font-style:normal;font-size:.88rem}
.it-exp p{color:#8c9aab;font-size:.9rem;margin:6px 0 0}
.it-projects{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.it-proj{background:#0b0f14;border:1px solid #1c2630;border-radius:12px;padding:18px;transition:.2s}
.it-proj:hover{transform:translateY(-3px);border-color:#10b981}
.it-proj-h{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.it-proj-h h4{margin:0;font-size:1rem;color:#e8eef5}
.it-badge{font-family:ui-monospace,monospace;font-size:.68rem;background:rgba(6,182,212,.12);color:#67e8f9;border-radius:6px;padding:3px 8px}
.it-proj p{color:#8c9aab;font-size:.86rem;margin:0 0 10px}
.it-tags{display:flex;flex-wrap:wrap;gap:6px}
.it-tags span{font-family:ui-monospace,monospace;font-size:.72rem;color:#6ee7b7;background:rgba(16,185,129,.08);border-radius:5px;padding:3px 8px}
.it-incidents{display:grid;gap:12px}
.it-inc{display:flex;gap:14px;background:#0b0f14;border:1px solid #1c2630;border-radius:12px;padding:16px;transition:.2s}
.it-inc:hover{border-color:#334155}
.it-inc-sev{font-family:ui-monospace,monospace;font-weight:800;font-size:.78rem;padding:5px 10px;border-radius:7px;height:fit-content}
.it-sev-crit{background:rgba(239,68,68,.15);color:#f87171}
.it-sev-high{background:rgba(245,158,11,.15);color:#fbbf24}
.it-sev-med{background:rgba(59,130,246,.15);color:#60a5fa}
.it-inc b{color:#e8eef5;font-size:.98rem}
.it-inc p{color:#8c9aab;font-size:.86rem;margin:5px 0 0}
.it-stack{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.it-stack-cat{background:#0b0f14;border:1px solid #1c2630;border-radius:12px;padding:18px}
.it-stack-cat h4{margin:0 0 12px;font-size:.92rem;color:#e8eef5}
.it-certs{list-style:none;padding:0;margin:0}
.it-certs li{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;padding:12px 16px;background:#0b0f14;border:1px solid #1c2630;border-radius:10px;margin-bottom:8px}
.it-certs b{color:#e8eef5;font-size:.92rem}.it-certs span{color:#34d399;font-family:ui-monospace,monospace;font-size:.8rem}
.it-cta{background:#0b0f14;border:1px solid #1c2630;border-radius:14px;padding:24px}
.it-cta h2{border:0;padding:0}
.it-cta p{color:#8c9aab;margin:0 0 16px}
.it-cta-row{display:flex;gap:12px;flex-wrap:wrap}
.it-btn{display:inline-block;background:#10b981;color:#04110d;font-weight:700;font-size:.88rem;padding:11px 22px;border-radius:9px;transition:.18s}
.it-btn:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(16,185,129,.25)}
.it-btn-out{background:transparent;border:1px solid #2c3a48;color:#c9d4e0}.it-btn-out:hover{border-color:#10b981;color:#34d399}
.it-foot{font-family:ui-monospace,monospace;padding-top:20px;border-top:1px solid #1c2630;color:#5b6b7c;font-size:.82rem;text-align:center}
.it-foot a{color:#34d399}
@media(max-width:840px){.it-shell{grid-template-columns:1fr;margin:0;border-radius:0}.it-projects,.it-stack,.it-stats{grid-template-columns:1fr}.it-main{padding:30px 24px}}
[data-rv]{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease}[data-rv].in{opacity:1;transform:none}var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){e.target.classList.add('in');if(e.target.hasAttribute('data-bar')){e.target.querySelectorAll('[data-w]').forEach(function(b){b.style.width=b.getAttribute('data-w')})}if(e.target.hasAttribute('data-count')){var t=+e.target.getAttribute('data-count'),el=e.target,s=null;requestAnimationFrame(function st(ts){if(!s)s=ts;var p=Math.min((ts-s)/1500,1);el.firstChild.textContent=Math.floor((1-Math.pow(1-p,3))*t).toLocaleString();if(p<1)requestAnimationFrame(st)})}io.unobserve(e.target)}})},{threshold:.18});
document.querySelectorAll('[data-rv],[data-bar],[data-count]').forEach(function(el){io.observe(el)});.html file with all CDN links included, or copy the HTML and drop it into your project.What's included in this template
The Viktor Saar — IT Specialist CV Portfolio is a complete portfolio & resume design with realistic demo content — ready to preview, copy or download as a single responsive HTML file. Key features:
- Technical profile sidebar + Download CV
- Animated IT skill bars
- Infrastructure projects grid
- Severity-tagged incident examples
- Technology stack & certifications
- Dark terminal-inspired theme
How to use it
Open the live preview above to see the full design at desktop, tablet and mobile widths. When you are happy with it, use Download to save a single it-specialist-cv-portfolio.html file, or Copy to grab the source. All required libraries load from public CDNs, so the file works the moment you open it — just replace the demo content with your own and publish.