86 lines
3.1 KiB
Markdown
86 lines
3.1 KiB
Markdown
# CLAUDE.md — sag24-website
|
||
|
||
Специфика проекта. Общие правила — в `E:\Projects\CLAUDE.md`.
|
||
|
||
## Деплой
|
||
|
||
```bash
|
||
# 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.ru` → `info@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
|
||
<?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)
|