Этот сайт — витрина, которая сама принимает заявки
Собственный проект: двуязычный сайт студии на 36 страниц, где заявка уходит сразу в два канала, считается в обезличенном журнале и не теряется даже при отказе сервиса доставки.
- Год
- 2026
- Роль
- Дизайн, разработка, инфраструктура
- Стек
- Astro · TypeScript · Tailwind · three.js · GSAP · Cloudflare Workers
- 36
- страниц на двух языках
- 2
- независимых канала доставки заявки
- 0 ₽
- инфраструктура в месяц
- 1,0 с
- до первой отрисовки
Что это
Сайт, который вы сейчас читаете. Показываю его кейсом по простой причине: это единственная работа, которую вы можете проверить целиком — открыть исходники, посмотреть историю правок, отправить заявку и увидеть, что произойдёт.
Тридцать шесть страниц на русском и английском: главная, шесть страниц услуг с конструктором объёма работ, кейсы, инженерный журнал, страница «Кто я», правовые документы. Плюс интерактивный калькулятор стоимости рутины с открытой формулой — не «оставьте заявку, и мы посчитаем», а сразу видно, из чего складывается число.
Как устроена заявка
Форма — единственный вход, и он сделан так, чтобы заявка не терялась ни при каких обстоятельствах.
Человек начинает с выбора направления: не пишет с чистого листа, а указывает пальцем на нужную услугу. Если он пришёл со страницы услуги, направление уже отмечено за него. Форма читается как маршрут из трёх шагов, сверху идёт полоса заполнения.
Дальше заявка уходит одновременно двумя путями: письмом через сервис форм и сообщением в Telegram через собственный ретранслятор на Cloudflare Workers. Каналы независимы — отказ одного не мешает другому. Если недоступны оба, форма открывает почтовый клиент с уже заполненным письмом: направление, имя, контакт, бюджет и текст задачи на месте. Заявка не пропадает даже тогда, когда всё сломалось.
Ретранслятор попутно ведёт обезличенный журнал: направление, диапазон бюджета и время. Ни имени, ни контакта, ни текста — по такому журналу невозможно опознать человека, но можно ответить на вопрос «сколько заявок пришло за месяц и по каким услугам». Бот отдаёт сводку по команде.
Где было больно
Скрытое поле не проходит проверку браузера. Выбор направления сделан плитками, а настоящие радиокнопки спрятаны под ними. Браузер отказывается показывать сообщение об ошибке для невидимого поля — оно просто молча не отправляется. Пришлось писать свою проверку: подсветить блок, сказать словами, что не выбрано, и прокрутить к нему.
Счётчик посещений молчал. При подключении аналитики я поставил параметр серверного рендеринга — он подавляет автоматическую отправку данных. Скрипт грузился, счётчик инициализировался, в консоли ошибок не было, а данные не шли. Такие отказы опаснее падений: всё выглядит рабочим.
Три анимационные системы дрались за кадры. Инерционная прокрутка, сцена на three.js и появление блоков при скролле — каждая тянула на себя частоту кадров. Порядок навёлся, когда все они стали читать одно посчитанное значение прокрутки, а тяжёлая сцена — останавливаться, уходя из вида.
Что получилось
Инфраструктура стоит ноль рублей в месяц: страницы отдаёт GitHub Pages, домен и ретранслятор живут на бесплатном тарифе Cloudflare, доставка заявок — на бесплатном лимите сервиса форм. При этом всё честно: свой домен, сертификат, две независимые линии доставки заявки и счётчик.
Публикация автоматическая: коммит в основную ветку — и через двадцать секунд правка на сайте. Никаких выгрузок по FTP и «сейчас перезалью».
Что можно проверить
Исходники открыты: github.com/nadirzhon/nadirzhon.github.io. Видно всё, включая ретранслятор, историю правок юридических документов и то, что токенов и ключей в репозитории нет.
Самый честный способ проверить эту работу — отправить заявку. Она дойдёт.
Экраны
Снимки рабочей системы, а не макеты. Нажмите на любой — откроется во весь экран.