Чем я работаю

Здесь то, чем действительно пользуюсь каждый день, — тот же набор, на котором собран этот сайт. Без «топ-10 инструментов 2026 года»: если чего-то нет в списке, значит я этим не работаю.

Чем пишу сайты

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

Next.js и TypeScript

Строгая типизация и статические страницы: сайт отдаётся готовым HTML, а не собирается скриптами в браузере — это важно и для скорости, и для ИИ-ответов.

PostgreSQL и Prisma

База для заявок, расчётов и отчётов. Деньги — точным числовым типом, сырые данные — в JSON.

CSS-модули поверх токенов темы

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

Системные шрифты

Ни одного внешнего запроса за шрифтами. Кириллица не «прыгает» при загрузке, а страница не зависит от чужого CDN.

React и Vite — когда это уже не сайт

Редактор, конструктор, личный кабинет — задачи, где страница живёт в браузере, а не отдаётся готовой. Так сделан конструктор печатей: сборка вектора и экспорт файлов считаются у пользователя, серверу остаются хранение и оплаты.

Чем проверяю

Проверки — не ритуал: каждая ловит ошибку, которую я уже когда-то делал.

Vitest

Юнит-тесты денежной логики и фильтров безопасности. Правило простое: денежная логика меняется только вместе с тестом.

Playwright

Сквозные проверки в настоящем браузере: калькулятор, формы, аудит и отсутствие горизонтальной прокрутки на 360 px.

Lighthouse

Скорость, доступность и SEO мобильной версии — на своих же страницах, перед каждым релизом.

Стражи структуры

Отдельные тесты роняют сборку, если пункт меню ведёт на несуществующую страницу или статья пропала из карты сайта.

Как работаю с ИИ-агентами

Агенты делают черновую часть, решения и ответственность остаются человеку.

Контекст проекта в репозитории

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

Задание на волну

Работа режется на волны с явным списком того, что делать и чего не делать. Расплывчатая задача даёт расплывчатый результат — это верно и для людей, и для агентов.

Гейты вместо доверия

Сборка, типы, линтер, тесты. Агент не «обещает, что работает» — он показывает зелёные проверки, а спорное я смотрю руками.

Журнал грабель

Каждая пойманная ошибка окружения записывается в контекст проекта. Второй раз на неё уже никто не наступает.

Где всё живёт

Инфраструктура простая настолько, насколько это возможно без потери надёжности: новый сайт едет на VPS в контейнере, а проект, которому хватает обычного хостинга, там и остаётся.

Docker и один VPS

Приложение едет в контейнере, образ собирается в CI, на сервере ничего не компилируется.

Резервные копии по расписанию

Ежесуточный дамп базы с ротацией и автоматическая чистка данных, у которых вышел срок хранения.

Git и понятная история

Атомарные коммиты с внятными сообщениями: через полгода видно не только что изменилось, но и почему.

Принципы выбора

  • Инструмент выбирается под задачу и под того, кто будет её сопровождать, — а не под мою любознательность.
  • Всё, что продаю клиентам, сначала применено к этому сайту: цена на витрине, срок в днях, доступность, 152-ФЗ-минимум.
  • Если новая библиотека экономит день разработки и добавляет год поддержки — она не окупается.
  • Скучный стек — это преимущество: сайт должен пережить смену подрядчика без переписывания.

Как этот набор превращается в сайт — на странице «Как я работаю», а что из него получилось — в разборах моих проектов. Хотите проверить свой сайт тем же чек-листом — есть экспресс-аудит.