Профессиональный веб-сайт для заказа Деда Мороза с полнофункциональным Telegram ботом для управления заявками.
- Современный дизайн с анимациями и эффектами
- Адаптивная верстка для всех устройств
- Информативные секции: услуги, цены, отзывы, FAQ
- Форма заказа с валидацией
- Плавная прокрутка и навигация
- Автоматические уведомления о новых заявках
- Интерактивные кнопки для управления заявками
- Статистика заявок (всего, по статусам, по периодам)
- Список заявок с фильтрацией
- Команды:
/start,/stats,/list,/pending,/confirmed - Управление статусами заявок прямо из Telegram
# Установка зависимостей
npm install
# Запуск сервера
npm startСайт будет доступен по адресу: http://localhost:3000
- Создайте бота через @BotFather
- Получите токен бота
- Узнайте ваш Chat ID (можно через @userinfobot)
- Настройте переменные окружения:
Создайте файл .env в корне проекта:
TELEGRAM_BOT_TOKEN=ваш_токен_бота
TELEGRAM_CHAT_ID=ваш_chat_id
TELEGRAM_ENABLED=true
PORT=3000
NODE_ENV=developmentИли отредактируйте config/config.js напрямую.
Для получения обновлений от Telegram через webhook:
curl -X POST http://localhost:3000/api/telegram/set-webhook?url=https://ваш-домен.ru/api/telegram/webhook├── config/ # Конфигурация
│ ├── config.js # Основные настройки
│ └── database.js # Подключение к БД
├── controllers/ # Контроллеры
│ └── orderController.js
├── middleware/ # Middleware
│ ├── errorHandler.js
│ └── logger.js # Логирование
├── models/ # Модели данных
│ └── Order.js
├── routes/ # Маршруты
│ ├── orderRoutes.js
│ └── telegramRoutes.js
├── services/ # Сервисы
│ └── telegramBot.js
├── public/ # Статические файлы
│ ├── css/
│ └── js/
├── views/ # HTML шаблоны
│ └── index.html
├── logs/ # Логи (создается автоматически)
└── server.js # Главный файл сервера
/startили/help- Показать помощь и главное меню/stats- Статистика заявок/list- Список всех заявок/pending- Заявки в ожидании/confirmed- Подтвержденные заявки/order_<ID>- Просмотр конкретной заявки
pending- Ожидает подтвержденияconfirmed- Подтвержденаcompleted- Выполненаcancelled- Отменена
- Glassmorphism эффекты
- Анимации снежинок и звезд
- Градиенты и современная типографика
- Плавные переходы и hover-эффекты
- Адаптивность для мобильных устройств
Все логи сохраняются в папке logs/ с датой в имени файла:
logs/app-2024-01-01.log
Уровни логирования:
INFO- Информационные сообщенияWARN- ПредупрежденияERROR- ОшибкиSUCCESS- Успешные операции
POST /api/orders- Создать заявкуGET /api/orders- Получить все заявкиGET /api/orders/:id- Получить заявку по IDDELETE /api/orders/:id- Удалить заявкуPATCH /api/orders/:id/status- Обновить статус
POST /api/telegram/webhook- Webhook для TelegramPOST /api/telegram/set-webhook- Установить webhook
GET /health- Проверка работоспособности
- Backend: Node.js, Express.js
- База данных: SQLite3
- Frontend: HTML5, CSS3, JavaScript (ES6+)
- Интеграции: Telegram Bot API
{
"express": "^4.18.2",
"sqlite3": "^5.1.6",
"body-parser": "^1.20.2",
"cors": "^2.8.5",
"express-validator": "^7.0.1",
"dotenv": "^16.3.1"
}- Установите
NODE_ENV=production - Настройте HTTPS для webhook
- Используйте PM2 или systemd для автозапуска
- Настройте резервное копирование БД
- Мониторинг логов и ошибок
MIT
-
Купите домен у регистратора (например, Namecheap, GoDaddy, Reg.ru)
-
Настройте DNS записи:
- Добавьте A-запись, указывающую на IP вашего сервера
- Или используйте CNAME для поддомена
-
Настройте SSL сертификат (обязательно для Telegram webhook):
# Используйте Let's Encrypt (Certbot) sudo apt-get install certbot sudo certbot certonly --standalone -d ваш-домен.ru -
Настройте Nginx (рекомендуется):
server { listen 80; server_name ваш-домен.ru; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name ваш-домен.ru; ssl_certificate /etc/letsencrypt/live/ваш-домен.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ваш-домен.ru/privkey.pem; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
-
Обновите webhook после настройки домена:
curl -X POST https://ваш-домен.ru/api/telegram/set-webhook?url=https://ваш-домен.ru/api/telegram/webhook -
Используйте PM2 для автозапуска:
npm install -g pm2 pm2 start server.js --name dedmoroz pm2 save pm2 startup
messanpo and decoder-dev
Создано с ❤️ для новогодних праздников!