# 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-меню вынесено за пределы `