280 lines
9.2 KiB
Markdown
280 lines
9.2 KiB
Markdown
# 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** - Умные решения для вашего бизнеса 🚀 |