Все кейсы

Этот сайт

Сделан по тем же правилам, что я предлагаю клиентам: открывается сразу, не зависит от чужих сервисов, тексты и кейсы правятся без программиста.

Зачем он в кейсах

Сайт, который обещает клиенту скорость, не имеет права грузиться медленно. Проще всего это показать на нём самом.

Как устроено

Без фреймворка-комбайна и UI-кита. Свои стили, свои токены. Сайт является кейсом — он не должен выглядеть собранным из чужих компонентов.

Двуязычность заложена в маршруты. /ru/ и /en/, hreflang на каждой странице, ни одной захардкоженной строки в компонентах: весь текст идёт через словари, английская версия не может отстать незаметно.

Анимации только нативные. Прокрутка двигает CSS scroll-driven animations, переходы между страницами — View Transitions, схемы рисуются через stroke-dashoffset. Ни одной анимационной библиотеки: весь JavaScript страницы — около двух килобайт, и это конфиг-демо с главной да отправка формы.

Заявки уходят на приёмник в России. Первичный сбор персональных данных россиян должен происходить на серверах в РФ, а статика живёт на моём кластере за рубежом. Поэтому форма постит на отдельный сервис, а он раскладывает заявку в базу, на почту и в Telegram — один канал был бы единой точкой отказа.

Как устроено

Как устроен этот сайт: репозиторий, сборка, статика за рубежом и приёмник заявок в РоссииРепозиторийкейсы и заметки — markdown · словари ru и en · публикация = коммитСборка Astro → статикаHTML и CSS, около 2 КБ JS на страницу · кластер за рубежом: Helm, ArgoCDБраузер посетителяанимации — CSS scroll-driven и View Transitions, без библиотекПриёмник заявокотдельный сервис на площадке в РФ · без JS форма уходит обычным POSTБазане отвалится никогдаПочтаосновной каналTelegramбыстрый, но нестабильныйКак устроен этот сайт: репозиторий, сборка, статика за рубежом и приёмник заявок в РоссииРепозиторийкейсы и заметки — markdownсловари ru и en · публикация = коммитСборка Astro → статикаHTML и CSS, около 2 КБ JS на страницукластер за рубежом: Helm, ArgoCDБраузер посетителяанимации — CSS scroll-driven и ViewTransitions, без библиотекПриёмник заявокотдельный сервис на площадке в РФбез JS форма уходит обычным POSTБазане отвалится никогдаПочтаосновной каналTelegramбыстрый, но нестабильный

Почему так, а не иначе — контент в репозитории, а не в CMS

Очевидное решение для сайта с кейсами и блогом — взять CMS: админка, визуальный редактор, публикация без разработчика. Именно это я обычно и делаю клиентам.

Здесь я сделал наоборот: кейсы и заметки лежат markdown-файлами в репозитории, публикация — коммит. Редактор у этого сайта один, и он разработчик; админка обслуживала бы одного человека, который спокойно пишет в редакторе кода.

Цена честная: чтобы поправить запятую, нужен git. В обмен — ноль серверной части, ноль обновлений безопасности, полная история правок и возможность откатить любую.

Другие кейсы

Кейсы и личные проекты