Правки по аудиту сайта: og-теги, честный whoami, prerender, переименование игры

- og:title/description/image + canonical + twitter:card в index.html,
  нарисован assets/og.png (1200x630, тема сайта). CSP не трогали — картинка
  того же происхождения.
- Переписан текст «обо мне» и формулировка про текущую работу в
  Уралэнергоаква (убраны двусмысленности "неофициально возглавлял" и
  "продолжаю искать"), Go убран из title/skills-тега как отдельная
  "изучаю" пометка — теперь просто в стеке, раз есть реальный Go-код в
  home_automatization.
- resume.js/projects.js больше не перерисовывают контент через JS при
  языке по умолчанию (ru) — index.html/projects.html содержат готовый
  серверный HTML, JS перерисовывает только при переключении на EN. Раньше
  весь текст резюме подгружался пустым в #resume-root, curl без JS ничего
  не видел.
- Добавлены кнопка «скачать резюме (PDF)» и ссылка на git.cactoz.su в
  первый экран резюме.
- home_automatization на /projects честно помечен «в разработке» вместо
  описания как готового продукта.
- Игра переименована из BattleCity (товарный знак Namco) в ./tanks,
  убрана из основного меню во все страницы — ссылка теперь только в
  подвале страницы whoami.
This commit is contained in:
2026-08-10 20:40:03 +05:00
parent 6f702eafcb
commit d4655bda2b
12 changed files with 323 additions and 35 deletions
+43 -4
View File
@@ -5,6 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ls projects/ — cacto</title>
<meta name="description" content="Проекты Гаммеля Дмитрия: home automation platform и этот сайт." />
<link rel="canonical" href="https://cactoz.su/projects" />
<link rel="icon" type="image/svg+xml" href="/assets/cactus-logo.svg" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
@@ -24,18 +25,56 @@
<ul class="nav-links">
<li><a href="/">whoami</a></li>
<li><a href="/projects" aria-current="page">ls projects/</a></li>
<li><a href="/game">./battlecity</a></li>
<li><button id="lang-toggle" class="lang-btn" type="button">EN</button></li>
</ul>
</div>
</header>
<div class="container">
<!--
Статика ниже — серверный RU-рендер того же содержимого, что генерирует
frontend/js/projects.js (DATA.ru). projects.js не перерисовывает при
lang=ru — только при переключении на EN. При правке текста меняйте оба
места: DATA.ru в projects.js и разметку ниже.
-->
<main>
<section>
<h1 id="projects-heading" class="page-heading"></h1>
<p id="projects-subheading" class="page-subheading"></p>
<ul id="project-list" class="project-grid"></ul>
<h1 id="projects-heading" class="page-heading">ls projects/</h1>
<p id="projects-subheading" class="page-subheading">Пара вещей, которые я собрал сам, от идеи до продакшена.</p>
<ul id="project-list" class="project-grid">
<li class="project-card">
<div class="project-card__header">
<div class="project-card__name"><span class="project-card__perms">drwxr-xr-x</span> home_automatization</div>
<a href="https://git.cactoz.su/cacto/home_automatization" target="_blank" rel="noopener">открыть →</a>
</div>
<p class="project-card__desc">В разработке: архитектура и ТЗ готовы, микросервисы на Go и Laravel собираются. Первая зона — гроубокс (полив, свет, климат), дальше — весь дом.</p>
<ul class="tag-list">
<li class="tag">в разработке</li>
<li class="tag">Go</li>
<li class="tag">Laravel</li>
<li class="tag">Docker</li>
<li class="tag">RabbitMQ</li>
<li class="tag">ClickHouse</li>
<li class="tag">gRPC</li>
<li class="tag">MQTT</li>
</ul>
</li>
<li class="project-card">
<div class="project-card__header">
<div class="project-card__name"><span class="project-card__perms">drwxr-xr-x</span> cactoz.su</div>
<a href="https://git.cactoz.su/cacto/cactoz.su" target="_blank" rel="noopener">открыть →</a>
</div>
<p class="project-card__desc">Личный сайт-визитка: резюме, проекты и мультиплеерная мини-игра про танки. Тема — Матрица.</p>
<ul class="tag-list">
<li class="tag">HTML/CSS/JS</li>
<li class="tag">C++</li>
<li class="tag">uWebSockets</li>
<li class="tag">Quintus.js</li>
<li class="tag">nginx</li>
<li class="tag">Docker</li>
</ul>
</li>
</ul>
</section>
</main>
</div>