CV Hub
Resume as Code. Рассматривай свою профессиональную идентичность как воспроизводимую и версионируемую систему.
Обзор
CV Hub — это не шаблон портфолио. Это система. Проект переопределяет резюме как инженерный артефакт — версионируемый, воспроизводимый и деплоимый. Вместо поддержки разрозненных представлений (LinkedIn, PDF, Notion, сайты-портфолио) CV Hub вводит единый декларативный источник правды — YAML-файл, который управляет всем пайплайном. В результате получается полностью автоматизированная система, где любое изменение консистентно распространяется на все форматы и профили.
Проблема
Традиционные резюме сломаны с точки зрения системного подхода. Они: - дублируются на разных платформах - синхронизируются вручную - зависят от контекста (DevOps, Backend, GameDev) - не имеют версионирования - не воспроизводимы Это приводит к рассинхронизации, ошибкам и постоянным затратам на поддержку. С инженерной точки зрения это похоже на работу с несколькими несинхронизированными окружениями без единого источника правды.
Решение
CV Hub применяет инфраструктурные принципы к персональным данным. Базовая идея: описал один раз → сгенерировал всё → задеплоил. Один YAML-файл превращается в: - веб-сайт - PDF, DOCX и TXT - несколько версий резюме под разные роли - версионируемый профиль в Git Система устраняет дублирование и гарантирует консистентность по умолчанию.
Multi-profile система
Архитектура base + delta
Ролевые версии резюме строятся через двухуровневую модель: базовый CV + дельты. Это позволяет точно управлять позиционированием без дублирования данных.
Что было сделано
- Static-first архитектура без client-side JavaScript по умолчанию
- YAML как единый источник правды для всех данных
- Multi-profile система (DevOps, GameDev и др.) через детерминированный merge
- Мультиязычность с fallback-цепочкой
- Автоматическая генерация документов (PDF через Playwright, DOCX/TXT через docx.js)
- Переключение тем через URL с возможностью шаринга
- Полностью автоматизированный CI/CD на GitHub Actions
- Динамическая конфигурация окружения (siteUrl из GITHUB_REPOSITORY)
Архитектура
Система построена как детерминированный пайплайн. Слой данных: - YAML-файлы (base + profile delta) Слой обработки: - merge.mjs → формирует нормализованные артефакты - генераторы документов → PDF/DOCX/TXT Слой представления: - Astro → статическая генерация HTML Деплой: - GitHub Actions → immutable build → GitHub Pages Нет runtime-сервера. Нет скрытого состояния. Любой результат воспроизводим.
Инженерные решения
- Astro вместо SPA для устранения лишнего runtime и hydration
- Статическая генерация для предсказуемости и производительности
- YAML вместо CMS для полного контроля и версионирования
- URL как источник состояния вместо localStorage
- Явные delta-файлы вместо неявных переопределений
Темы
DevOps-подход
Проект рассматривает резюме как артефакт сборки. Ключевые принципы: - версионирование через Git - immutable сборки - автоматизация CI/CD - независимость от окружения - отсутствие runtime-зависимостей Каждый коммит создаёт полностью консистентное состояние системы.
Компромиссы
- Нет CMS — осознанный выбор ради контроля
- Нет backend — полностью статическая архитектура
- Ручное создание delta-файлов — явность важнее магии
- Ограниченная runtime-гибкость в пользу детерминизма
Результат
- Одно изменение пересобирает все форматы и профили
- Статический деплой без инфраструктурных затрат
- Fork-ready система без конфигурации
- Lighthouse: 100 Performance / 100 Accessibility / 100 SEO
- Полностью воспроизводимый результат
Выводы
CV Hub показывает, что даже такие области, как резюме, выигрывают от инженерного подхода. Применение принципов системного дизайна — единого источника правды, детерминированных пайплайнов и автоматизации — превращает статический документ в масштабируемую систему. Этот подход применим к любым задачам, где важны консистентность данных и мультиформатный вывод.