Files
sag24-website/CLAUDE.md

3.1 KiB
Raw Blame History

CLAUDE.md — sag24-website

Специфика проекта. Общие правила — в E:\Projects\CLAUDE.md.

Деплой

# 1. Локально: commit + push
git add <файлы> && git commit -m "..." && git push

# 2. На сервере: pull + build
ssh -i ~/.ssh/id_ed25519_hhivp striker@str-u-01.striker.su 'cat <<XEOF | sudo -S bash
Gh_lpx2018!
cd /opt/www/sag24.ru/repo && git pull && npm run deploy
XEOF'
  • .git принадлежит root → git pull требует sudo
  • npm run deploy = next build (→ ../public_html) + indexnow.mjs

Singularity

Проект: САГ P-a41aa057-5401-4ae5-843c-439381fdd7f2

Стек

  • Next.js 15, TypeScript, App Router, static export
  • Tailwind CSS v3 — конфиг tailwind.config.js (НЕ .ts!)
  • i18n через [lang] сегмент: /ru/..., /en/...
  • Контент: src/locales/ru.ts, src/locales/en.ts

Структура страниц

/ru/               → Главная
/ru/uslugi/        → Каталог + /[slug]/ (8 услуг)
/ru/about/         → О компании
/ru/clients/       → Клиенты
/ru/partners/      → Партнёры
/ru/faq/           → FAQ
/ru/kontakty/      → Контакты

SEO

  • BreadcrumbList JSON-LD на всех страницах — src/lib/breadcrumbs.ts
  • generateMetadata на каждой странице с canonical + hreflang
  • После деплоя IndexNow отправляется автоматически

Ограничения

  • Static export — API routes не работают; форма идёт на /api/contact.php (PHP)
  • trailingSlash: true — все URL заканчиваются на /
  • Turnstile SITE_KEY: 0x4AAAAAACrQS-dAb7E9RGPQ

Контактная форма

Архитектура

  • Frontend: src/app/[lang]/kontakty/page.tsx — поля: имя*, компания, email, телефон, сообщение* + Turnstile widget
  • Backend: public/api/contact.php → деплоится в public_html/api/contact.php
  • Email: HTML-формат, noreply@sag24.ruinfo@sag24.ru через mx.hhivp.com:587 (raw fsockopen SMTP)
  • Telegram: бот vg_contact_bot, чат -5230603582, через CF Worker https://tg-relay.it-resheniya-2018.workers.dev/bot
  • Защита: rate limit 5 req/min (temp files), Turnstile обязательный, htmlspecialchars()

Секреты (НЕ в git!)

Файл: /opt/www/sag24.ru/contact-config.php (вне вебрута, права 640 www-data)

<?php
$BOT_TOKEN = '...';
$CHAT_ID   = '-5230603582';
$TURNSTILE_SECRET = '0x4AAAAAACrQSySNBa2C2FWQq2ty1_UyLhc';
$smtp_pass = '...';

При пересоздании сервера — воссоздать этот файл вручную через SSH.

Изменения

2026-03-21: Секреты в include-файл, HTML email

  • Хардкоженные секреты вынесены в /opt/www/sag24.ru/contact-config.php
  • Email переведён на HTML формат (text/html)