site: multi-page structure with shared nav; rework services, keys, contact
This commit is contained in:
parent
03f38ab908
commit
82fc1c6e17
12 changed files with 143 additions and 151 deletions
27
views/contact.erb
Normal file
27
views/contact.erb
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<%== erb :'partials/_site_nav', layout: false %>
|
||||
|
||||
<section class="section">
|
||||
<h2>Contact</h2>
|
||||
|
||||
<%== erb :'partials/_contact_form', layout: false %>
|
||||
|
||||
<dl class="kv contact-direct">
|
||||
<dt>Email</dt><dd><a href="mailto:ie@asxp.io">ie@asxp.io</a></dd>
|
||||
<dt>Telegram</dt><dd><a href="https://t.me/ie_asxpi">t.me/ie_asxpi</a></dd>
|
||||
<dt>Phone</dt><dd class="mono">+995 595 026 471</dd>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<section class="section legal">
|
||||
<h2>For invoices and contracts</h2>
|
||||
<p class="legal-intro">Work is invoiced through my Individual Entrepreneur (ინდ. მეწარმე) registered in Georgia.</p>
|
||||
<dl class="kv">
|
||||
<dt>Legal name</dt><dd>IE Sergei Poljanski</dd>
|
||||
<dt>Latin form</dt><dd class="mono">SERGEI POLJANSKI</dd>
|
||||
<dt>Georgian</dt><dd>ინდ. მეწარმე სერგეი პოლჯანსკი</dd>
|
||||
<dt>Legal form</dt><dd>Individual Entrepreneur (Georgia)</dd>
|
||||
<dt>Tax ID</dt><dd class="mono">304813343</dd>
|
||||
<dt>Registered</dt><dd>2026-05-04</dd>
|
||||
<dt>Address</dt><dd>Ilia and Nino Nakashidze St, N 1, Building N3, Apt N3, Krtsanisi, Tbilisi, Georgia</dd>
|
||||
</dl>
|
||||
</section>
|
||||
|
|
@ -1,54 +1,26 @@
|
|||
<%== erb :'partials/_site_nav', layout: false %>
|
||||
|
||||
<div class="header">
|
||||
<img src="/logo.svg" alt="IE Sergei Poljanski" class="monogram" width="56" height="56" />
|
||||
<h1>Sergei Poljanski</h1>
|
||||
<p class="tagline">DevOps & infrastructure engineering — Tbilisi, Georgia.</p>
|
||||
<p class="tagline">DevOps & infrastructure engineering.</p>
|
||||
</div>
|
||||
|
||||
<p class="home-intro">
|
||||
I build and operate infrastructure for clients worldwide.
|
||||
<a href="/contact">Get in touch</a>, or verify me via <a href="/keys">keys</a>.
|
||||
</p>
|
||||
|
||||
<section class="section">
|
||||
<h2>Services</h2>
|
||||
<ul class="services">
|
||||
<li>IT infrastructure management</li>
|
||||
<li>System administration</li>
|
||||
<li>DevOps engineering</li>
|
||||
<li>Software deployment & configuration</li>
|
||||
<li>CI/CD pipeline development</li>
|
||||
<li>Container orchestration (Docker, Kubernetes)</li>
|
||||
<li>Infrastructure as Code (Terraform, Ansible)</li>
|
||||
<li>Monitoring & observability (Prometheus, Grafana, Loki)</li>
|
||||
<li>IT infrastructure management <span class="svc-tools">Hetzner Cloud · bare metal</span></li>
|
||||
<li>System administration <span class="svc-tools">Linux · NixOS · Debian</span></li>
|
||||
<li>Software development <span class="svc-tools">Lua · Ruby</span></li>
|
||||
<li>Networking <span class="svc-tools">Traefik · DNS · WireGuard</span></li>
|
||||
<li>CI/CD pipeline development <span class="svc-tools">GitHub Actions · Forgejo Actions</span></li>
|
||||
<li>Container orchestration <span class="svc-tools">Docker · Kubernetes</span></li>
|
||||
<li>Infrastructure as Code <span class="svc-tools">Terraform · Ansible</span></li>
|
||||
<li>Monitoring & observability <span class="svc-tools">Prometheus · Grafana · Loki</span></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<h2>Keys</h2>
|
||||
<pre id="myPGP">gpg --recv-keys 85F7AFEDAB7D97BE667F99F24F8851660FA4121B</pre>
|
||||
<pre id="mySSH">ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMZ+/5F7SxdTVW47iiStLpGK77oWfR5NgaK4tTSR/aVB ie+2026@asxp.io</pre>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<h2>Contact</h2>
|
||||
|
||||
<%== erb :'partials/_contact_form', layout: false %>
|
||||
|
||||
<dl class="kv contact-direct">
|
||||
<dt>Email</dt><dd><a href="mailto:ie@asxp.io">ie@asxp.io</a></dd>
|
||||
<dt>Telegram</dt><dd><a href="https://t.me/ie_asxpi">t.me/ie_asxpi</a></dd>
|
||||
<dt>Phone</dt><dd class="mono">+995 595 026 471</dd>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<section class="section legal">
|
||||
<h2>For invoices and contracts</h2>
|
||||
<p class="legal-intro">Work is invoiced through my Individual Entrepreneur (ინდ. მეწარმე) registered in Georgia.</p>
|
||||
<dl class="kv">
|
||||
<dt>Legal name</dt><dd>IE Sergei Poljanski</dd>
|
||||
<dt>Latin form</dt><dd class="mono">SERGEI POLJANSKI</dd>
|
||||
<dt>Georgian</dt><dd>ინდ. მეწარმე სერგეი პოლჯანსკი</dd>
|
||||
<dt>Legal form</dt><dd>Individual Entrepreneur (Georgia)</dd>
|
||||
<dt>Tax ID</dt><dd class="mono">304813343</dd>
|
||||
<dt>Registered</dt><dd>2026-05-04</dd>
|
||||
<dt>Address</dt><dd>Ilia and Nino Nakashidze St, N 1, Building N3, Apt N3, Krtsanisi, Tbilisi, Georgia</dd>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<script src="/copyPGP.js"></script>
|
||||
<script src="/copySSH.js"></script>
|
||||
|
|
|
|||
21
views/keys.erb
Normal file
21
views/keys.erb
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<%== erb :'partials/_site_nav', layout: false %>
|
||||
|
||||
<section class="section">
|
||||
<div class="key-block">
|
||||
<div class="key-head">
|
||||
<span class="key-label">PGP</span>
|
||||
<a class="key-file" href="/pgp.pub" download>pgp.pub ↓</a>
|
||||
</div>
|
||||
<pre data-copy="85F7AFEDAB7D97BE667F99F24F8851660FA4121B">85F7 AFED AB7D 97BE 667F 99F2 4F88 5166 0FA4 121B</pre>
|
||||
</div>
|
||||
|
||||
<div class="key-block">
|
||||
<div class="key-head">
|
||||
<span class="key-label">SSH</span>
|
||||
<a class="key-file" href="/id_ed25519.pub" download>id_ed25519.pub ↓</a>
|
||||
</div>
|
||||
<pre data-copy="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMZ+/5F7SxdTVW47iiStLpGK77oWfR5NgaK4tTSR/aVB ie+2026@asxp.io">ssh-ed25519 AAAA…R/aVB ie+2026@asxp.io</pre>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<script src="/copy.js"></script>
|
||||
|
|
@ -12,16 +12,18 @@
|
|||
<div class="form-error form-error-base"><%= errors[:base] %></div>
|
||||
<% end %>
|
||||
|
||||
<div class="field">
|
||||
<label for="cf-name">Name</label>
|
||||
<input id="cf-name" type="text" name="name" maxlength="100" required value="<%= values[:name] %>" />
|
||||
<% if errors[:name] %><span class="form-error"><%= errors[:name] %></span><% end %>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="field">
|
||||
<label for="cf-name">Name</label>
|
||||
<input id="cf-name" type="text" name="name" maxlength="100" required value="<%= values[:name] %>" />
|
||||
<% if errors[:name] %><span class="form-error"><%= errors[:name] %></span><% end %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label for="cf-email">Email</label>
|
||||
<input id="cf-email" type="email" name="email" maxlength="200" required value="<%= values[:email] %>" />
|
||||
<% if errors[:email] %><span class="form-error"><%= errors[:email] %></span><% end %>
|
||||
<div class="field">
|
||||
<label for="cf-email">Email</label>
|
||||
<input id="cf-email" type="email" name="email" maxlength="200" required value="<%= values[:email] %>" />
|
||||
<% if errors[:email] %><span class="form-error"><%= errors[:email] %></span><% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
|
|
|
|||
8
views/partials/_site_nav.erb
Normal file
8
views/partials/_site_nav.erb
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<header class="site-header">
|
||||
<a class="site-title" href="/">asxp.io</a>
|
||||
<nav>
|
||||
<a href="https://blog.asxp.io">blog</a>
|
||||
<a href="/keys" class="<%= 'active' if request.path == '/keys' %>">keys</a>
|
||||
<a href="/contact" class="<%= 'active' if request.path == '/contact' %>">contact</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<div class="header">
|
||||
<h1>Thanks — your message is on its way.</h1>
|
||||
<h1>Thanks! Your message is on its way.</h1>
|
||||
<span class="ka">A confirmation copy has been sent to your inbox.</span>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue