# SmartSolTech Website

Современный PWA сайт для SmartSolTech с админ-панелью, управлением портфолио, интеграцией с Telegram ботом и калькулятором стоимости услуг.

## 🚀 Особенности

- **Современный дизайн**: Отзывчивый интерфейс с анимациями и современным UI/UX
- **PWA**: Прогрессивное веб-приложение с поддержкой офлайн-режима
- **Админ-панель**: Управление портфолио, услугами, медиа-контентом и настройками сайта
- **Интеграция с Telegram**: Подключение к Telegram боту для уведомлений
- **Калькулятор стоимости**: Интерактивный калькулятор расчета стоимости услуг
- **Система аутентификации**: Безопасная авторизация с JWT токенами
- **Загрузка файлов**: Оптимизация изображений и управление медиа-контентом
- **SEO оптимизация**: Настроенные мета-теги и структурированные данные

## 🛠️ Технологии

### Backend
- **Node.js** - Серверная платформа
- **Express.js** - Веб-фреймворк
- **MongoDB** - База данных
- **Mongoose** - ODM для MongoDB
- **JWT** - Токены аутентификации
- **bcrypt** - Хеширование паролей
- **Multer** - Загрузка файлов
- **Sharp** - Обработка изображений

### Frontend
- **EJS** - Шаблонизатор
- **Tailwind CSS** - CSS фреймворк
- **AOS** - Библиотека анимаций
- **Font Awesome** - Иконки
- **Service Worker** - PWA функциональность

### Дополнительно
- **node-telegram-bot-api** - Интеграция с Telegram
- **Nodemailer** - Отправка email
- **Helmet** - Безопасность
- **express-rate-limit** - Ограничение запросов

## 📦 Установка

1. **Клонирование репозитория**
```bash
git clone <repository-url>
cd sst_site
```

2. **Установка зависимостей**
```bash
npm install
```

3. **Настройка переменных окружения**
```bash
cp .env.example .env
```

Отредактируйте файл `.env` с вашими настройками:
```env
NODE_ENV=development
PORT=3000

# Database
MONGODB_URI=mongodb://localhost:27017/smartsoltech

# Security
SESSION_SECRET=your-super-secret-session-key
JWT_SECRET=your-super-secret-jwt-key

# File Upload
UPLOAD_PATH=./uploads
MAX_FILE_SIZE=10485760

# Email Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password

# Telegram Bot (Optional)
TELEGRAM_BOT_TOKEN=your-telegram-bot-token

# Admin Account
ADMIN_EMAIL=admin@smartsoltech.kr
ADMIN_PASSWORD=change-this-password
```

4. **Инициализация базы данных**
```bash
npm run init-db
```

5. **Запуск в режиме разработки**
```bash
npm run dev
```

Сайт будет доступен по адресу: `http://localhost:3000`

## 🗂️ Структура проекта

```
sst_site/
├── models/              # Модели данных (MongoDB)
│   ├── User.js
│   ├── Portfolio.js
│   ├── Service.js
│   ├── Contact.js
│   └── SiteSettings.js
├── routes/              # Маршруты API
│   ├── index.js
│   ├── auth.js
│   ├── contact.js
│   ├── calculator.js
│   ├── portfolio.js
│   ├── services.js
│   ├── media.js
│   └── admin.js
├── views/               # Шаблоны EJS
│   ├── layout.ejs
│   ├── index.ejs
│   ├── calculator.ejs
│   └── partials/
├── public/              # Статические файлы
│   ├── css/
│   ├── js/
│   ├── images/
│   ├── manifest.json
│   └── sw.js
├── middleware/          # Промежуточное ПО
├── scripts/             # Служебные скрипты
│   ├── init-db.js
│   ├── dev.js
│   └── build.js
├── uploads/             # Загруженные файлы
├── server.js            # Главный файл сервера
├── package.json
└── README.md
```

## 📋 Доступные команды

```bash
# Разработка
npm run dev          # Запуск в режиме разработки с hot reload

# Продакшн
npm start            # Запуск в продакшн режиме
npm run build        # Сборка для продакшна

# База данных
npm run init-db      # Инициализация БД с тестовыми данными

# Тестирование
npm test             # Запуск тестов (пока не реализовано)
```

## 🔐 Админ-панель

После инициализации базы данных вы можете войти в админ-панель:

- **URL**: `http://localhost:3000/admin`
- **Email**: `admin@smartsoltech.kr` (или из .env)
- **Пароль**: Указанный в .env файле

### Возможности админ-панели:
- Управление портфолио проектами
- Редактирование услуг и их стоимости
- Загрузка и управление медиа-файлами
- Просмотр и управление контактными формами
- Настройки сайта и SEO
- Управление пользователями

## 🤖 Интеграция с Telegram

Для настройки Telegram бота:

1. Создайте бота через [@BotFather](https://t.me/BotFather)
2. Получите токен бота
3. Добавьте токен в `.env` файл: `TELEGRAM_BOT_TOKEN=your-token`
4. Перезапустите сервер

Бот будет отправлять уведомления о:
- Новых контактных формах
- Заказах через калькулятор
- Новых комментариях

## 💰 Калькулятор стоимости

Интерактивный калькулятор позволяет клиентам:
- Выбрать тип услуги
- Указать дополнительные параметры
- Получить примерную стоимость
- Отправить заявку на расчет

Настройки калькулятора можно изменить в админ-панели.

## 🔒 Безопасность

Проект включает следующие меры безопасности:
- Хеширование паролей с bcrypt
- JWT токены для аутентификации
- Защита от CSRF атак
- Ограничение количества запросов
- Валидация входных данных
- Безопасные HTTP заголовки

## 📱 PWA функции

- Установка на устройство
- Офлайн работа
- Push уведомления
- Фоновая синхронизация
- Адаптивные иконки
- Splash screen

## 🚀 Деплой

### Для продакшна:

1. **Сборка приложения**
```bash
npm run build
```

2. **Настройка сервера**
- Установите Node.js и MongoDB
- Настройте переменные окружения
- Настройте прокси-сервер (nginx)

3. **Запуск**
```bash
cd dist
npm install --production
npm start
```

### Docker деплой:

```dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
```

## 🤝 Участие в разработке

1. Форкните репозиторий
2. Создайте ветку для фичи (`git checkout -b feature/AmazingFeature`)
3. Сделайте коммит (`git commit -m 'Add some AmazingFeature'`)
4. Отправьте в ветку (`git push origin feature/AmazingFeature`)
5. Откройте Pull Request

## 📝 Лицензия

Этот проект лицензирован под MIT License - подробности в файле [LICENSE](LICENSE).

## 📞 Поддержка

Если у вас есть вопросы или проблемы:

- Email: info@smartsoltech.kr
- GitHub Issues: [Create Issue](../../issues)
- Telegram: @smartsoltech

## 🙏 Благодарности

- [Express.js](https://expressjs.com/) - За отличный веб-фреймворк
- [MongoDB](https://www.mongodb.com/) - За гибкую базу данных
- [Tailwind CSS](https://tailwindcss.com/) - За удобный CSS фреймворк
- [AOS](https://michalsnik.github.io/aos/) - За красивые анимации

---

**SmartSolTech** - Умные решения для вашего бизнеса 🚀