2026-08-24 · 1 хв #laravel #livewire #php
Перебудова цього сайту через сім років
Попередня версія цього сайту була одним Blade-файлом з інлайновим CSS, Gravatar і списком посилань. Написана у 2019-му, задеплоєна один раз і залишена на сім років. Своє завдання вона виконувала: хто шукав моє ім'я — знаходив сторінку, де написано, чим я займаюсь.
Виконувати його добре вона перестала. Список стека закінчувався на Laravel 6. Верстка припускала десктоп. І сторінка нічого не говорила про те, як я насправді працюю.
Що прийшло на зміну
Та сама ідея, зроблена як належить:
- PHP 8.5 і Laravel 13 — бо краще працювати на тій версії, яку радиш іншим.
- Livewire 4 для сторінок, переходи через
wire:navigate. Єдиний по-справжньому стейтфул екран — список нотаток, де пошук і фільтр за тегами живуть в URL, тож відфільтрований вигляд лишається придатним для посилання. - Tailwind 4 з конфігурацією в CSS. Жодного
tailwind.config.js— токени є@theme-змінними в одному файлі стилів. - Жодної бази даних. Статті — це markdown-файли в репозиторії, резюме — PHP-масив; і те, й інше парситься один раз і кешується за ключем, побудованим з часу зміни файлу. Нема чого бекапити, нема чого мігрувати, і жодного запиту на критичному шляху.
Чому файли, а не CMS
Адмінка для сайту з одним автором — це багато рухомих частин, які треба захищати й підтримувати заради можливості писати в браузерному текстовому полі. Контент у репозиторії означає редактор, яким я вже користуюсь, рев'ю через diff і деплой, що зводиться до push.
Компроміс реальний: не поредагуєш із телефона. Для сайту, який публікує кілька статей на рік, це не те обмеження, під яке варто оптимізувати.
Обидві мови
Кожна сторінка доступна на /en і /uk. Статті існують тими мовами, якими їх написано — ця є обома — а відсутній переклад показується наявною мовою з приміткою замість 404. Шрифт заголовків довелося змінити під час перебудови: той, який я обрав спершу, Archivo, не має кирилиці на Google Fonts, і кожен український заголовок тихо падав би на системний шрифт.
Усе це лежить на GitHub.