Files

5.3 KiB

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-<timestamp>  # генерируется динамически при запуске
ADMIN_PASSWORD=admin  # bcrypt-хеш, дефолтный пароль 'admin'

⚠️ Пароль БД и пароль админки хранятся в secrets-backup репозитории (admin/secrets-backup).


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

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-меню вынесено за пределы <nav> (решение бага fixed внутри sticky)
  • touch-action: pan-x на каруселях
  • Hover-эффекты отключены на мобиле

Админка

  • URL: /admin/
  • Авторизация через express-session + bcrypt
  • Управление фото проектов (загрузка через multer)

Коллеги / стейкхолдеры

  • Владелец: ffr (пользователь системы ZeroAI)
  • Компания: "Вода и Тепло", Череповец, Вологодская обл.
  • Целевая аудитория: УК (управляющие компании), ТСЖ, МКД
  • Gitea: https://git.zeroday.su/admin/cherepovets-landing