Единственный источник правды по незакрытым задачам проекта. Держать в синхроне: сделали пункт — снимаем галочку и убираем из списка.
Фронтенд готов. Блок #request (src/components/LeadForm.astro) — контакты
слева, форма справа, поверх горной панорамы. Поля, валидация, состояния
отправки, honeypot, чекбокс согласия и привязка реферального хвоста работают
(подробности — LEAD-FORM.md). Осталось увезти заявку с сайта.
- Решить, куда уходят заявки. Сайт статический на GitHub Pages, бэкенда
нет — нужен внешний обработчик: Formspree / Getform / Google Forms либо
serverless-функция с отправкой в Telegram. Точка подключения ровно одна —
функция
sendLead()вsrc/scripts/lead-form.ts, сейчас заглушка сconsole.log. Сигнатуру менять не нужно: форма уже умеет ждать промис и разводить успех и ошибку сети. - Ссылка на политику конфиденциальности в чекбоксе согласия — сейчас
href="#"с пометкойTODO(legal)(см. п. 3). - Капча провайдера, если honeypot окажется недостаточным.
- Перенацелить CTA на
#request: кнопка «Подробнее» в hero ведёт на#about-training, в offer-блоке CTA нет вовсе.
- Компонент
src/components/Footer.astro, последним вindex.astro— после<LeadForm />. - Контакты Дениса, ссылки на соцсети, копирайт с годом. Телефон, почта
и Telegram — брать из
src/data/contacts.ts(единственный источник, его же используютHeader.astro,LeadForm.astroи JSON-LD вBaseLayout.astro). - Блок юридических ссылок (п. 3) и реквизиты (ИП/самозанятый, ИНН) — уточнить у заказчика, что именно публикуем.
- Навигация-якоря по секциям страницы — если делаем, брать список пунктов
из
NAV_ITEMSвHeader.astro, чтобы не разъехались.
Без них нельзя собирать персональные данные через форму (152-ФЗ).
- Политика конфиденциальности.
- Согласие на обработку персональных данных (текст под чекбоксом формы).
- Публичная оферта / условия оказания услуг — уточнить у заказчика, нужна ли (зависит от того, продаём ли мы с сайта).
- Формат размещения: отдельные страницы
src/pages/privacy.astroи т. д. (не PDF — так документы индексируются и открываются с телефона). - Ссылки в футере и рядом с чекбоксом формы.
- Скан сертификата Euclides Coimbra: сейчас в
index.astroзаглушка, импорт закомментирован (строки 22–26) — файл вsrc/assets/images/, раскомментировать и передать в<Certificate>и<ModalCertificate>. - Настоящий OG-баннер 1200×630 вместо копии
denis-bulgin.pngвpublic/og-image.png. - Перед публичным анонсом — снять
noindexи открытьrobots.txt. Полный чек-лист — ниже в этом файле. - Рассинхрон referral-меток: regex
MARKSв инлайн-скриптеBaseLayout.astroне содержитref/from, аPARAM_LABELSвsrc/scripts/referral.tsих знает — вход только с?ref=…не обновляет сохранённый хвост. Решить, считать ли такие входы «рекламными», и синхронизировать состав (изменение поведения, поэтому не делалось в рамках рефакторинга). - Визуальные микрофиксы, отложенные из рефакторинга:
mt-10→mt-groupвModalAbout.astro(финальный блок) и свойspace-y-[clamp(…)]вAboutTraining.astro:31вне ролей шкалы — оба меняют фактические отступы, править отдельным осознанным коммитом. - Формат телефона: JSON-LD в
BaseLayout.astroиспользуетPHONE_SCHEMA(+7 495…), видимый текст —PHONE_DISPLAY(8 495…). Оба значения именованы вsrc/data/contacts.ts— решить, нужна ли унификация видимого формата под международный (изменение контента). - px-медиа → rem: пороги
1280px(«крест» диаграммы ПРП, global.css + строка gsap.matchMedia вprp-diagram-scroll.ts— менять строго синхронно, см. комментарии в обоих файлах) и768px(ширина слайда видеоотзывов). Остальные media в файле — rem; конвертация меняет поведение при нестандартном базовом кегле браузера, поэтому из рефакторинга исключена. - Ограничить сканирование Tailwind каталогом
src/(директива@sourceв global.css): сейчас сканер v4 обходит иdocs/*.md, и упоминание утилиты в документации добавляет её в прод-CSS (см. анти-паттерны в BUILD.md). Правка конфига — проверить бандл до/после.
- Снять
noindexиз<meta name="robots">,googlebot,yandexвsrc/layouts/BaseLayout.astro. - В
public/robots.txtзаменитьDisallow: /наAllow: /(или удалить файл). - Сверить, что canonical (
new URL(base, Astro.site)вBaseLayout.astro) даёт актуальный URL. - По возможности — сгенерировать настоящий 1200×630 OG-баннер, заменить
public/og-image.png(сейчас это копияdenis-bulgin.png). - Опубликовать
sitemap.xml(опционально — JSON-LD Course уже даёт схему). Astro умеет через интеграцию@astrojs/sitemap.