Створення самостійно розміщеного резюме з використанням Astro, SQLite та локальної LLM
Цей сайт замінив встановлення WordPress на щось більш лаконічне та повністю під моїм контролем: один контейнер Astro (SSR), SQLite як єдине джерело правди та жодних сторонніх сервісів у шляху запиту.
Рухомі частини
- Astro + Node adapter рендерує кожну публічну сторінку на сервері, причому весь CV керований через SQLite. Теми світло/темно, три мови (EN/RU/UK) та таблиця стилів для друку, яка слугує також завантажуваним PDF.
- Адмін лише за Passkey. Жодних паролів — WebAuthn з кількома обліковими записами та аварійний CLI для реєстрації нового ключа, якщо всі втрачено.
- Щоденний пайплайн. Cron job перелічує мої приватні репозиторії GitHub, і для тих, які змінилися, він просить локальну модель Gemma (Ollama) підготувати короткий фактичний опис. Нові репо стають неопублікованими чернетками — нічого приватного не виходить у публічний доступ, доки я вручну його не опублікую.
- Аналітика першої сторони. Відвідування геолокатуються та розв'язуються за ASN за допомогою локальної бази даних MaxMind (без зовнішніх викликів), з банером згоди GDPR, який блокує GA та клієнтський бікон.
Чому це важливо
LLM та синхронізація GitHub повністю відбуваються в офлайн пакетному шляху — якщо модель недоступна, сайт цього не помічає, він просто продовжує обслуговувати дані з SQLite і повторює збагачення наступного дня. Цей розділення — уся суть: цікава автоматизація ніколи не знаходиться між відвідувачем та сторінкою.
Більше дописів про інфраструктуру, що лежить в основі цього — BGP, транспорт, моніторинг — будуть пізніше.
Прозорість: більшість дописів тут створено за допомогою ШІ, а неанглійські версії перекладені локальною LLM і вичитані. Помітили помилку? Напишіть мені.