diff --git a/PROJECT_KNOWLEDGE.md b/PROJECT_KNOWLEDGE.md new file mode 100644 index 0000000..4574646 --- /dev/null +++ b/PROJECT_KNOWLEDGE.md @@ -0,0 +1,145 @@ +# PROJECT_KNOWLEDGE.md — Voda Landing (cherepovets-landing) + +## Что это +Лендинг инженерной компании **"Вода и Тепло"** (Череповец). Ориентирован на управляющие компании (УК) и ТСЖ многоквартирных домов. Цель — генерация заявок на коммерческое предложение. + +URL: **https://voda.zeroday.su** + +--- + +## Стек технологий + +| Слой | Технология | +|------|-----------| +| Runtime | Node.js (LTS) | +| Web-фреймворк | Express 4 | +| БД | PostgreSQL (база `voda_landing`) | +| Авторизация | express-session + bcryptjs | +| Загрузка файлов | multer (до 10 МБ, jpg/jpeg/png/webp/gif) | +| Фронтенд | Vanilla HTML + CSS (без фреймворков) | +| Шрифты | Google Fonts — Inter | +| Процесс-менеджер | PM2 (имя процесса: `voda-landing`) | +| Reverse proxy | Nginx | +| SSL | Let's Encrypt (certbot) | + +--- + +## Сервер и инфраструктура + +- **Сервер**: dev.zeroday.su (MCP-коннектор: `dev`) +- **Домен**: voda.zeroday.su +- **Порт приложения**: 3006 +- **Путь на сервере**: `/var/www/cherepovets-landing` +- **Nginx-конфиг**: `/etc/nginx/sites-available/voda.zeroday.su` +- **SSL-сертификат**: `/etc/letsencrypt/live/voda.zeroday.su/` (собственный, не wildcard) + +--- + +## Структура файлов + +``` +/var/www/cherepovets-landing/ +├── server.js # Основной Express-сервер (PORT=3006) +├── package.json # Зависимости +├── public/ +│ ├── index.html # Главная страница лендинга (~36 КБ) +│ ├── styles.css # Стили (~28 КБ) +│ ├── images/ +│ │ └── hero-bg.png # Фоновое изображение hero-секции +│ └── uploads/ # Загруженные фото проектов (не в git) +└── admin/ + └── index.html # Одностраничная админка +``` + +--- + +## База данных + +- **СУБД**: PostgreSQL +- **База**: `voda_landing` +- **Пользователь**: `postgres` +- **Хост**: localhost +- **Порт**: 5432 +- **Пароль**: (не публикуется, стандартный для dev-окружения) + +Данные о загруженных проектах хранятся в БД через multer + pg. + +--- + +## Переменные окружения / конфиг + +``` +PORT=3006 +DB_USER=postgres +DB_HOST=localhost +DB_NAME=voda_landing +DB_PORT=5432 +SESSION_SECRET=voda-landing-secret- # генерируется динамически при запуске +ADMIN_PASSWORD=admin # bcrypt-хеш, дефолтный пароль 'admin' +``` + +> ⚠️ Пароль БД и пароль админки хранятся в secrets-backup репозитории (admin/secrets-backup). + +--- + +## Nginx-конфигурация + +```nginx +server { + listen 80; + server_name voda.zeroday.su; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl http2; + server_name voda.zeroday.su; + ssl_certificate /etc/letsencrypt/live/voda.zeroday.su/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/voda.zeroday.su/privkey.pem; + # proxy_pass → http://127.0.0.1:3006 +} +``` + +--- + +## PM2 + +```bash +pm2 list # Проверить статус (процесс: voda-landing) +pm2 restart voda-landing +pm2 logs voda-landing --lines 50 +``` + +--- + +## Функциональность лендинга + +### Секции страницы +1. **Top-bar** — адрес (Череповец), режим работы, email +2. **Навигация** — sticky, burger-меню на мобиле, телефон +3. **Hero** — заголовок, описание, CTA-кнопка, счётчики (12+ лет, 87+ объектов, 24+ партнёра) +4. **Услуги** — горизонтальная карусель на мобиле (4 услуги) +5. **Преимущества** — горизонтальная карусель на мобиле (6 пунктов) +6. **Портфолио** — горизонтальная карусель на мобиле (3 проекта) +7. **Форма обратной связи** / нижний CTA +8. **Footer** — контакты, © 2026 + +### Мобильная адаптация +- Breakpoints: <640px (mobile), 640-1024px (tablet), >1024px (desktop) +- Burger-меню вынесено за пределы `