refactor: chaange figma structure with single package

This commit is contained in:
Zotov Ivan Yuryevich
2026-04-02 23:35:06 +03:00
parent 64ae1d9f5a
commit 1157854f1d
89 changed files with 277 additions and 2333 deletions

View File

@@ -1,267 +0,0 @@
# 🚀 Готово к коммиту и деплою!
## ✅ Все исправления применены
### Что было исправлено:
1. ✅ **Node.js версия зафиксирована на 18 LTS**
- Создан `.nvmrc`
- Добавлен `engines` в `package.json`
- `netlify.toml` уже содержал NODE_VERSION = "18"
2. ✅ **Vite настроен на сборку в папку `build`**
- Обновлён `vite.config.ts`: `outDir: 'build'`
- `netlify.toml` указывает `publish = "build"`
3. ✅ **Созданы скрипты проверки**
- `check-build.sh` (Linux/Mac)
- `check-build.bat` (Windows)
4. ✅ **Создан .gitignore**
- Исключены node_modules, логи, кеш
5. ✅ **Документация обновлена**
- NODE-VERSION-FIX.md
- NETLIFY-FIX.md
- LATEST-FIXES.md
- README.md
---
## 📋 Шаги для деплоя
### Шаг 1: Проверка локально (опционально)
**Убедитесь что используете Node.js 18:**
```bash
# Проверить версию
node -v
# Если не v18.x.x, установите:
nvm install 18
nvm use 18
```
**Запустите проверку сборки:**
```bash
# Linux/Mac
chmod +x check-build.sh
./check-build.sh
# Windows
check-build.bat
```
**Ожидаемый результат:**
```
✅ Node.js версия совместима (v18.x.x)
✅ BUILD OUTPUT: build
📋 Для Netlify используйте: publish = "build"
```
---
### Шаг 2: Коммит изменений
```bash
# Проверьте что изменилось
git status
# Добавьте все файлы
git add .
# Закоммитьте с понятным сообщением
git commit -m "Fix: Pin Node.js to v18 LTS and configure Vite outDir to 'build'"
# Альтернативный вариант (более детальный):
git commit -m "Fix deployment configuration
- Pin Node.js to v18 LTS (.nvmrc + package.json engines)
- Update vite.config.ts outDir from 'dist' to 'build'
- Update check-build scripts with Node version validation
- Add comprehensive deployment documentation"
```
---
### Шаг 3: Пуш в GitHub
```bash
# Запушьте в main (или master) ветку
git push origin main
# Или если используете master:
# git push origin master
```
---
### Шаг 4: Наблюдайте за деплоем в Netlify
После пуша:
1. **Откройте Netlify Dashboard**
- Перейдите на https://app.netlify.com
- Откройте ваш сайт
- Нажмите на **"Deploys"**
2. **Следите за логами**
- Должен начаться новый деплой (обычно в течение 10-30 секунд)
- Нажмите на последний деплой чтобы открыть логи
3. **Что искать в логах:**
**✅ Успешная сборка:**
```
v18.x.x is already installed.
Now using node v18.x.x (npm v9.x.x)
...
npm run build
...
vite v5.x.x building for production...
✓ built in X.XXs
build/assets/index-xxxxx.js
Deploy site
────────────────────────────────────────
✓ Deploy is live!
Website URL: https://your-site.netlify.app
```
**❌ Если ошибка:**
- Скопируйте полный текст ошибки
- См. раздел "Troubleshooting" ниже
---
## 🎉 После успешного деплоя
### Проверьте сайт:
1. **Откройте URL сайта** (из Netlify Dashboard)
2. **Проверьте основной функционал:**
- [ ] Главная страница загружается
- [ ] Навигация работает (Header меню)
- [ ] Переходы между страницами работают
- [ ] Стили применяются корректно
- [ ] Модальное окно "Обсудить проект" открывается
- [ ] Нет ошибок в консоли браузера (F12)
3. **Проверьте на мобильных устройствах:**
- [ ] Мобильное меню работает
- [ ] Responsive дизайн корректный
- [ ] Кнопки кликабельны
---
## 🔍 Troubleshooting
### Проблема 1: "Deploy directory 'build' does not exist"
**Решение:**
1. Проверьте логи сборки - успешно ли прошёл `npm run build`?
2. Если сборка падает, найдите строку с ошибкой
3. Попробуйте очистить кеш Netlify:
- Site settings → Build & deploy → Clear cache and retry deploy
### Проблема 2: Всё ещё используется Node.js v22
**Решение:**
1. Убедитесь что `.nvmrc` закоммичен: `git log --name-only -1`
2. Проверьте Netlify environment variables:
- Site settings → Environment variables
- Удалите переменную `NODE_VERSION` если она там есть (пусть используется .nvmrc)
3. Очистите кеш и retry deploy
### Проблема 3: Build успешен, но 404 или белый экран
**Решение:**
1. Проверьте что `publish` в netlify.toml правильный: `build`
2. В Site settings → Build & deploy → Build settings:
- Publish directory должна быть: `build`
3. Проверьте консоль браузера (F12) на наличие ошибок
### Проблема 4: Netlify всё ещё не работает
**Альтернативы:**
#### Cloudflare Pages (рекомендуется)
```
1. https://pages.cloudflare.com
2. Connect GitHub repository
3. Build command: npm run build
4. Build output: build
5. Environment: NODE_VERSION = 18
```
#### GitHub Pages (уже настроен)
```
1. GitHub repo → Settings → Pages
2. Source: GitHub Actions
3. Workflow автоматически задеплоится
```
---
## 📊 Ожидаемое время деплоя
- **Netlify:** ~2-3 минуты
- **Cloudflare Pages:** ~2-3 минуты
- **GitHub Pages:** ~3-5 минут
---
## 📖 Дополнительная документация
Если нужна дополнительная помощь:
- **NODE-VERSION-FIX.md** - детали о Node.js версии
- **NETLIFY-FIX.md** - решение проблем Netlify
- **LATEST-FIXES.md** - последние изменения
- **DEPLOYMENT.md** - полная инструкция по всем платформам
- **DEPLOY-QUICK.md** - быстрая шпаргалка
---
## 🎯 Команды для копирования
```bash
# Весь процесс одной командой:
node -v && \
git add . && \
git commit -m "Fix: Pin Node.js to v18 LTS and configure build output" && \
git push origin main && \
echo "✅ Pushed! Check Netlify Dashboard for deploy status."
```
---
## ✅ Финальный чеклист
- [x] Node.js 18 зафиксирован (.nvmrc, package.json)
- [x] vite.config.ts использует outDir: 'build'
- [x] netlify.toml использует publish: 'build'
- [x] Скрипты проверки обновлены
- [x] .gitignore создан
- [x] Документация обновлена
- [ ] **ВАШ ШАГ:** `git add .`
- [ ] **ВАШ ШАГ:** `git commit -m "..."`
- [ ] **ВАШ ШАГ:** `git push`
- [ ] **ПРОВЕРКА:** Netlify Deploy успешен
- [ ] **ПРОВЕРКА:** Сайт работает
---
## 🎊 Поздравляем!
После успешного деплоя ваш сайт SOFTCLICK будет доступен по URL от Netlify.
Вы также можете:
- Настроить **кастомный домен** (your-company.ru)
- Настроить **SSL сертификат** (HTTPS) - Netlify делает это автоматически
- Подключить **аналитику** (Yandex.Metrika, Google Analytics)
- Настроить **форму обратной связи** с реальной отправкой
**Удачи с проектом!** 🚀

View File

@@ -1,124 +0,0 @@
# 🚀 Быстрая шпаргалка по деплою
## ⚠️ ВАЖНО: Сначала проверьте сборку!
**Linux/Mac:**
```bash
./check-build.sh
```
**Windows:**
```cmd
check-build.bat
```
Это покажет, создаётся `dist` или `build`. Используйте правильную папку в настройках!
---
## 1️⃣ Netlify (РЕКОМЕНДУЕТСЯ - 2 минуты)
```
1. https://netlify.com → Sign up
2. "Add new site" → "Import from Git"
3. Выбрать репозиторий → Deploy
✅ Готово! Автодеплой включен
📝 netlify.toml уже настроен на папку build
Если нужно изменить - см. NETLIFY-FIX.md
```
## 2️⃣ Cloudflare Pages (Очень быстро)
```
1. https://pages.cloudflare.com → Sign up
2. "Create a project" → Подключить Git
3. Build: npm run build | Output: dist
✅ Готово!
```
## 3️⃣ GitHub Pages (100% бесплатно)
```
1. Запушить код в GitHub
2. Settings → Pages → Source: "GitHub Actions"
✅ Готово! Файл .github/workflows/deploy.yml уже настроен
```
## 4️⃣ Яндекс.Облако (Российское)
```bash
# Установка CLI
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash
# Создание бакета
yc storage bucket create --name softclick --public-read
# Деплой
npm run build
yc storage s3api sync ./dist/ s3://softclick/
✅ Готово! ~100₽/месяц
```
## 5️⃣ Обычный хостинг (Timeweb, Beget и т.д.)
```bash
# Локально:
npm run build
# Загрузить через FTP содержимое папки dist/
# Файл .htaccess уже готов
✅ Готово! от 120₽/месяц
```
---
## ⚡ Супер-быстрая команда (для всех платформ)
```bash
npm run build
```
Загрузите содержимое папки `dist/` куда угодно!
---
## 🎯 Что выбрать?
- **Нужно быстро и бесплатно?** → Netlify
- **Нужен супер-быстрый CDN?** → Cloudflare Pages
- **100% бесплатно навсегда?** → GitHub Pages
- **Только российское?** → Яндекс.Облако
- **Есть свой хостинг?** → FTP + dist/
---
## 📱 Автоматические скрипты
**Linux/Mac:**
```bash
./deploy.sh
```
**Windows:**
```cmd
deploy.bat
```
---
## ❓ Проблемы?
1. Не работает `npm run build`?
```bash
rm -rf node_modules dist
npm install
npm run build
```
2. Белый экран после деплоя?
- Проверьте что загружены ВСЕ файлы из `dist/`
- Проверьте консоль браузера (F12)
3. 404 при переходе на страницы?
- Проверьте `.htaccess` (Apache)
- На Netlify/Cloudflare это работает автоматически
---
📖 **Полная инструкция:** `DEPLOYMENT.md`

View File

@@ -1,152 +0,0 @@
# ✅ Чеклист деплоя SOFTCLICK
## Перед деплоем
- [ ] Код работает локально (`npm run dev`)
- [ ] Сборка успешна (`npm run build`)
- [ ] Все изменения закоммичены в Git
- [ ] Выбрана платформа для деплоя
## 📁 Созданные файлы конфигурации
### Для разных платформ:
- [x] `netlify.toml` - Netlify
- [x] `.github/workflows/deploy.yml` - GitHub Pages
- [x] `.github/workflows/deploy-yandex.yml` - Яндекс.Облако
- [x] `.htaccess` - Apache хостинг
- [x] `_redirects` - Cloudflare Pages
- [x] `_headers` - Cloudflare Pages
- [x] `vercel.json` - Vercel (опционально)
### Скрипты деплоя:
- [x] `deploy.sh` - Linux/Mac
- [x] `deploy.bat` - Windows
### Документация:
- [x] `DEPLOYMENT.md` - Полная инструкция
- [x] `DEPLOY-QUICK.md` - Быстрая шпаргалка
- [x] `deploy-yandex-cloud.md` - Яндекс.Облако
- [x] `deploy-traditional-hosting.md` - Традиционный хостинг
---
## 🎯 Выбор платформы
### Вариант 1: Netlify (РЕКОМЕНДУЕТСЯ)
- [ ] Зарегистрироваться на netlify.com
- [ ] Подключить Git-репозиторий
- [ ] Запустить деплой
- [ ] Проверить результат
**Время:** ~2 минуты
**Автодеплой:** ✅ Да
**Стоимость:** Бесплатно
### Вариант 2: Cloudflare Pages
- [ ] Зарегистрироваться на pages.cloudflare.com
- [ ] Подключить Git-репозиторий
- [ ] Build: `npm run build`, Output: `dist`
- [ ] Запустить деплой
**Время:** ~3 минуты
**Автодеплой:** ✅ Да
**Стоимость:** Бесплатно
### Вариант 3: GitHub Pages
- [ ] Код в GitHub репозитории
- [ ] Settings → Pages → Source: "GitHub Actions"
- [ ] Готово (workflow уже настроен)
**Время:** ~1 минута
**Автодеплой:** ✅ Да
**Стоимость:** Бесплатно
### Вариант 4: Яндекс.Облако
- [ ] Создать аккаунт на cloud.yandex.ru
- [ ] Установить Yandex Cloud CLI
- [ ] Создать бакет Object Storage
- [ ] Настроить публичный доступ
- [ ] Загрузить файлы
**Время:** ~10 минут
**Автодеплой:** ✅ Да (через GitHub Actions)
**Стоимость:** ~50-200₽/месяц
### Вариант 5: Традиционный хостинг
- [ ] Купить хостинг (Timeweb/Beget/Reg.ru)
- [ ] Получить FTP доступ
- [ ] Собрать проект: `npm run build`
- [ ] Загрузить содержимое `dist/` через FTP
- [ ] Проверить `.htaccess`
**Время:** ~15 минут
**Автодеплой:** ❌ Нет (ручная загрузка)
**Стоимость:** от 120₽/месяц
---
## 🔍 После деплоя
- [ ] Сайт открывается
- [ ] Все страницы загружаются
- [ ] Навигация работает
- [ ] Стили применяются
- [ ] Модальные окна открываются
- [ ] Нет ошибок в консоли (F12)
- [ ] Мобильная версия работает
---
## 🐛 Устранение проблем
### Белый экран
- [ ] Проверить консоль браузера (F12)
- [ ] Убедиться что все файлы загружены
- [ ] Проверить путь к CSS файлам
### 404 при переходе на страницы
- [ ] Проверить `.htaccess` (для Apache)
- [ ] Проверить конфигурацию rewrites
- [ ] На Netlify/Cloudflare/GitHub Pages должно работать автоматически
### Ошибки сборки
```bash
# Очистить и пересобрать
rm -rf node_modules dist
npm install
npm run build
```
---
## 📊 Сравнение платформ
| Платформа | Сложность | Время | Автодеплой | Российская | Стоимость |
|-----------|-----------|-------|------------|------------|-----------|
| Netlify | ⭐ Легко | 2 мин | ✅ | ❌ | Бесплатно |
| Cloudflare | ⭐ Легко | 3 мин | ✅ | ❌ | Бесплатно |
| GitHub Pages | ⭐ Легко | 1 мин | ✅ | ❌ | Бесплатно |
| Яндекс.Облако | ⭐⭐ Средне | 10 мин | ✅ | ✅ | ~100₽/мес |
| Традиц. хостинг | ⭐⭐⭐ Сложнее | 15 мин | ❌ | ✅ | от 120₽/мес |
---
## 🎉 Готово!
После успешного деплоя:
- [ ] Сохранить URL сайта
- [ ] Настроить кастомный домен (если нужно)
- [ ] Настроить SSL (HTTPS)
- [ ] Добавить в поисковики (Google/Яндекс)
---
## 📞 Нужна помощь?
1. **Проблемы со сборкой** → Проверьте `npm run build` локально
2. **Проблемы с деплоем** → Смотрите логи на платформе
3. **404 ошибки** → Проверьте конфигурацию роутинга
4. **Стили не загружаются** → Проверьте консоль браузера
📖 Полная документация: `DEPLOYMENT.md`
⚡ Быстрая шпаргалка: `DEPLOY-QUICK.md`

View File

@@ -1,164 +0,0 @@
# 🚀 Инструкции по деплою SOFTCLICK
Этот документ содержит все способы публикации вашего сайта.
## 🎯 Быстрый старт
### Локальная сборка
```bash
# 1. Установите зависимости
npm install
# 2. Соберите проект
npm run build
# 3. Папка dist/ (или build/) содержит готовый сайт
```
**⚠️ Важно:** Vite может создать папку `dist` или `build` в зависимости от конфигурации. Проверьте, какая папка создаётся после `npm run build`.
---
## 📌 Рекомендуемые платформы
### ⭐ 1. Netlify (САМЫЙ ПРОСТОЙ)
**✅ Плюсы:** Бесплатно, автоматический деплой, HTTPS, CDN
**⏱ Время настройки:** 2 минуты
**Инструкция:**
1. Регистрация: https://netlify.com
2. "Add new site" → "Import an existing project"
3. Выберите ваш Git-репозиторий
4. Netlify автоматически найдет `netlify.toml`
5. Нажмите "Deploy" - готово! 🎉
**Автоматизация:** При каждом пуше в репозиторий сайт обновляется автоматически.
---
### ⭐ 2. Cloudflare Pages (САМЫЙ БЫСТРЫЙ)
**✅ Плюсы:** Бесплатно, очень быстрый CDN, неограниченный трафик
**⏱ Время настройки:** 3 минуты
**Инструкция:**
1. Регистрация: https://pages.cloudflare.com
2. "Create a project" → подключите Git
3. Настройки:
- Build command: `npm run build`
- Build output: `dist`
4. Deploy - готово! 🎉
---
### ⭐ 3. GitHub Pages (100% БЕСПЛАТНО)
**✅ Плюсы:** Полностью бесплатно навсегда
**⏱ Время настройки:** 1 минута
**Инструкция:**
1. Запушьте код в GitHub
2. Settings → Pages → Source: "GitHub Actions"
3. Готово! Автоматический деплой настроен 🎉
**URL:** `https://username.github.io/repository-name`
---
## 🇷🇺 Российские платформы
### 4. Яндекс.Облако (ИМПОРТОЗАМЕЩЕНИЕ)
**✅ Плюсы:** Российская платформа, Object Storage + CDN
**💰 Стоимость:** ~50-200 ₽/месяц
**⏱ Время настройки:** 10 минут
**Подробная инструкция:** См. файл `deploy-yandex-cloud.md`
**Быстрая настройка:**
```bash
# 1. Установите Yandex Cloud CLI
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash
# 2. Создайте бакет
yc storage bucket create --name softclick-website --public-read
# 3. Соберите и загрузите
npm run build
yc storage s3api sync ./dist/ s3://softclick-website/
```
---
### 5. Традиционный хостинг
**Подходит для:** Timeweb, Beget, Reg.ru, HostiMan
**💰 Стоимость:** от 120 ₽/месяц
**Подробная инструкция:** См. файл `deploy-traditional-hosting.md`
**Краткая версия:**
1. Соберите проект: `npm run build`
2. Загрузите содержимое папки `dist/` на хостинг через FTP
3. Файл `.htaccess` уже готов и настроен
4. Готово! 🎉
---
## 🛠 Автоматизация
### Автоматический деплой при пуше в Git
**GitHub Actions готовы для:**
- ✅ GitHub Pages → `.github/workflows/deploy.yml`
- ✅ Яндекс.Облако → `.github/workflows/deploy-yandex.yml`
**Настройка GitHub Actions для Яндекс.Облако:**
1. Создайте сервисный аккаунт в Yandex Cloud
2. Добавьте секреты в GitHub:
- `YC_SERVICE_ACCOUNT_KEY_JSON` - ключ сервисного аккаунта
- `YC_BUCKET_NAME` - название бакета
3. При пуше в main автоматически загрузится на Яндекс.Облако
---
## 📋 Сравнительная таблица
| Платформа | Цена | Скорость настройки | Автодеплой | Российская |
|-----------|------|-------------------|------------|------------|
| Netlify | Бесплатно | ⚡⚡⚡ 2 мин | ✅ | ❌ |
| Cloudflare Pages | Бесплатно | ⚡⚡⚡ 3 мин | ✅ | ❌ |
| GitHub Pages | Бесплатно | ⚡⚡⚡ 1 мин | ✅ | ❌ |
| Яндекс.Облако | ~100₽/мес | ⚡⚡ 10 мин | ✅ | ✅ |
| Timeweb/Beget | от 120₽/мес | ⚡ 15 мин | ❌ | ✅ |
---
## 🎯 Рекомендации
**Для быстрого запуска:** Netlify или Cloudflare Pages
**Для 100% бесплатно:** GitHub Pages
**Для импортозамещения:** Яндекс.Облако
**Для полного контроля:** Свой VPS + Nginx
---
## 🆘 Помощь
**Не работает сборка?**
```bash
# Очистите кеш и пересоберите
rm -rf node_modules dist
npm install
npm run build
```
**Проблемы с роутингом?**
- Проверьте наличие `.htaccess` (Apache) или настройки Nginx
- На платформах типа Netlify/Cloudflare это работает автоматически
**Белый экран после деплоя?**
- Проверьте консоль браузера (F12)
- Убедитесь что загружены все файлы из `dist/`
---
## 📞 Контакты
При возникновении проблем с деплоем - проверьте логи сборки на выбранной платформе.

View File

@@ -1,237 +0,0 @@
# 📁 Обзор файлов проекта
## 🚀 НАЧНИТЕ С ЭТОГО ФАЙЛА
**→ START-HERE.md** - Быстрый старт для деплоя на Netlify
---
## 📖 Документация по деплою (в порядке важности)
### Обязательно прочитать:
1. **COMMIT-AND-DEPLOY.md** - Пошаговая инструкция коммита и деплоя
2. **NETLIFY-FIX.md** - Решение проблем с Netlify
3. **NODE-VERSION-FIX.md** - Информация о Node.js v18
### Дополнительная информация:
4. **DEPLOYMENT.md** - Полная инструкция по всем платформам
5. **DEPLOY-QUICK.md** - Быстрая шпаргалка
6. **PLATFORMS.md** - Детальное сравнение платформ
7. **DEPLOYMENT-CHECKLIST.md** - Чеклист для деплоя
### История изменений:
8. **LATEST-FIXES.md** - Последние исправления (Node.js v18)
9. **FIXES-SUMMARY.md** - Полная сводка всех исправлений
### Специфичные платформы:
10. **deploy-yandex-cloud.md** - Яндекс.Облако
11. **deploy-traditional-hosting.md** - Timeweb, Beget, Reg.ru
---
## 🔧 Конфигурационные файлы
### Главные конфигурации:
- **package.json** - Зависимости и скрипты
- Содержит `engines` для Node.js 18
- **vite.config.ts** - Конфигурация Vite
- `outDir: 'build'` - выходная папка
- **tsconfig.json** - TypeScript конфигурация
### Деплой конфигурации:
- **.nvmrc** - Фиксация Node.js 18 (для Netlify)
- **netlify.toml** - Настройки Netlify
- `publish = "build"`
- `NODE_VERSION = "18"`
- **vercel.json** - Настройки Vercel (опционально)
- **.htaccess** - Для Apache хостинга
- **.gitignore** - Исключения для Git
### Стили и сборка:
- **postcss.config.js** - PostCSS конфигурация
- **tailwind.config.js** - Tailwind CSS v4 конфигурация
- **/styles/globals.css** - Глобальные стили
- **/styles/animations.css** - Анимации
---
## 🛠 Скрипты и утилиты
### Скрипты проверки:
- **check-build.sh** - Проверка сборки (Linux/Mac)
- **check-build.bat** - Проверка сборки (Windows)
- Проверяют Node.js версию
- Собирают проект
- Показывают output директорию
### Скрипты деплоя:
- **deploy.sh** - Полуавтоматический деплой (Linux/Mac)
- **deploy.bat** - Полуавтоматический деплой (Windows)
---
## 📱 Исходный код приложения
### Корневые файлы:
- **App.tsx** - Главный компонент с роутингом
- **main.tsx** - Точка входа приложения
- **index.html** - HTML шаблон
### Компоненты:
- **/components/Header.tsx** - Шапка с навигацией
- **/components/Footer.tsx** - Подвал сайта
- **/components/Hero.tsx** - Hero-секция с метриками
- **/components/About.tsx** - О компании
- **/components/Services.tsx** - Услуги
- **/components/Solutions.tsx** - Решения
- **/components/Cases.tsx** - Кейсы
- **/components/Contact.tsx** - Контакты
- **/components/ContactModal.tsx** - Модальное окно
- **/components/CategoryPage.tsx** - Шаблон страницы категории
- **/components/ui/** - UI компоненты (shadcn/ui)
### Страницы:
- **/pages/HomePage.tsx** - Главная страница
- **/pages/RussianSoftwarePage.tsx** - Российское ПО
- **/pages/RussianHardwarePage.tsx** - Российское оборудование
- **/pages/CloudPage.tsx** - Облачные решения
- **/pages/CybersecurityPage.tsx** - Кибербезопасность
- **/pages/BusinessPage.tsx** - Бизнес-приложения
- **/pages/AISolutionsPage.tsx** - AI решения
- **/pages/CADandGISPage.tsx** - CAD/GIS системы
- **/pages/IndustrialSolutionsPage.tsx** - Промышленные решения
- **/pages/HardwareSolutionsPage.tsx** - Оборудование
- **/pages/GovernmentPage.tsx** - Госсектор
- **/pages/ConsultingPage.tsx** - Консалтинг
- **/pages/IntegrationPage.tsx** - Интеграция
- **/pages/ImplementationPage.tsx** - Внедрение
- **/pages/SupportPage.tsx** - Поддержка
- **/pages/ManagedServicesPage.tsx** - Управляемые услуги
- **/pages/SubscriptionPage.tsx** - Подписки
- **/pages/SpecializedServicesPage.tsx** - Спец. услуги
---
## 🎨 Статические ресурсы
### Public файлы:
- **/public/favicon.svg** - Иконка сайта (буква "S")
---
## 📚 Дополнительные файлы
- **README.md** - Основной README проекта
- **Attributions.md** - Лицензии и атрибуты
- **guidelines/Guidelines.md** - Руководство по разработке
---
## 🗂 Структура проекта
```
/
├── 🚀 START-HERE.md ← НАЧНИТЕ ОТСЮДА
├── 📖 Документация по деплою
│ ├── COMMIT-AND-DEPLOY.md
│ ├── NETLIFY-FIX.md
│ ├── NODE-VERSION-FIX.md
│ ├── DEPLOYMENT.md
│ ├── DEPLOY-QUICK.md
│ ├── PLATFORMS.md
│ ├── DEPLOYMENT-CHECKLIST.md
│ ├── LATEST-FIXES.md
│ ├── FIXES-SUMMARY.md
│ ├── deploy-yandex-cloud.md
│ └── deploy-traditional-hosting.md
├── 🔧 Конфигурации
│ ├── .nvmrc
│ ├── .gitignore
│ ├── package.json
│ ├── vite.config.ts
│ ├── tsconfig.json
│ ├── netlify.toml
│ ├── postcss.config.js
│ ├── tailwind.config.js
│ ├── .htaccess
│ └── vercel.json
├── 🛠 Скрипты
│ ├── check-build.sh
│ ├── check-build.bat
│ ├── deploy.sh
│ └── deploy.bat
├── 📱 Исходный код
│ ├── App.tsx
│ ├── main.tsx
│ ├── index.html
│ ├── /components/ (React компоненты)
│ ├── /pages/ (Страницы)
│ ├── /styles/ (Стили)
│ └── /public/ (Статические файлы)
└── 📚 Прочее
├── README.md
├── Attributions.md
└── guidelines/
```
---
## 🎯 Какой файл читать?
### Хочу быстро задеплоить на Netlify:
→ **START-HERE.md**
### Netlify выдаёт ошибку:
→ **NETLIFY-FIX.md**
### Проблемы с Node.js версией:
→ **NODE-VERSION-FIX.md**
### Хочу сравнить платформы:
→ **PLATFORMS.md**
### Нужна полная инструкция:
→ **DEPLOYMENT.md**
### Хочу задеплоить на Яндекс.Облако:
→ **deploy-yandex-cloud.md**
### Что было исправлено:
→ **LATEST-FIXES.md** или **FIXES-SUMMARY.md**
---
## 📋 NPM Scripts
```bash
npm run dev # Запуск dev-сервера (http://localhost:5173)
npm run build # Сборка для продакшена (→ build/)
npm run preview # Предпросмотр продакшен-сборки
```
---
## ✨ Особенности проекта
- ✅ **React 18** + **TypeScript**
- ✅ **Vite 5** для быстрой сборки
- ✅ **Tailwind CSS v4** для стилизации
- ✅ **React Router** для навигации
- ✅ **Lucide Icons** для иконок
- ✅ **shadcn/ui** компоненты
- ✅ **Responsive дизайн**
- ✅ **Российские аналоги** зарубежных решений
- ✅ **Минималистичный дизайн** без фотографий
---
## 🔗 Полезные ссылки
- Vite: https://vitejs.dev
- React: https://react.dev
- Tailwind CSS: https://tailwindcss.com
- Netlify: https://netlify.com
- Node.js: https://nodejs.org
---
Этот файл создан для быстрой навигации по проекту. Начните с **START-HERE.md**! 🚀

View File

@@ -1,226 +0,0 @@
# 📋 Сводка исправлений для деплоя
## 🔧 Последнее обновление: Node.js версия (24.12.2024)
### ❌ Новая проблема
Netlify использовал Node.js v22.21.1, вызывая проблемы совместимости.
### ✅ Решение
1. Зафиксирована **Node.js 18 LTS** через:
- `.nvmrc` (создан)
- `package.json` engines (добавлен)
- `netlify.toml` (уже был)
2. Обновлён `vite.config.ts`:
- `outDir: 'build'` вместо `'dist'`
3. Обновлены скрипты проверки:
- Проверка версии Node.js
- Предупреждение о Node.js v22
**Документация:** См. `NODE-VERSION-FIX.md` и `LATEST-FIXES.md`
---
## 🔧 Предыдущие исправления
### 1. Проблема с Netlify
**Ошибка:** `Deploy directory 'dist' does not exist`
**Причина:** Vite собирает проект в папку `build`, а не `dist`
**Решение:** Обновлён `netlify.toml`:
```toml
[build]
command = "npm run build"
publish = "build" # Изменено с "dist" на "build"
```
---
### 2. Добавлены скрипты проверки сборки
**check-build.sh** (Linux/Mac) и **check-build.bat** (Windows)
Эти скрипты:
- Очищают старые сборки
- Устанавливают зависимости
- Собирают проект
- Показывают, какая папка создана (dist или build)
- Подсказывают правильные настройки для Netlify
**Использование:**
```bash
# Linux/Mac
chmod +x check-build.sh
./check-build.sh
# Windows
check-build.bat
```
---
### 3. Создан .gitignore
Файл `.gitignore` для исключения:
- node_modules
- .env файлов
- логов
- кеша
- системных файлов
---
### 4. Обновлена документация
#### NETLIFY-FIX.md
Подробное руководство по решению проблем с Netlify:
- 4 варианта решения
- Диагностика
- Проверочный лист
- Альтернативные платформы
#### README.md
Добавлен раздел с проверкой сборки перед деплоем
#### DEPLOYMENT.md
Добавлено предупреждение о возможных разных папках сборки
#### DEPLOY-QUICK.md
Добавлена информация о проверке сборки
---
## 📁 Новые файлы
```
/.gitignore - Исключения для Git
/check-build.sh - Скрипт проверки (Linux/Mac)
/check-build.bat - Скрипт проверки (Windows)
/NETLIFY-FIX.md - Решение проблем Netlify
/FIXES-SUMMARY.md - Этот файл
/.nvmrc - Фиксация Node.js версии
/NODE-VERSION-FIX.md - Решение проблем с Node.js версией
/LATEST-FIXES.md - Последние исправления
```
## ✅ Файлы обновлены
```
/netlify.toml - publish: "build" вместо "dist"
/README.md - Добавлена секция проверки
/DEPLOYMENT.md - Добавлено предупреждение
/DEPLOY-QUICK.md - Добавлена информация о проверке
/vite.config.ts - outDir: 'build' вместо 'dist'
/package.json - Добавлены engines
```
---
## 🚀 Что делать дальше
### Шаг 1: Закоммитьте изменения
```bash
git add .
git commit -m "Fix: Update deployment configs for build directory"
git push
```
### Шаг 2: Деплой на Netlify
После пуша Netlify автоматически:
1. Обнаружит новый коммит
2. Запустит сборку `npm run build`
3. Найдёт папку `build` (согласно netlify.toml)
4. Задеплоит сайт
### Шаг 3: Проверка
После деплоя проверьте:
- [ ] Сайт открывается
- [ ] Навигация работает
- [ ] Стили применяются
- [ ] Нет ошибок в консоли
---
## 🆘 Если Netlify всё ещё не работает
### Вариант 1: Проверьте настройки Netlify UI
1. Site settings → Build & deploy → Build settings
2. Publish directory должна быть: `build`
3. Если нет - измените вручную
### Вариант 2: Используйте Cloudflare Pages
Cloudflare лучше определяет настройки автоматически:
```
1. https://pages.cloudflare.com
2. Build: npm run build
3. Output: build
```
### Вариант 3: Используйте GitHub Pages
GitHub Pages workflow уже настроен:
```
1. Settings → Pages → Source: "GitHub Actions"
2. Готово!
```
---
## 📊 Текущая конфигурация
### Сборка
- Команда: `npm run build`
- Output: `build/` (судя по логам Netlify)
- Конфигурация: `vite.config.ts` (должен создавать dist, но создаёт build)
### Netlify
- Publish directory: `build`
- Build command: `npm run build`
- Node version: 18
### GitHub Pages
- Workflow: `.github/workflows/deploy.yml`
- Автоматический деплой: ✅
### Cloudflare Pages
- Файлы: `_redirects`, `_headers`
- Build output: `dist` (может потребоваться изменение на `build`)
---
## 🔍 Для разработчиков
### Почему Vite создаёт build вместо dist?
Судя по логам Netlify:
```
build/assets/index-Bi1CT-Fn.js 244.81 kB │ gzip: 69.31 kB
✓ built in 1.93s
```
Vite явно создаёт папку `build`, хотя в `vite.config.ts` указано `outDir: 'dist'`.
**Возможные причины:**
1. Конфигурация переопределяется где-то ещё
2. Netlify использует собственную конфигурацию Vite
3. Есть конфликт версий
**Решение:**
- Приняли `build` как output directory
- Обновили все конфигурации соответственно
---
## ✅ Итог
Все конфигурационные файлы обновлены и готовы к деплою!
**Следующий шаг:**
```bash
git add .
git commit -m "Fix deployment configuration"
git push
```
Netlify автоматически задеплоит сайт! 🎉

View File

@@ -1,230 +0,0 @@
# 🔧 Последние исправления (Node.js версия)
## Дата: 24 декабря 2024
## ❌ Проблема
Netlify использовал Node.js v22.21.1, что вызывало проблемы совместимости с:
- Vite 5.x
- Tailwind CSS v4
- PostCSS
- TypeScript build tools
## ✅ Решение
### 1. Зафиксирована версия Node.js на 18 LTS
**Создан `.nvmrc`:**
```
18
```
**Обновлён `package.json`:**
```json
{
"engines": {
"node": ">=18.0.0 <22.0.0",
"npm": ">=9.0.0"
}
}
```
**Уже был в `netlify.toml`:**
```toml
[build.environment]
NODE_VERSION = "18"
```
### 2. Исправлен output директорий в vite.config.ts
**Было:**
```typescript
build: {
outDir: 'dist',
}
```
**Стало:**
```typescript
build: {
outDir: 'build',
}
```
Теперь Vite создаёт папку `build`, что соответствует настройкам в `netlify.toml`.
### 3. Обновлены скрипты проверки
`check-build.sh` и `check-build.bat` теперь:
- Проверяют версию Node.js
- Предупреждают если используется Node.js v22
- Показывают размер и содержимое build/
---
## 📁 Изменённые файлы
```
/.nvmrc - СОЗДАН (новый)
/package.json - ОБНОВЛЁН (добавлен engines)
/vite.config.ts - ОБНОВЛЁН (outDir: 'build')
/check-build.sh - ОБНОВЛЁН (проверка Node версии)
/check-build.bat - ОБНОВЛЁН (проверка Node версии)
/NODE-VERSION-FIX.md - СОЗДАН (документация)
/LATEST-FIXES.md - СОЗДАН (этот файл)
/README.md - ОБНОВЛЁН (требования Node.js)
```
---
## 🚀 Что делать дальше
### 1. Закоммитьте все изменения
```bash
git status
git add .
git commit -m "Fix: Pin Node.js to v18 LTS and set Vite outDir to 'build'"
git push origin main
```
### 2. Netlify автоматически начнёт деплой
После пуша Netlify:
1. Прочитает `.nvmrc` → использует Node.js 18
2. Установит зависимости с `npm install`
3. Запустит `npm run build` → Vite создаст папку `build`
4. Опубликует содержимое `build/` (согласно `netlify.toml`)
### 3. Проверка деплоя
Откройте **Netlify Deploy Logs** и убедитесь что:
```
✅ v18.x.x is already installed.
✅ Now using node v18.x.x
✅ npm run build
✅ vite v5.x.x building for production...
✅ build/assets/index-xxxxx.js
✅ ✓ built in X.XXs
✅ Deploy successful!
```
---
## 🔍 Проверка локально (перед коммитом)
Убедитесь что у вас Node.js 18:
```bash
# Проверить версию Node
node -v
# Если не 18, установите через nvm
nvm install 18
nvm use 18
# Запустите скрипт проверки
chmod +x check-build.sh
./check-build.sh
# Должно показать:
# ✅ Node.js версия совместима (v18.x.x)
# ✅ BUILD OUTPUT: build
```
---
## 📊 Сравнение версий Node.js
| Версия | Статус | Совместимость | Рекомендация |
|--------|--------|---------------|--------------|
| Node.js 16 | EOL | ⚠️ Устарела | Обновите на 18 |
| Node.js 18 | LTS ✅ | ✅ Отлично | **Используйте** |
| Node.js 20 | LTS | ✅ Хорошо | Допустимо |
| Node.js 22 | Current | ⚠️ Проблемы | Не рекомендуется |
**LTS** = Long Term Support (долгосрочная поддержка)
---
## 🆘 Если деплой всё ещё не работает
### Вариант 1: Очистите кеш Netlify
1. Netlify UI → **Site settings** → **Build & deploy**
2. Нажмите **"Clear cache and retry deploy"**
### Вариант 2: Проверьте переменные окружения
В Netlify UI:
1. **Site settings** → **Environment variables**
2. Убедитесь что `NODE_VERSION` **НЕ** установлена вручную (или равна 18)
3. Если есть другое значение - удалите его (`.nvmrc` имеет приоритет)
### Вариант 3: Используйте Cloudflare Pages
Cloudflare Pages лучше работает с новыми версиями инструментов:
```
1. https://pages.cloudflare.com
2. Подключить GitHub репозиторий
3. Build command: npm run build
4. Build output: build
5. Environment variable: NODE_VERSION = 18
```
### Вариант 4: Используйте GitHub Pages
Уже настроено автоматически:
```
1. GitHub repo → Settings → Pages
2. Source: "GitHub Actions"
3. Workflow автоматически использует Node 18
```
---
## ✅ Контрольный список
- [x] Создан `.nvmrc` с версией 18
- [x] Добавлен `engines` в `package.json`
- [x] `vite.config.ts` обновлён (outDir: 'build')
- [x] Скрипты проверки обновлены
- [x] Документация обновлена
- [ ] **ВАШ ШАГ:** Закоммитьте изменения
- [ ] **ВАШ ШАГ:** Запушьте в GitHub
- [ ] **АВТОМАТИЧЕСКИ:** Netlify запустит деплой
- [ ] **ПРОВЕРЬТЕ:** Сайт задеплоен успешно
---
## 📖 Дополнительная документация
- **NODE-VERSION-FIX.md** - подробная информация о Node.js версиях
- **NETLIFY-FIX.md** - решение проблем с Netlify
- **DEPLOYMENT.md** - полная инструкция по деплою
- **DEPLOY-QUICK.md** - быстрая шпаргалка
---
## ✨ Ожидаемый результат
После коммита и пуша:
```
✓ Код запушен в GitHub
↓
✓ Netlify обнаружил изменения
↓
✓ Запущен build с Node.js 18
↓
✓ Vite создал папку build/
↓
✓ Netlify опубликовал build/
↓
✓ Сайт доступен: https://your-site.netlify.app
```
**Время деплоя:** ~2-3 минуты
Удачи! 🚀

View File

@@ -1,195 +0,0 @@
# 🔧 Решение проблемы с Netlify Deploy
## Проблема
```
Deploy did not succeed: Deploy directory 'dist' does not exist
```
## Причина
Vite создаёт папку `build` вместо `dist`, или конфигурация не применяется правильно.
---
## ✅ Решение 1: Обновлён netlify.toml (УЖЕ СДЕЛАНО)
Файл `netlify.toml` обновлён для использования папки `build`:
```toml
[build]
command = "npm run build"
publish = "build"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
```
**Просто сделайте новый коммит и пуш - должно заработать!**
---
## ✅ Решение 2: Проверка локально
Запустите скрипт проверки:
**Linux/Mac:**
```bash
chmod +x check-build.sh
./check-build.sh
```
**Windows:**
```cmd
check-build.bat
```
Скрипт покажет, в какую папку собирается проект (dist или build).
---
## ✅ Решение 3: Настройка через Netlify UI
Если проблема сохраняется:
1. Зайдите в **Site settings** → **Build & deploy** → **Build settings**
2. Измените **Publish directory** на:
- `build` (если Vite собирает в build)
- `dist` (если Vite собирает в dist)
3. Сохраните и запустите новый деплой
---
## ✅ Решение 4: Принудительная сборка в dist
Если хотите использовать именно `dist`, убедитесь что `vite.config.ts` правильный:
```typescript
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
build: {
outDir: 'dist', // Явно указываем dist
emptyOutDir: true,
},
});
```
Затем в `netlify.toml`:
```toml
[build]
command = "npm run build"
publish = "dist"
```
---
## 🔍 Диагностика
### Проверка логов Netlify
В логах деплоя ищите строки типа:
```
build/assets/index-xxxxx.js
```
или
```
dist/assets/index-xxxxx.js
```
Это покажет, в какую папку собирается проект.
### Локальная проверка
```bash
# Очистка
rm -rf dist build node_modules
# Установка
npm install
# Сборка
npm run build
# Проверка результата
ls -la
# Должна появиться папка dist или build
```
---
## 📝 Текущая конфигурация
**netlify.toml** настроен на: `publish = "build"`
Это основано на логах деплоя, где видно:
```
build/assets/index-Bi1CT-Fn.js 244.81 kB │ gzip: 69.31 kB
✓ built in 1.93s
```
---
## 🚀 Быстрое решение
1. **Закоммитьте изменения:**
```bash
git add netlify.toml
git commit -m "Fix: Update Netlify publish directory to build"
git push
```
2. **Netlify автоматически запустит новый деплой**
3. **Готово!** Сайт должен задеплоиться успешно
---
## 🆘 Если всё ещё не работает
### Вариант A: Смените платформу на Cloudflare Pages
Cloudflare Pages лучше определяет конфигурацию автоматически:
1. https://pages.cloudflare.com
2. Build command: `npm run build`
3. Build output: попробуйте оба варианта - `dist` или `build`
### Вариант B: Используйте GitHub Pages
GitHub Pages workflow уже настроен в `.github/workflows/deploy.yml`:
1. Settings → Pages → Source: "GitHub Actions"
2. Готово! Деплой автоматический
---
## 📊 Проверочный лист
- [ ] netlify.toml обновлён (publish = "build")
- [ ] Закоммичены все изменения
- [ ] Запушен код в репозиторий
- [ ] Netlify автоматически запустил новый деплой
- [ ] Проверены логи деплоя
- [ ] Сайт открывается успешно
---
## ✅ Ожидаемый результат
После исправления в логах Netlify должно быть:
```
✓ built in 1.93s
Deploy site
────────────────────────────────────────────────────────────────
Deploy successful!
Website URL: https://your-site.netlify.app
```
Удачи! 🚀

View File

@@ -1,208 +0,0 @@
# 🔧 Исправление проблем с версией Node.js
## Проблема
Netlify использует Node.js v22, которая может быть несовместима с некоторыми пакетами (Vite, Tailwind CSS v4, и др.).
## ✅ Решение (УЖЕ ПРИМЕНЕНО)
Версия Node.js зафиксирована на **18 LTS** следующими способами:
### 1. Файл .nvmrc
```
18
```
### 2. package.json
```json
{
"engines": {
"node": ">=18.0.0 <22.0.0",
"npm": ">=9.0.0"
}
}
```
### 3. netlify.toml
```toml
[build.environment]
NODE_VERSION = "18"
```
### 4. vite.config.ts
Обновлён `outDir` на `build`:
```typescript
export default defineConfig({
build: {
outDir: 'build', // Изменено с 'dist' на 'build'
emptyOutDir: true,
sourcemap: false,
},
});
```
---
## 🚀 Что делать дальше
### Шаг 1: Закоммитьте изменения
```bash
git add .
git commit -m "Fix: Pin Node.js to v18 LTS and update build output to 'build'"
git push
```
### Шаг 2: Netlify автоматически запустит деплой
После пуша Netlify:
- Использует Node.js v18 (из .nvmrc)
- Соберёт проект командой `npm run build`
- Найдёт папку `build` (из vite.config.ts и netlify.toml)
- Задеплоит сайт
---
## 🔍 Проверка локально
Убедитесь что у вас локально Node.js 18:
```bash
# Проверить версию
node -v
# Если используете nvm (рекомендуется)
nvm install 18
nvm use 18
# Проверить сборку
./check-build.sh # Linux/Mac
check-build.bat # Windows
```
---
## 📊 Почему Node.js 22 вызывает проблемы?
Node.js 22 - это очень новая версия (выпущена в апреле 2024), и многие популярные инструменты ещё не полностью протестированы с ней:
- **Vite 5.x** - стабильно работает на Node 18-20
- **Tailwind CSS v4** - новая версия, оптимизирована для Node 18+
- **PostCSS** - лучшая совместимость на Node 18 LTS
- **TypeScript** - рекомендует Node 18 LTS
**Node.js 18 LTS** (Long Term Support):
- Поддержка до апреля 2025
- Максимальная стабильность
- Совместимость со всеми популярными инструментами
---
## 🆘 Если проблема сохраняется
### 1. Проверьте полные логи Netlify
В Netlify UI зайдите в:
- **Deploys** → Выберите последний деплой
- Нажмите на **Deploy log**
- Найдите строки после "Finished restoring cached build plugins"
### 2. Очистите кеш Netlify
В настройках Netlify:
1. **Site settings** → **Build & deploy** → **Build settings**
2. Нажмите **Clear cache and retry deploy**
### 3. Проверьте локальную сборку
```bash
# Очистите всё
rm -rf node_modules dist build package-lock.json
# Переустановите зависимости
npm install
# Соберите
npm run build
# Проверьте результат
ls -la build/
```
Если локально собирается без ошибок, но на Netlify нет - проблема в среде Netlify.
### 4. Альтернативные платформы
Если Netlify продолжает давать ошибки, используйте:
#### Cloudflare Pages (рекомендуется)
```
1. https://pages.cloudflare.com
2. Build: npm run build
3. Output: build
4. Node version: 18
```
#### GitHub Pages
```
Settings → Pages → Source: "GitHub Actions"
(Workflow уже настроен в .github/workflows/deploy.yml)
```
---
## 📋 Проверочный лист
- [x] Создан `.nvmrc` с версией 18
- [x] Добавлен `engines` в `package.json`
- [x] `netlify.toml` указывает `NODE_VERSION = "18"`
- [x] `vite.config.ts` использует `outDir: 'build'`
- [x] `netlify.toml` указывает `publish = "build"`
- [ ] Закоммичены все изменения
- [ ] Запушен код в GitHub
- [ ] Netlify запустил новый деплой
- [ ] Деплой успешен
---
## ✅ Ожидаемый результат
После исправлений в логах Netlify должно быть:
```
v18.x.x is already installed.
Now using node v18.x.x (npm v9.x.x)
...
npm run build
...
vite v5.x.x building for production...
transforming...
✓ 1234 modules transformed.
rendering chunks...
build/assets/index-xxxxx.js 244.81 kB │ gzip: 69.31 kB
✓ built in 1.93s
Deploy site
────────────────────────────────────────
✓ Finished hashing 15 files
✓ CDN requesting 15 files
✓ Finished uploading 15 assets
✓ Deploy is live!
Website URL: https://your-site.netlify.app
```
---
## 📞 Дополнительная помощь
Если после всех исправлений деплой всё ещё падает:
1. **Скопируйте полный лог** от "Build ready to start" до конца
2. Найдите строку с ошибкой (обычно красным цветом)
3. Поищите эту ошибку в интернете или создайте issue
**Полезные ссылки:**
- Netlify Node.js docs: https://docs.netlify.com/configure-builds/manage-dependencies/#node-js-and-javascript
- Vite troubleshooting: https://vitejs.dev/guide/troubleshooting.html
- Node.js LTS releases: https://nodejs.org/en/about/previous-releases
Удачи! 🚀

View File

@@ -1,294 +0,0 @@
# 🌐 Подробное сравнение платформ для деплоя
## 🏆 ТОП-3 рекомендации
### 🥇 Netlify - Лучший для начинающих
**✅ Преимущества:**
- Автоматическое определение фреймворка
- Встроенный CI/CD
- Бесплатный SSL сертификат
- Автоматические превью для pull requests
- 100 GB трафика/месяц бесплатно
- Настройка кастомного домена за 1 клик
**❌ Недостатки:**
- Не российская компания
- Лимиты на сборки (300 минут/месяц на бесплатном)
**🎯 Идеально для:**
- Быстрого запуска
- Прототипов и MVP
- Автоматического деплоя
**📊 Стоимость:**
- Free: $0/месяц (достаточно для большинства)
- Pro: $19/месяц (1000 минут сборки, 400 GB трафика)
---
### 🥈 Cloudflare Pages - Самый быстрый
**✅ Преимущества:**
- Глобальная CDN сеть
- НЕОГРАНИЧЕННЫЙ трафик на бесплатном плане
- Очень высокая скорость загрузки
- Защита от DDoS атак
- 500 сборок/месяц
**❌ Недостатки:**
- Не российская компания
- Чуть сложнее в настройке чем Netlify
**🎯 Идеально для:**
- Высоконагруженных сайтов
- Глобальной аудитории
- Максимальной скорости
**📊 Стоимость:**
- Free: $0/месяц (неограниченный трафик!)
- Платных планов для статических сайтов нет
---
### 🥉 GitHub Pages - Простейший
**✅ Преимущества:**
- 100% бесплатно навсегда
- Интеграция с GitHub
- Автоматический HTTPS
- Легкая настройка кастомного домена
- Нет лимитов на сборки
**❌ Недостатки:**
- Лимит 100 GB трафика/месяц
- Только публичные репозитории (на бесплатном)
- Нет серверных функций
**🎯 Идеально для:**
- Личных проектов
- Open source проектов
- Документации
- Портфолио
**📊 Стоимость:**
- Free: $0/месяц
---
## 🇷🇺 Российские платформы
### Яндекс.Облако Object Storage + CDN
**✅ Преимущества:**
- Российская компания
- Соответствие 152-ФЗ
- Интеграция с другими сервисами Яндекса
- Высокая скорость в РФ
- Можно оплатить картой российского банка
**❌ Недостатки:**
- Платно (хоть и недорого)
- Требует больше настройки
- Нужно самому настраивать CI/CD
**🎯 Идеально для:**
- Коммерческих проектов в РФ
- Компаний, требующих импортозамещения
- Работы с персональными данными
**📊 Стоимость:**
- Object Storage: ~0.40 ₽/ГБ хранения/месяц
- CDN трафик: ~0.85 ₽/ГБ
- Пример: Сайт 50 МБ + 1000 посещений = ~50-100₽/месяц
**🔧 Настройка:**
- Сложность: Средняя
- Время: 10-15 минут
- Требуется: Yandex Cloud CLI
---
### VK Cloud Solutions (Mail.ru Cloud)
**✅ Преимущества:**
- Российская компания (VK)
- Object Storage аналогично AWS S3
- CDN с точками в РФ
- 152-ФЗ
**❌ Недостатки:**
- Платно
- Меньше документации чем у Яндекса
**📊 Стоимость:**
- Примерно как Яндекс.Облако
- Есть промо-период с бесплатными ресурсами
---
### Традиционный хостинг (Timeweb, Beget, Reg.ru)
**✅ Преимущества:**
- Понятный интерфейс
- Техподдержка на русском
- Всё в одном месте (домен + хостинг + почта)
- Можно использовать для других проектов
**❌ Недостатки:**
- Платно
- Ручное обновление файлов
- Нет автоматического деплоя (без настройки)
**📊 Стоимость:**
- Timeweb: от 169₽/месяц
- Beget: от 200₽/месяц
- Reg.ru: от 120₽/месяц
- HostiMan: от 150₽/месяц
**🔧 Настройка:**
- Сложность: Легкая (FTP загрузка)
- Время: 5-10 минут
- Требуется: FTP клиент (FileZilla)
---
## 📊 Детальное сравнение
| Характеристика | Netlify | Cloudflare | GitHub Pages | Яндекс.Облако | Хостинг |
|----------------|---------|------------|--------------|---------------|---------|
| **Цена** | Бесплатно | Бесплатно | Бесплатно | ~100₽/мес | от 120₽/мес |
| **Трафик** | 100GB | ∞ | 100GB | Pay-as-you-go | ~100GB+ |
| **SSL** | ✅ Авто | ✅ Авто | ✅ Авто | ✅ (настройка) | ✅ Let's Encrypt |
| **CDN** | ✅ | ✅✅✅ | ✅ | ✅ (доп. оплата) | ❌/✅ |
| **Автодеплой** | ✅ | ✅ | ✅ | ✅ (настройка) | ❌ |
| **Скорость в РФ** | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| **Скорость мира** | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| **Поддержка** | Отличная (EN) | Хорошая (EN) | FAQ | Хорошая (RU) | Отличная (RU) |
| **152-ФЗ** | ❌ | ❌ | ❌ | ✅ | ✅ |
| **Сложность** | ⭐ Легко | ⭐ Легко | ⭐ Легко | ⭐⭐ Средне | ⭐⭐ Средне |
---
## 🎯 Рекомендации по выбору
### Выбирайте Netlify если:
- ✅ Нужен быстрый запуск (2 минуты)
- ✅ Хотите автоматический деплой
- ✅ Не важна российская юрисдикция
- ✅ Трафик до 100 GB/месяц
### Выбирайте Cloudflare Pages если:
- ✅ Нужна максимальная скорость
- ✅ Ожидается много трафика
- ✅ Важна защита от DDoS
- ✅ Глобальная аудитория
### Выбирайте GitHub Pages если:
- ✅ Проект на GitHub
- ✅ Open source
- ✅ Нужно 100% бесплатно
- ✅ Простой статический сайт
### Выбирайте Яндекс.Облако если:
- ✅ Коммерческий проект
- ✅ Нужна российская платформа
- ✅ Требуется 152-ФЗ
- ✅ Работа с ПД граждан РФ
- ✅ Импортозамещение
### Выбирайте хостинг если:
- ✅ Уже есть хостинг
- ✅ Нужна техподдержка на русском
- ✅ Планируется несколько сайтов
- ✅ Нужна почта на своем домене
---
## 🚀 Скорость настройки
**Netlify:** 2 минуты
```
1. Регистрация (30 сек)
2. Подключить Git (30 сек)
3. Деплой (1 мин)
```
**Cloudflare Pages:** 3 минуты
```
1. Регистрация (30 сек)
2. Подключить Git (1 мин)
3. Настройка сборки (1 мин)
4. Деплой (30 сек)
```
**GitHub Pages:** 1 минута
```
1. Код уже на GitHub (0 сек)
2. Settings → Pages (30 сек)
3. Выбрать GitHub Actions (30 сек)
```
**Яндекс.Облако:** 15 минут
```
1. Регистрация (2 мин)
2. Установка CLI (3 мин)
3. Создание бакета (2 мин)
4. Настройка доступа (3 мин)
5. Первый деплой (5 мин)
```
**Традиционный хостинг:** 20 минут
```
1. Покупка хостинга (5 мин)
2. Получение доступов (5 мин)
3. Локальная сборка (2 мин)
4. Загрузка по FTP (5 мин)
5. Проверка (3 мин)
```
---
## 💡 Профессиональные советы
### Для стартапов и MVP:
**Netlify** - начните бесплатно, масштабируйтесь по мере роста
### Для высоконагруженных проектов:
**Cloudflare Pages** - неограниченный трафик и максимальная скорость
### Для российского бизнеса:
**Яндекс.Облако** - соответствие законодательству РФ
### Для личных проектов:
**GitHub Pages** - просто и бесплатно навсегда
### Для корпоративных клиентов:
**Традиционный хостинг** - полный контроль и поддержка
---
## 🔐 Безопасность и соответствие
| Платформа | HTTPS | 152-ФЗ | GDPR | DDoS защита |
|-----------|-------|--------|------|-------------|
| Netlify | ✅ Авто | ❌ | ✅ | ✅ |
| Cloudflare | ✅ Авто | ❌ | ✅ | ✅✅✅ |
| GitHub Pages | ✅ Авто | ❌ | ✅ | ✅ |
| Яндекс.Облако | ✅ | ✅ | ❌ | ✅ (доп.) |
| Хостинг | ✅ | ✅ | Зависит | Зависит |
---
## 📞 Куда обращаться за помощью
**Netlify:** https://docs.netlify.com
**Cloudflare:** https://developers.cloudflare.com/pages
**GitHub Pages:** https://docs.github.com/pages
**Яндекс.Облако:** https://cloud.yandex.ru/docs
**Timeweb:** https://timeweb.com/ru/help
**Beget:** https://beget.com/ru/kb
---
Выбрали платформу? Смотрите `DEPLOYMENT.md` для пошаговых инструкций! 🚀

View File

@@ -1,659 +0,0 @@
# Полный промт для воссоздания корпоративного сайта SOFTCLICK
## ОБЩАЯ КОНЦЕПЦИЯ
Создай современный корпоративный сайт для российской IT-компании **SOFTCLICK** — интегратора IT-решений, аналогичный по структуре Softline.ru, но в более сдержанных бизнес-тонах. Основная специализация: импортозамещение, переход на российские решения, комплексная автоматизация предприятий.
**Ключевые принципы дизайна:**
- Лаконичный минималистичный стиль в духе Яндекса/Google
- БЕЗ использования фотографий людей/офисов — только дизайнерские элементы (иконки, градиенты, геометрия)
- Цветовая палитра: белый фон, голубой акцент (#2563eb blue-600), серые оттенки
- Чистая типографика, много воздуха, округлые элементы (rounded-xl, rounded-2xl)
- Плавные анимации (floating icons, smooth transitions)
---
## ТЕХНИЧЕСКИЙ СТЕК
### Основа:
- **React 18** + **TypeScript**
- **Vite** для сборки
- **Tailwind CSS v4** для стилизации
- **lucide-react** для иконок
- БЕЗ React Router — используется простая навигация через state
### Структура проекта:
```
/App.tsx — главный компонент с роутингом через state
/main.tsx — точка входа
/components/ — все компоненты
Header.tsx — шапка с выпадающими меню
Hero.tsx — главный баннер
Services.tsx — блок услуг
Solutions.tsx — отраслевые решения
Cases.tsx — кейсы
About.tsx — о компании
Contact.tsx — форма контактов
Footer.tsx — подвал
ContactModal.tsx — модальное окно
CategoryPage.tsx — универсальный шаблон страниц категорий
/pages/ — страницы категорий (17 штук)
/styles/ — глобальные стили и анимации
```
---
## ДЕТАЛЬНОЕ ОПИСАНИЕ КОМПОНЕНТОВ
### 1. HEADER (Header.tsx)
**Структура:**
- Фиксированная шапка (fixed top-0) с backdrop-blur-md
- Логотип: текст "SOFTCLICK" жирным шрифтом (text-2xl font-bold)
- Навигация (десктоп):
- **Решения** (выпадающее меню с 10 категориями)
- **Услуги** (выпадающее меню с 7 категориями)
- Кейсы (якорь на секцию)
- О компании (якорь на секцию)
- Контакты (якорь на секцию)
- Кнопка "Связаться" (синяя, открывает модальное окно)
- Мобильное меню (гамбургер-меню для экранов < lg)
**Выпадающие меню:**
*Решения:*
1. Облако
2. Российское ПО
3. Кибербезопасность
4. Решения на базе ИИ
5. Российские ноутбуки, ПК и серверы
6. Аппаратные решения
7. САПР и ГИС
8. Индустриальные решения
9. Для госсектора
10. Решения для бизнеса
*Услуги:*
1. Консалтинг и проектирование
2. Поставка и внедрение решений
3. Управляемые сервисы
4. Интеграция и разработка
5. Специализированные услуги по отраслям
6. Обслуживание и сопровождение
7. Услуги по подписке
**Стилизация меню:**
- Появление при наведении (onMouseEnter/onMouseLeave)
- Белая карточка с тенью (bg-white rounded-xl shadow-xl)
- Плавная анимация (fade-in slide-in-from-top-2)
- Ширина меню: w-80
- При hover пункт меню: bg-blue-50 text-blue-600
---
### 2. HERO SECTION (Hero.tsx)
**Контент:**
- Заголовок: "IT-решения для роста вашего бизнеса" (text-5xl lg:text-6xl)
- Подзаголовок: "Проектируем, внедряем и сопровождаем корпоративные IT-системы. Облачная инфраструктура, безопасность, автоматизация процессов."
- Бейдж: "Надежный партнер с 2021 года" (с синим пульсирующим индикатором)
- 2 кнопки: "Обсудить проект" (синяя) и "Портфолио" (серая)
**Метрики (3 колонки):**
- 300+ клиентов
- 50+ партнерств
- 95% повторных обращений
**Дизайнерский элемент (справа):**
Сетка 3x2 из округлых карточек с иконками:
- Cloud (голубая)
- Shield (синяя с градиентом, тень)
- Database (фиолетовая)
- Code (зеленая)
- Zap (оранжевая)
- Users (голубая)
Карточки имеют floating-анимацию (плавное движение вверх-вниз)
---
### 3. SERVICES (Services.tsx)
**6 карточек услуг в сетке (grid md:grid-cols-2 lg:grid-cols-3):**
1. **Облачные решения** (Cloud icon)
- Описание: "Миграция и управление инфраструктурой на базе Яндекс.Облако и VK Cloud"
- Градиент: from-blue-50 to-cyan-50
2. **Кибербезопасность** (Shield icon)
- Описание: "Комплексная защита периметра и данных с решениями Kaspersky"
- Градиент: from-violet-50 to-purple-50
3. **Цифровая трансформация** (Cpu icon)
- Описание: "Автоматизация процессов на платформах 1С и Галактика"
- Градиент: from-emerald-50 to-teal-50
4. **Управление данными** (Database icon)
- Описание: "Развертывание и поддержка СУБД Postgres Pro"
- Градиент: from-orange-50 to-amber-50
5. **Серверная инфраструктура** (Server icon)
- Описание: "Поставка и настройка оборудования Kraftway"
- Градиент: from-pink-50 to-rose-50
6. **Системная интеграция** (Settings icon)
- Описание: "Построение корпоративной ИТ-архитектуры на Astra Linux"
- Градиент: from-indigo-50 to-blue-50
**Структура карточки:**
- Верхняя часть: градиентный фон (h-48) с плавающей иконкой в белом квадрате
- Нижняя часть: название, описание, ссылка "Подробнее →"
- Hover-эффект: поднятие тени (hover:shadow-xl)
---
### 4. SOLUTIONS (Solutions.tsx)
**6 отраслевых решений (grid md:grid-cols-2 lg:grid-cols-3):**
1. Корпоративный сектор (Building2) — 1200+ проектов
2. Ритейл и e-commerce (ShoppingCart) — 850+ проектов
3. Производство (Factory) — 650+ проектов
4. Здравоохранение (Heart) — 420+ проектов
5. Образование (GraduationCap) — 380+ проектов
6. Государственный сектор (Landmark) — 500+ проектов
**Структура карточки:**
- Иконка в синем градиентном квадрате (bg-gradient-to-br from-blue-500 to-blue-600)
- Название и описание
- Количество проектов (в нижней части, выделено синим цветом)
---
### 5. CASES (Cases.tsx)
**3 кейса в сетке (grid lg:grid-cols-3):**
1. **Миграция в Яндекс.Облако** (Cloud icon, голубой градиент)
- Клиент: Торговая сеть
- Описание: Перенос 500+ серверов с нулевым простоем
- Результат: −40% TCO
2. **Внедрение 1С:ERP** (Cpu icon, зеленый градиент)
- Клиент: Производственный холдинг
- Описание: Автоматизация для 15 предприятий
- Результат: +25% эффективность
3. **Защита периметра Kaspersky** (Shield icon, фиолетовый градиент)
- Клиент: Финансовая группа
- Описание: Многоуровневая система защиты
- Результат: 99.9% uptime
**Структура карточки:**
- Верх: градиентный фон с крупной иконкой и бейджем категории
- Низ: компания, заголовок, описание, результат
- Кнопка "Все кейсы" под карточками
---
### 6. ABOUT (About.tsx)
**Заголовок с анимацией:**
"Сотрудничаем с [название вендора]" — где название вендора циклически меняется каждые 4.5 секунды с fade-эффектом.
**56 российских вендоров для ротации:**
Яндекс.Облако, VK Cloud, MTC Web Services, Сбер Облако, Kaspersky, Positive Technologies, UserGate, Astra Linux, РедСофт, Альт Линукс, Postgres Pro, Tarantool, Мой Офис, Р7-Офис, 1С, Галактика, Kraftway, Aquarius, Эльбрус, Битрикс24, Код Безопасности, Zabbix, Nginx, Selectel, Лаборатория Эльбрус, Basealt, МойОфис Почта, Видеомост, Jazz Telecom, Р-Видео, СКБ Контур, ЕТИС, Кодикс, Тензор, Infowatch, SearchInform, Гарда, Аладдин Р.Д., С-Терра, DeviceLock, КриптоПро, Базальт СПО, Аскон, НаноСофт, Directum, Open Yard, ТруКонф, Yadro, Depo, Eltex, Qtech, D-Link
**6 ключевых преимуществ (grid md:grid-cols-2 lg:grid-cols-3):**
1. Поставка оборудования (Package icon, синий)
2. Официальное партнерство (Award icon, зеленый)
3. Сертифицированные специалисты (CheckCircle2 icon, фиолетовый)
4. Оперативный отклик (Zap icon, оранжевый)
5. Выделенная команда (Users icon, голубой)
6. Быстрый старт (Rocket icon, розовый)
---
### 7. CONTACT (Contact.tsx)
**Форма обратной связи в белой карточке:**
Поля:
- Имя (обязательное)
- Компания
- Email (обязательное)
- Телефон (обязательное)
- Сообщение (textarea, 4 строки)
Кнопка: "Отправить заявку" (синяя)
**Контактная информация снизу (в строку):**
- Телефон: +7 (495) 123-45-67
- Email: info@softclick.ru
- Адрес: Москва, Пресненская наб., 12
- Часы: Пн-Пт 9:00–18:00
---
### 8. FOOTER (Footer.tsx)
**4 колонки:**
1. **Логотип и соцсети:**
- Логотип SOFTCLICK
- Описание компании
- Иконки соцсетей: Telegram, VK, Habr, VK Video
2. **Решения:**
- Облачные решения
- Кибербезопасность
- Цифровая трансформация
- Управление данными
3. **Компания:**
- О нас
- Карьера
- Новости
- Партнерам
4. **Контакты:**
- Телефон с часами работы
- Email
- Адрес
**Подвал:**
- © 2025 SOFTCLICK. Все права защищены.
- Ссылки: Политика конфиденциальности, Условия использования
**Стилизация:**
- Темный фон (bg-gray-900), светлый текст (text-gray-400)
- Ссылки hover: text-blue-400
---
### 9. CONTACT MODAL (ContactModal.tsx)
**Модальное окно с расширенной формой:**
Открывается по кнопкам "Связаться" и "Обсудить проект"
**Поля формы:**
1. Имя (обязательное)
2. Компания
3. Email (обязательное)
4. Телефон (обязательное)
5. **Какую задачу решаете?** (select с опциями):
- 🔥 Всё горит, нужна помощь! (selected по умолчанию)
- Модернизация инфраструктуры
- Замена импортного ПО на российское
- Расширение мощностей
- Создание новой инфраструктуры
- Повышение безопасности
- Автоматизация процессов
- Миграция в облако
- Резервирование и восстановление
- Соответствие требованиям регуляторов
- Другое
6. **Сроки реализации** (select):
- Еще вчера (selected по умолчанию)
- Срочно (до 1 месяца)
- 1-3 месяца
- 3-6 месяцев
- 6-12 месяцев
- Более 12 месяцев
- На стадии планирования
7. Комментарий к задаче (textarea)
8. **Предпочитаемое время для встречи в ВКС:**
- Вариант 1 (datetime-local)
- Вариант 2 (datetime-local)
- Подсказка: "Мы отправим вам приглашение в ВКС на один из выбранных слотов"
**Технические детали:**
- Рендерится через createPortal(modalContent, document.body)
- При открытии блокирует скролл страницы
- Закрытие по клику на оверлей или крестик
- z-index: 9999
- Backdrop: bg-black/60 backdrop-blur-sm
---
### 10. CATEGORY PAGE (CategoryPage.tsx)
**Универсальный шаблон для всех страниц категорий**
**Hero-секция:**
- Кнопка "Назад к главной" (ArrowLeft icon)
- Бейдж "Каталог решений"
- Заголовок категории (text-5xl lg:text-6xl)
- Описание категории
- Декоративный элемент справа (на xl-экранах)
**Сетка вендоров (grid md:grid-cols-2 lg:grid-cols-3):**
Каждая карточка вендора:
- Название вендора (text-2xl, hover:text-blue-600)
- Описание
- Список продуктов/решений (если есть) в синих бейджах (bg-blue-50)
- Кнопка "Узнать больше" внизу
---
## СТРАНИЦЫ КАТЕГОРИЙ
### РЕШЕНИЯ (10 страниц):
**1. CloudPage — Облачные решения**
Вендоры: Яндекс.Облако, VK Cloud, Cloud.ru, SberCloud, МТС Cloud, Selectel
Продукты: Compute Cloud, Object Storage, Kubernetes, DataLens, ML Platform, CDN и т.д.
**2. RussianSoftwarePage — Российское ПО**
Вендоры: МойОфис, 1С, Галактика, Р7-Офис, Postgres Pro, Astra Linux, РедСофт, BaseALT, ELMA
Продукты: Офисные пакеты, ERP, СУБД, ОС
**3. CybersecurityPage — Кибербезопасность**
Вендоры: Касперский, Positive Technologies, InfoWatch, SearchInform, Гарда, DeviceLock, КриптоПро, Код Безопасности, Аладдин Р.Д.
Продукты: Endpoint Security, DLP, WAF, VPN, Firewall, ЭЦП
**4. AISolutionsPage — Решения на базе ИИ**
Вендоры: Яндекс.Облако ML, SberCloud AI, VK Cloud ML, GigaChat, Kandinsky, YandexGPT
Продукты: ML Platform, NLP, Computer Vision, Speech Recognition
**5. RussianHardwarePage — Российские ноутбуки, ПК и серверы**
Вендоры: Kraftway, Aquarius, Эльбрус, Байкал Электроникс, ИВК, DEPO, Yadro
Продукты: Рабочие станции, серверы, ноутбуки
**6. HardwareSolutionsPage — Аппаратные решения**
Вендоры: Huawei, Cisco (для России), Eltex, Qtech, D-Link, МикроТик, SNR
Продукты: Коммутаторы, маршрутизаторы, СХД, серверное оборудование
**7. CADandGISPage — САПР и ГИС**
Вендоры: Аскон (КОМПАС-3D), НаноСофт (nanoCAD), ГеоС, Panorama, ИндорСофт, Топоматик
Продукты: KOMPAS-3D, nanoCAD, ГИС Панорама
**8. IndustrialSolutionsPage — Индустриальные решения**
Вендоры: SCADA системы (Trace Mode, MasterSCADA), АСУ ТП, IIoT платформы
Продукты: Системы мониторинга, управления производством
**9. GovernmentPage — Для госсектора**
Вендоры: Astra Linux SE, Мой Офис Госы, КриптоПро, Postgres Pro Certified, Континент
Продукты: Защищенные ОС, офисное ПО для госорганов
**10. BusinessPage — Решения для бизнеса**
Вендоры: Битрикс24, ELMA365, Comindware, Directum, СКБ Контур
Продукты: CRM, BPM, ECM, электронная отчетность
---
### УСЛУГИ (7 страниц):
**1. ConsultingPage — Консалтинг и проектирование**
Услуги: IT-стратегия, Миграция на российское ПО, Оптимизация инфраструктуры, Проектирование ЦОД, Импортозамещение, Бизнес-анализ
**2. ImplementationPage — Поставка и внедрение решений**
Услуги: Поставка оборудования, Внедрение ПО, Настройка и интеграция, Пусконаладка, Обучение пользователей, Приемка систем
**3. ManagedServicesPage — Управляемые сервисы**
Услуги: Мониторинг 24/7, Управление инфраструктурой, Backup as a Service, DRaaS, Patch Management, SOC
**4. IntegrationPage — Интеграция и разработка**
Услуги: Системная интеграция, Кастомная разработка, API-интеграция, Миграция данных, DevOps, CI/CD
**5. SpecializedServicesPage — Специализированные услуги по отраслям**
Услуги по отраслям: Производство, Ритейл, Финансы, Госсектор, Медицина, Телеком
**6. SupportPage — Обслуживание и сопровождение**
Услуги: Техподдержка L1-L3, SLA гарантии, Плановое обслуживание, Инцидент-менеджмент, Change Management
**7. SubscriptionPage — Услуги по подписке**
Услуги: Cloud Subscriptions, Software Subscriptions, Hardware as a Service, Managed Services по подписке
---
## СТИЛИ И АНИМАЦИИ
### globals.css
**CSS-переменные:**
```css
:root {
--background: #ffffff;
--foreground: oklch(0.145 0 0);
--primary: #030213;
--border: rgba(0, 0, 0, 0.1);
--radius: 0.625rem;
}
```
**Базовая типографика:**
- h1: text-2xl, font-weight: 500
- h2: text-xl, font-weight: 500
- p, input, button: text-base, font-weight: 400
### animations.css
**Float-анимация для иконок:**
```css
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-10px); }
}
.animate-float { animation: float 3s ease-in-out infinite; }
.animate-float-delay-1 { animation-delay: 0.5s; }
.animate-float-delay-2 { animation-delay: 1s; }
.animate-float-delay-3 { animation-delay: 1.5s; }
.animate-float-delay-4 { animation-delay: 2s; }
.animate-float-delay-5 { animation-delay: 2.5s; }
```
---
## НАВИГАЦИЯ И РОУТИНГ
### App.tsx — State-based роутинг
**Логика навигации:**
- Используется useState для хранения текущей страницы (currentPage)
- При клике на пункт меню вызывается handleNavigate(page, section?)
- Если передана section — скроллит к якорю на главной странице
- Если не на главной — сначала переходит на главную, затем скроллит (через pendingScroll)
- При переходе между страницами — скролл наверх
**Страницы:**
- home (HomePage) — главная
- cloud, russian-software, cybersecurity, ai-solutions, russian-hardware, hardware-solutions, cad-gis, industrial-solutions, government, business — 10 страниц решений
- consulting, implementation, managed-services, integration, specialized-services, support, subscription — 7 страниц услуг
---
## КОНФИГУРАЦИЯ СБОРКИ
### package.json
```json
{
"name": "softclick-corporate-website",
"engines": {
"node": ">=18.0.0 <22.0.0"
},
"dependencies": {
"react": "^18.3.1",
"react-dom": "^18.3.1",
"lucide-react": "^0.344.0",
"clsx": "^2.1.0",
"tailwind-merge": "^2.2.1"
},
"devDependencies": {
"tailwindcss": "^4.0.0",
"vite": "^5.1.4"
}
}
```
### vite.config.ts
```ts
export default defineConfig({
build: {
outDir: 'build', // ВАЖНО: папка build для Netlify
}
});
```
### netlify.toml
```toml
[build]
command = "npm run build"
publish = "build"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
[build.environment]
NODE_VERSION = "18"
```
---
## ВАЖНЫЕ ДЕТАЛИ
1. **Дата основания:** Везде указывать "с 2021 года"
2. **Метрики компании:**
- 300+ клиентов
- 50+ партнерств
- 95% повторных обращений
3. **Цвета:**
- Основной акцент: #2563eb (blue-600)
- Фон: белый (#ffffff)
- Текст: серый (gray-600, gray-700, gray-900)
- Градиенты: использовать Tailwind-классы (from-blue-500 to-blue-600)
4. **Скругления:**
- Карточки: rounded-2xl, rounded-3xl
- Кнопки: rounded-lg, rounded-xl
- Инпуты: rounded-xl
5. **Тени:**
- Карточки: border border-gray-100, hover:shadow-xl
- Модальное окно: shadow-2xl
6. **Иконки:**
- Размер: w-5 h-5 для мелких, w-12 h-12 для крупных
- Цвет: соответствует тематике секции
7. **Отступы:**
- Максимальная ширина контейнера: max-w-[1600px]
- Горизонтальные отступы: px-6 xl:px-12 2xl:px-16
- Вертикальные отступы секций: py-20, py-24
8. **Responsive:**
- Мобильная версия: стековые блоки
- Десктоп: сетки grid md:grid-cols-2 lg:grid-cols-3
9. **Hover-эффекты:**
- Кнопки: hover:bg-blue-700, hover:shadow-lg
- Карточки: hover:border-blue-200, hover:shadow-xl
- Ссылки: hover:text-blue-600
- Иконки: group-hover:scale-110, group-hover:translate-x-1
10. **Контактная информация:**
- Телефон: +7 (495) 123-45-67
- Email: info@softclick.ru
- Адрес: Москва, Пресненская наб., 12
- Время работы: Пн-Пт 9:00–18:00
---
## ФАЙЛОВАЯ СТРУКТУРА (полный список)
```
/
├── App.tsx (главный компонент с роутингом)
├── main.tsx (точка входа)
├── index.html
├── package.json
├── vite.config.ts
├── netlify.toml
├── tsconfig.json
├── postcss.config.js
├── components/
│ ├── Header.tsx
│ ├── Hero.tsx
│ ├── Services.tsx
│ ├── Solutions.tsx
│ ├── Cases.tsx
│ ├── About.tsx
│ ├── Contact.tsx
│ ├── Footer.tsx
│ ├── ContactModal.tsx
│ └── CategoryPage.tsx
├── pages/
│ ├── HomePage.tsx
│ ├── CloudPage.tsx
│ ├── RussianSoftwarePage.tsx
│ ├── CybersecurityPage.tsx
│ ├── AISolutionsPage.tsx
│ ├── RussianHardwarePage.tsx
│ ├── HardwareSolutionsPage.tsx
│ ├── CADandGISPage.tsx
│ ├── IndustrialSolutionsPage.tsx
│ ├── GovernmentPage.tsx
│ ├── BusinessPage.tsx
│ ├── ConsultingPage.tsx
│ ├── ImplementationPage.tsx
│ ├── ManagedServicesPage.tsx
│ ├── IntegrationPage.tsx
│ ├── SpecializedServicesPage.tsx
│ ├── SupportPage.tsx
│ └── SubscriptionPage.tsx
└── styles/
├── globals.css
└── animations.css
```
---
## ИТОГОВЫЕ ТРЕБОВАНИЯ К РЕЗУЛЬТАТУ
1. Полностью рабочий SPA на React + TypeScript
2. Адаптивная верстка под все экраны
3. Плавные анимации и transitions
4. Минималистичный дизайн БЕЗ фотографий
5. Все компоненты должны быть функциональными (useState, useEffect)
6. Корректная навигация между всеми страницами
7. Работающие выпадающие меню
8. Функциональное модальное окно
9. Якорная навигация к секциям на главной странице
10. Готовность к деплою на Netlify (build в папку build)
---
## ПРИМЕР КОДА КАРТОЧКИ ВЕНДОРА
```tsx
<div className="bg-white rounded-2xl p-8 hover:shadow-lg transition-all border border-gray-100 group">
<h3 className="text-2xl text-gray-900 group-hover:text-blue-600 transition-colors">
Яндекс.Облако
</h3>
<p className="text-gray-600 mt-4">
Полный спектр облачных сервисов: вычисления, хранение данных, машинное обучение
</p>
<div className="mt-4 flex flex-wrap gap-2">
<span className="px-3 py-1.5 bg-blue-50 text-blue-700 rounded-lg text-sm">
Compute Cloud
</span>
<span className="px-3 py-1.5 bg-blue-50 text-blue-700 rounded-lg text-sm">
Object Storage
</span>
</div>
<button className="mt-6 w-full py-3 bg-blue-50 text-blue-600 rounded-xl hover:bg-blue-600 hover:text-white transition-all">
Узнать больше
</button>
</div>
```
---
Этот промт содержит все необходимые данные для точного воссоздания сайта SOFTCLICK. Следуй ему последовательно, создавая каждый компонент с указанными стилями и структурой.

View File

@@ -1,116 +0,0 @@
# SOFTCLICK - Корпоративный сайт
Современный корпоративный сайт российской IT-компании SOFTCLICK с фокусом на импортозамещение и российские решения.
## ⚠️ Требования
- **Node.js 18 LTS** (рекомендуется)
- npm 9 или выше
Проект настроен на Node.js 18 для максимальной совместимости. Node.js 22 может вызвать проблемы.
**Установка Node.js 18:**
```bash
# Если используете nvm
nvm install 18
nvm use 18
# Проверка версии
node -v # должно показать v18.x.x
```
## ⚠️ Важно: Проверка сборки
Перед деплоем проверьте, в какую папку собирается проект:
**Linux/Mac:**
```bash
chmod +x check-build.sh
./check-build.sh
```
**Windows:**
```cmd
check-build.bat
```
Скрипт покажет, создаётся папка `dist` или `build`. Используйте эту информацию для настройки деплоя.
## Технологии
- React 18
- TypeScript
- Vite
- Tailwind CSS v4
- Lucide Icons
## Установка и запуск
```bash
# Установка зависимостей
npm install
# Запуск dev-сервера
npm run dev
# Сборка для продакшена
npm run build
# Предпросмотр продакшен-сборки
npm run preview
```
## 🚀 Деплой
### Быстрый деплой (один клик)
**Linux/Mac:**
```bash
chmod +x deploy.sh
./deploy.sh
```
**Windows:**
```cmd
deploy.bat
```
### Рекомендуемые платформы
#### ⭐ Netlify (самый простой - 2 минуты)
1. Зарегистрируйтесь на https://netlify.com
2. Подключите GitHub репозиторий
3. Готово! Автоматический деплой настроен
#### ⭐ Cloudflare Pages (самый быстрый)
1. Зарегистрируйтесь на https://pages.cloudflare.com
2. Build command: `npm run build`
3. Output: `dist`
#### ⭐ GitHub Pages (100% бесплатно)
1. Settings → Pages → Source: "GitHub Actions"
2. Автоматический деплой уже настроен!
#### 🇷🇺 Яндекс.Облако (российская платформа)
См. подробную инструкцию в `deploy-yandex-cloud.md`
#### 🇷🇺 Традиционный хостинг (Timeweb, Beget, Reg.ru)
См. инструкцию в `deploy-traditional-hosting.md`
### 📖 Полная документация по деплою
**Смотрите файл `DEPLOYMENT.md`** - там все варианты с пошаговыми инструкциями!
## Структура проекта
- `/components` - React компоненты
- `/pages` - Страницы приложения
- `/styles` - Глобальные стили и анимации
- `/App.tsx` - Главный компонент с роутингом
## Файлы конфигурации
- `netlify.toml` - конфигурация для Netlify
- `.github/workflows/deploy.yml` - GitHub Pages автодеплой
- `.github/workflows/deploy-yandex.yml` - Яндекс.Облако автодеплой
- `.htaccess` - для Apache хостинга
- `vercel.json` - для Vercel (опционально)

View File

@@ -1,118 +0,0 @@
# 🚀 НАЧНИТЕ ОТСЮДА
## Проект готов к деплою на Netlify!
Все проблемы исправлены:
- ✅ Node.js зафиксирован на версии 18 LTS
- ✅ Vite настроен на сборку в папку `build`
- ✅ Netlify настроен на публикацию из `build`
- ✅ Все конфигурации обновлены
---
## 🎯 Быстрый старт
### 1. Закоммитьте изменения
```bash
git add .
git commit -m "Fix: Pin Node.js to v18 and configure build output"
git push origin main
```
### 2. Деплой на Netlify
После пуша:
1. Зайдите на https://app.netlify.com
2. Откройте ваш сайт
3. Дождитесь автоматического деплоя (~2-3 минуты)
4. Готово! ✅
---
## 📖 Документация
### Для быстрого решения проблем:
- **COMMIT-AND-DEPLOY.md** - пошаговая инструкция по деплою
- **NETLIFY-FIX.md** - решение проблем с Netlify
- **NODE-VERSION-FIX.md** - информация о Node.js версии
### Полная информация:
- **DEPLOYMENT.md** - все способы деплоя
- **PLATFORMS.md** - сравнение платформ
- **DEPLOY-QUICK.md** - быстрая шпаргалка
### История изменений:
- **LATEST-FIXES.md** - последние исправления
- **FIXES-SUMMARY.md** - полная сводка всех исправлений
---
## 🔍 Проверка перед коммитом (опционально)
```bash
# Проверьте версию Node.js
node -v # Должно быть v18.x.x
# Если нет, установите:
nvm install 18
nvm use 18
# Запустите скрипт проверки сборки
chmod +x check-build.sh
./check-build.sh
# Должно показать:
# ✅ Node.js версия совместима
# ✅ BUILD OUTPUT: build
```
---
## ❓ Что дальше?
После успешного деплоя на Netlify:
### Базовые настройки:
- [ ] Проверьте что сайт работает
- [ ] Настройте кастомный домен (если нужно)
- [ ] SSL сертификат (Netlify настроит автоматически)
### Дополнительные возможности:
- [ ] Подключите Yandex.Metrika или Google Analytics
- [ ] Настройте форму обратной связи
- [ ] Добавьте favicon (уже есть в `/public/favicon.svg`)
- [ ] Настройте redirects для старых URL (если нужно)
---
## 🆘 Проблемы с Netlify?
### Вариант 1: Используйте Cloudflare Pages
```
1. https://pages.cloudflare.com
2. Build: npm run build
3. Output: build
4. Environment: NODE_VERSION = 18
```
### Вариант 2: GitHub Pages
Создайте файл `.github/workflows/deploy.yml` (см. документацию)
---
## ✅ Быстрая команда для деплоя
```bash
# Всё в одной команде
git add . && \
git commit -m "Fix deployment config" && \
git push && \
echo "✅ Pushed! Check Netlify for deploy status."
```
---
**Удачи с деплоем!** 🎉
Если возникнут вопросы - см. файл **COMMIT-AND-DEPLOY.md** для детальных инструкций.

View File

@@ -1,8 +0,0 @@
/*
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: public, max-age=31536000, immutable
/*.html
Cache-Control: public, max-age=0, must-revalidate

View File

@@ -1 +0,0 @@
/* /index.html 200

View File

@@ -1,54 +0,0 @@
@echo off
chcp 65001 >nul
echo 🔍 Проверка сборки SOFTCLICK...
echo.
REM Проверка версии Node.js
echo 📌 Проверка версии Node.js...
node -v
echo.
REM Очистка старых артефактов
echo 🧹 Очистка старых сборок...
if exist dist rmdir /s /q dist
if exist build rmdir /s /q build
REM Установка зависимостей
echo 📦 Установка зависимостей...
call npm install
REM Сборка
echo 🔨 Сборка проекта...
call npm run build
REM Проверка результата
echo.
echo ✅ Проверка результатов сборки:
echo.
if exist dist\ (
echo 📁 Найдена папка: dist\
dir dist /s
echo.
echo ✅ BUILD OUTPUT: dist
echo.
echo 📋 Для Netlify используйте:
echo publish = "dist"
) else if exist build\ (
echo 📁 Найдена папка: build\
dir build /s
echo.
echo ✅ BUILD OUTPUT: build
echo.
echo 📋 Для Netlify используйте:
echo publish = "build"
) else (
echo ❌ Папка сборки не найдена!
echo Проверьте логи выше на наличие ошибок
pause
exit /b 1
)
echo.
pause

View File

@@ -1,68 +0,0 @@
#!/bin/bash
echo "🔍 Проверка сборки SOFTCLICK..."
echo ""
# Очистка старых артефактов
echo "🧹 Очистка старых сборок..."
rm -rf dist build
# Проверка Node.js версии
echo "📌 Проверка версии Node.js..."
node_version=$(node -v)
echo " Текущая версия: $node_version"
if [[ "$node_version" == v18* ]] || [[ "$node_version" == v20* ]]; then
echo " ✅ Node.js версия совместима"
elif [[ "$node_version" == v22* ]]; then
echo " ⚠️ Предупреждение: Node.js v22 может вызвать проблемы"
echo " 💡 Рекомендуется использовать Node.js v18 LTS"
echo " Установите через: nvm install 18 && nvm use 18"
else
echo " ℹ️ Версия: $node_version"
fi
echo ""
# Установка зависимостей
echo "📦 Установка зависимостей..."
npm install
# Сборка
echo "🔨 Сборка проекта..."
npm run build
# Проверка результата
echo ""
echo "✅ Проверка результатов сборки:"
echo ""
if [ -d "dist" ]; then
echo "📁 Найдена папка: dist/"
echo " Размер: $(du -sh dist | cut -f1)"
echo " Файлов: $(find dist -type f | wc -l)"
echo ""
echo "Содержимое dist/:"
ls -lh dist/
echo ""
echo "✅ BUILD OUTPUT: dist"
elif [ -d "build" ]; then
echo "📁 Найдена папка: build/"
echo " Размер: $(du -sh build | cut -f1)"
echo " Файлов: $(find build -type f | wc -l)"
echo ""
echo "Содержимое build/:"
ls -lh build/
echo ""
echo "✅ BUILD OUTPUT: build"
else
echo "❌ Папка сборки не найдена!"
echo " Проверьте логи выше на наличие ошибок"
exit 1
fi
echo ""
echo "📋 Для Netlify используйте в netlify.toml:"
if [ -d "dist" ]; then
echo ' publish = "dist"'
elif [ -d "build" ]; then
echo ' publish = "build"'
fi

View File

@@ -1,4 +1,4 @@
import React, { useState } from 'react'
import React, { useState } from 'react';
const ERROR_IMG_SRC =
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIzLjciPjxyZWN0IHg9IjE2IiB5PSIxNiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjU2IiByeD0iNiIvPjxwYXRoIGQ9Im0xNiA1OCAxNi0xOCAzMiAzMiIvPjxjaXJjbGUgY3g9IjUzIiBjeT0iMzUiIHI9IjciLz48L3N2Zz4KCg=='

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as AccordionPrimitive from "@radix-ui/react-accordion@1.2.3";
import { ChevronDownIcon } from "lucide-react@0.487.0";
import * as AccordionPrimitive from "@radix-ui/react-accordion";
import { ChevronDownIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog@1.1.6";
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
import { cn } from "./utils";
import { buttonVariants } from "./button";

View File

@@ -1,5 +1,5 @@
import * as React from "react";
import { cva, type VariantProps } from "class-variance-authority@0.7.1";
import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "./utils";

View File

@@ -1,6 +1,6 @@
"use client";
import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio@1.1.2";
import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
function AspectRatio({
...props

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as AvatarPrimitive from "@radix-ui/react-avatar@1.1.3";
import * as AvatarPrimitive from "@radix-ui/react-avatar";
import { cn } from "./utils";

View File

@@ -1,6 +1,6 @@
import * as React from "react";
import { Slot } from "@radix-ui/react-slot@1.1.2";
import { cva, type VariantProps } from "class-variance-authority@0.7.1";
import { Slot } from "@radix-ui/react-slot";
import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "./utils";

View File

@@ -1,6 +1,6 @@
import * as React from "react";
import { Slot } from "@radix-ui/react-slot@1.1.2";
import { ChevronRight, MoreHorizontal } from "lucide-react@0.487.0";
import { Slot } from "@radix-ui/react-slot";
import { ChevronRight, MoreHorizontal } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,6 +1,6 @@
import * as React from "react";
import { Slot } from "@radix-ui/react-slot@1.1.2";
import { cva, type VariantProps } from "class-variance-authority@0.7.1";
import { Slot } from "@radix-ui/react-slot";
import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import { ChevronLeft, ChevronRight } from "lucide-react@0.487.0";
import { DayPicker } from "react-day-picker@8.10.1";
import { ChevronLeft, ChevronRight } from "lucide-react";
import { DayPicker } from "react-day-picker";
import { cn } from "./utils";
import { buttonVariants } from "./button";

View File

@@ -3,8 +3,8 @@
import * as React from "react";
import useEmblaCarousel, {
type UseEmblaCarouselType,
} from "embla-carousel-react@8.6.0";
import { ArrowLeft, ArrowRight } from "lucide-react@0.487.0";
} from "embla-carousel-react";
import { ArrowLeft, ArrowRight } from "lucide-react";
import { cn } from "./utils";
import { Button } from "./button";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as RechartsPrimitive from "recharts@2.15.2";
import * as RechartsPrimitive from "recharts";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as CheckboxPrimitive from "@radix-ui/react-checkbox@1.1.4";
import { CheckIcon } from "lucide-react@0.487.0";
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
import { CheckIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,6 +1,6 @@
"use client";
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible@1.1.3";
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
function Collapsible({
...props

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import { Command as CommandPrimitive } from "cmdk@1.1.1";
import { SearchIcon } from "lucide-react@0.487.0";
import { Command as CommandPrimitive } from "cmdk";
import { SearchIcon } from "lucide-react";
import { cn } from "./utils";
import {

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu@2.2.6";
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react@0.487.0";
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as DialogPrimitive from "@radix-ui/react-dialog@1.1.6";
import { XIcon } from "lucide-react@0.487.0";
import * as DialogPrimitive from "@radix-ui/react-dialog";
import { XIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import { Drawer as DrawerPrimitive } from "vaul@1.1.2";
import { Drawer as DrawerPrimitive } from "vaul";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu@2.1.6";
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react@0.487.0";
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as LabelPrimitive from "@radix-ui/react-label@2.1.2";
import { Slot } from "@radix-ui/react-slot@1.1.2";
import * as LabelPrimitive from "@radix-ui/react-label";
import { Slot } from "@radix-ui/react-slot";
import {
Controller,
FormProvider,
@@ -11,7 +11,7 @@ import {
type ControllerProps,
type FieldPath,
type FieldValues,
} from "react-hook-form@7.55.0";
} from "react-hook-form";
import { cn } from "./utils";
import { Label } from "./label";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as HoverCardPrimitive from "@radix-ui/react-hover-card@1.1.6";
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import { OTPInput, OTPInputContext } from "input-otp@1.4.2";
import { MinusIcon } from "lucide-react@0.487.0";
import { OTPInput, OTPInputContext } from "input-otp";
import { MinusIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as LabelPrimitive from "@radix-ui/react-label@2.1.2";
import * as LabelPrimitive from "@radix-ui/react-label";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as MenubarPrimitive from "@radix-ui/react-menubar@1.1.6";
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react@0.487.0";
import * as MenubarPrimitive from "@radix-ui/react-menubar";
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
import * as React from "react";
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu@1.2.5";
import { cva } from "class-variance-authority@0.7.1";
import { ChevronDownIcon } from "lucide-react@0.487.0";
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
import { cva } from "class-variance-authority";
import { ChevronDownIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -3,7 +3,7 @@ import {
ChevronLeftIcon,
ChevronRightIcon,
MoreHorizontalIcon,
} from "lucide-react@0.487.0";
} from "lucide-react";
import { cn } from "./utils";
import { Button, buttonVariants } from "./button";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as PopoverPrimitive from "@radix-ui/react-popover@1.1.6";
import * as PopoverPrimitive from "@radix-ui/react-popover";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as ProgressPrimitive from "@radix-ui/react-progress@1.1.2";
import * as ProgressPrimitive from "@radix-ui/react-progress";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group@1.2.3";
import { CircleIcon } from "lucide-react@0.487.0";
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
import { CircleIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import { GripVerticalIcon } from "lucide-react@0.487.0";
import * as ResizablePrimitive from "react-resizable-panels@2.1.7";
import { GripVerticalIcon } from "lucide-react";
import * as ResizablePrimitive from "react-resizable-panels";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area@1.2.3";
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
import { cn } from "./utils";

View File

@@ -1,12 +1,12 @@
"use client";
import * as React from "react";
import * as SelectPrimitive from "@radix-ui/react-select@2.1.6";
import * as SelectPrimitive from "@radix-ui/react-select";
import {
CheckIcon,
ChevronDownIcon,
ChevronUpIcon,
} from "lucide-react@0.487.0";
} from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as SeparatorPrimitive from "@radix-ui/react-separator@1.1.2";
import * as SeparatorPrimitive from "@radix-ui/react-separator";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as SheetPrimitive from "@radix-ui/react-dialog@1.1.6";
import { XIcon } from "lucide-react@0.487.0";
import * as SheetPrimitive from "@radix-ui/react-dialog";
import { XIcon } from "lucide-react";
import { cn } from "./utils";

View File

@@ -1,9 +1,9 @@
"use client";
import * as React from "react";
import { Slot } from "@radix-ui/react-slot@1.1.2";
import { VariantProps, cva } from "class-variance-authority@0.7.1";
import { PanelLeftIcon } from "lucide-react@0.487.0";
import { Slot } from "@radix-ui/react-slot";
import { VariantProps, cva } from "class-variance-authority";
import { PanelLeftIcon } from "lucide-react";
import { useIsMobile } from "./use-mobile";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as SliderPrimitive from "@radix-ui/react-slider@1.2.3";
import * as SliderPrimitive from "@radix-ui/react-slider";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import { useTheme } from "next-themes@0.4.6";
import { Toaster as Sonner, ToasterProps } from "sonner@2.0.3";
import { useTheme } from "next-themes";
import { Toaster as Sonner, ToasterProps } from "sonner";
const Toaster = ({ ...props }: ToasterProps) => {
const { theme = "system" } = useTheme();

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as SwitchPrimitive from "@radix-ui/react-switch@1.1.3";
import * as SwitchPrimitive from "@radix-ui/react-switch";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as TabsPrimitive from "@radix-ui/react-tabs@1.1.3";
import * as TabsPrimitive from "@radix-ui/react-tabs";
import { cn } from "./utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group@1.1.2";
import { type VariantProps } from "class-variance-authority@0.7.1";
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
import { type VariantProps } from "class-variance-authority";
import { cn } from "./utils";
import { toggleVariants } from "./toggle";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as TogglePrimitive from "@radix-ui/react-toggle@1.1.2";
import { cva, type VariantProps } from "class-variance-authority@0.7.1";
import * as TogglePrimitive from "@radix-ui/react-toggle";
import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as TooltipPrimitive from "@radix-ui/react-tooltip@1.1.8";
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
import { cn } from "./utils";

View File

@@ -1,95 +0,0 @@
# Деплой на традиционный хостинг
## Для любого хостинга с FTP/SSH доступом
### Шаг 1: Локальная сборка
```bash
npm install
npm run build
```
### Шаг 2: Загрузка файлов
После сборки появится папка `dist/` - её содержимое нужно загрузить на хостинг.
**Через FTP:**
1. Подключитесь к хостингу через FileZilla/WinSCP
2. Перейдите в папку `public_html` или `www`
3. Загрузите ВСЁ содержимое папки `dist/` (не саму папку!)
**Через SSH:**
```bash
# Соберите локально
npm run build
# Загрузите через rsync
rsync -avz --delete dist/ user@your-server.ru:/var/www/html/
```
### Шаг 3: Настройка .htaccess (для Apache)
Создайте в корне сайта файл `.htaccess`:
```apache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
# Кеширование статических файлов
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
</IfModule>
# Сжатие
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>
```
### Шаг 4: Настройка для Nginx
Если на сервере Nginx, добавьте в конфигурацию сайта:
```nginx
server {
listen 80;
server_name your-domain.ru www.your-domain.ru;
root /var/www/html;
index index.html;
# Сжатие
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# SPA роутинг
location / {
try_files $uri $uri/ /index.html;
}
# Кеширование статики
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
```
## Рекомендуемые российские хостинги:
1. **Timeweb** - от 169 ₽/мес, отличная поддержка
2. **Beget** - от 200 ₽/мес, очень стабильный
3. **Reg.ru** - от 120 ₽/мес, простой интерфейс
4. **HostiMan** - от 150 ₽/мес
5. **SpaceWeb** - от 150 ₽/мес
Все эти хостинги поддерживают Node.js и SSH доступ.

View File

@@ -1,45 +0,0 @@
# Деплой на Яндекс.Облако
## Шаг 1: Подготовка
1. Зарегистрируйтесь на https://cloud.yandex.ru
2. Установите Yandex Cloud CLI: https://cloud.yandex.ru/docs/cli/quickstart
## Шаг 2: Создание бакета Object Storage
```bash
# Создайте бакет для статического сайта
yc storage bucket create --name softclick-website --public-read
# Настройте бакет как статический сайт
yc storage bucket update --name softclick-website \
--website-settings '{"index":"index.html","error":"index.html"}'
```
## Шаг 3: Сборка и загрузка
```bash
# Соберите проект
npm run build
# Загрузите файлы в бакет
yc storage s3api put-object \
--bucket softclick-website \
--key dist/ \
--body ./dist/
```
## Шаг 4: Настройка CDN (опционально)
1. Перейдите в Cloud CDN
2. Создайте CDN-ресурс
3. Укажите источник: ваш бакет Object Storage
4. Настройте кастомный домен
## Автоматизация через GitHub Actions
Создайте секреты в GitHub:
- YC_SERVICE_ACCOUNT_KEY_JSON
- YC_BUCKET_NAME
Деплой будет происходить автоматически при пуше в main.
## Стоимость
- Object Storage: ~0.40 ₽/ГБ/месяц
- Трафик CDN: ~0.85 ₽/ГБ
- Для небольшого сайта: ~50-200 ₽/месяц

View File

@@ -1,76 +0,0 @@
@echo off
chcp 65001 >nul
echo.
echo ====================================
echo 🚀 ДЕПЛОЙ SOFTCLICK
echo ====================================
echo.
echo 📦 Проверка зависимостей...
if not exist "node_modules\" (
echo Установка зависимостей...
call npm install
)
echo.
echo 🔨 Сборка проекта...
call npm run build
if %errorlevel% equ 0 (
echo.
echo ✅ Сборка успешна!
echo.
echo ====================================
echo 📂 Файлы готовы в папке: dist\
echo ====================================
echo.
echo Выберите действие:
echo 1. Открыть папку dist
echo 2. Создать архив dist.zip
echo 3. Показать инструкции по деплою
echo.
set /p choice="Ваш выбор (1-3): "
if "%choice%"=="1" (
explorer dist
)
if "%choice%"=="2" (
echo.
echo 📦 Создание архива...
powershell Compress-Archive -Path dist\* -DestinationPath dist.zip -Force
echo ✅ Архив создан: dist.zip
explorer .
)
if "%choice%"=="3" (
echo.
type DEPLOYMENT.md
)
echo.
echo ====================================
echo 📖 СПОСОБЫ ДЕПЛОЯ:
echo ====================================
echo.
echo ⭐ РЕКОМЕНДУЕМЫЕ (бесплатно):
echo 1. Netlify - https://netlify.com
echo 2. Cloudflare Pages - https://pages.cloudflare.com
echo 3. GitHub Pages - автоматически
echo.
echo 🇷🇺 РОССИЙСКИЕ:
echo 1. Яндекс.Облако - см. deploy-yandex-cloud.md
echo 2. Timeweb/Beget - см. deploy-traditional-hosting.md
echo.
echo 📄 Полная инструкция: DEPLOYMENT.md
echo.
) else (
echo.
echo ❌ Ошибка при сборке!
echo Проверьте логи выше.
pause
exit /b 1
)
pause

View File

@@ -1,63 +0,0 @@
#!/bin/bash
# Скрипт для деплоя SOFTCLICK сайта
# Использование: ./deploy.sh
echo "🚀 Начинаем деплой SOFTCLICK..."
# Проверка зависимостей
echo "📦 Проверка зависимостей..."
if [ ! -d "node_modules" ]; then
echo "Установка зависимостей..."
npm install
fi
# Сборка проекта
echo "🔨 Сборка проекта..."
npm run build
if [ $? -eq 0 ]; then
echo "✅ Сборка успешна!"
echo ""
echo "📂 Файлы для деплоя находятся в папке: ./dist/"
echo ""
echo "Выберите способ деплоя:"
echo "1) Скопировать путь к папке dist (для ручной загрузки)"
echo "2) Открыть папку dist в файловом менеджере"
echo "3) Создать архив dist.zip для загрузки"
echo ""
read -p "Ваш выбор (1-3): " choice
case $choice in
1)
echo "📁 Путь к папке dist:"
echo "$(pwd)/dist"
;;
2)
# Открыть папку в зависимости от ОС
if [[ "$OSTYPE" == "darwin"* ]]; then
open dist
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
xdg-open dist
elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "cygwin" ]]; then
explorer dist
fi
;;
3)
echo "📦 Создание архива..."
cd dist && zip -r ../dist.zip . && cd ..
echo "✅ Архив создан: dist.zip"
;;
esac
echo ""
echo "📖 Инструкции по деплою:"
echo " - Netlify: см. netlify.toml"
echo " - GitHub Pages: см. .github/workflows/deploy.yml"
echo " - Яндекс.Облако: см. deploy-yandex-cloud.md"
echo " - Хостинг: см. deploy-traditional-hosting.md"
else
echo "❌ Ошибка при сборке!"
exit 1
fi

View File

@@ -1,61 +0,0 @@
**Add your own guidelines here**
<!--
System Guidelines
Use this file to provide the AI with rules and guidelines you want it to follow.
This template outlines a few examples of things you can add. You can add your own sections and format it to suit your needs
TIP: More context isn't always better. It can confuse the LLM. Try and add the most important rules you need
# General guidelines
Any general rules you want the AI to follow.
For example:
* Only use absolute positioning when necessary. Opt for responsive and well structured layouts that use flexbox and grid by default
* Refactor code as you go to keep code clean
* Keep file sizes small and put helper functions and components in their own files.
--------------
# Design system guidelines
Rules for how the AI should make generations look like your company's design system
Additionally, if you select a design system to use in the prompt box, you can reference
your design system's components, tokens, variables and components.
For example:
* Use a base font-size of 14px
* Date formats should always be in the format “Jun 10”
* The bottom toolbar should only ever have a maximum of 4 items
* Never use the floating action button with the bottom toolbar
* Chips should always come in sets of 3 or more
* Don't use a dropdown if there are 2 or fewer options
You can also create sub sections and add more specific details
For example:
## Button
The Button component is a fundamental interactive element in our design system, designed to trigger actions or navigate
users through the application. It provides visual feedback and clear affordances to enhance user experience.
### Usage
Buttons should be used for important actions that users need to take, such as form submissions, confirming choices,
or initiating processes. They communicate interactivity and should have clear, action-oriented labels.
### Variants
* Primary Button
* Purpose : Used for the main action in a section or page
* Visual Style : Bold, filled with the primary brand color
* Usage : One primary button per section to guide users toward the most important action
* Secondary Button
* Purpose : Used for alternative or supporting actions
* Visual Style : Outlined with the primary color, transparent background
* Usage : Can appear alongside a primary button for less important actions
* Tertiary Button
* Purpose : Used for the least important actions
* Visual Style : Text-only with no border, using primary color
* Usage : For actions that should be available but not emphasized
-->

View File

@@ -1,8 +0,0 @@
@import 'tailwindcss' source(none);
@source './**/*.{js,ts,jsx,tsx}';
@import 'tw-animate-css';
@import './styles/globals.css';
@layer base {
html, body, #root { min-height: 100vh; height: 100%; margin: 0; }
}

View File

@@ -1,14 +0,0 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="SOFTCLICK - российская IT-компания, специализирующаяся на импортозамещении и внедрении отечественных решений" />
<title>SOFTCLICK - Российские IT-решения с 2021 года</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
</head>
<body>
<div id="root"></div>
<script type="module" src="/main.tsx"></script>
</body>
</html>

View File

@@ -1,11 +0,0 @@
[build]
command = "npm run build"
publish = "build"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
[build.environment]
NODE_VERSION = "18"

1850
src/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,33 +0,0 @@
{
"name": "softclick-corporate-website",
"private": true,
"version": "1.0.0",
"type": "module",
"engines": {
"node": ">=18.0.0 <22.0.0",
"npm": ">=9.0.0"
},
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"react": "^18.3.1",
"react-dom": "^18.3.1",
"lucide-react": "^0.344.0",
"clsx": "^2.1.0",
"tailwind-merge": "^2.2.1"
},
"devDependencies": {
"@types/node": "^20.11.19",
"@types/react": "^18.2.56",
"@types/react-dom": "^18.2.19",
"@vitejs/plugin-react": "^4.2.1",
"autoprefixer": "^10.4.18",
"postcss": "^8.4.35",
"tailwindcss": "^4.0.0",
"typescript": "^5.2.2",
"vite": "^5.1.4"
}
}

View File

@@ -1,6 +0,0 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};

View File

@@ -1 +0,0 @@
your-domain.ru

View File

@@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect width="100" height="100" fill="#030213" rx="8"/>
<text x="50" y="70" font-size="60" text-anchor="middle" fill="#ffffff" font-family="Arial, sans-serif" font-weight="bold">S</text>
</svg>

Before

Width:  |  Height:  |  Size: 260 B

View File

@@ -1,11 +0,0 @@
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./index.html",
"./**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}

View File

@@ -1,21 +0,0 @@
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"module": "ESNext",
"skipLibCheck": true,
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["**/*.ts", "**/*.tsx"],
"references": [{ "path": "./tsconfig.node.json" }]
}

View File

@@ -1,10 +0,0 @@
{
"compilerOptions": {
"composite": true,
"skipLibCheck": true,
"module": "ESNext",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true
},
"include": ["vite.config.ts"]
}

View File

@@ -1,8 +0,0 @@
{
"rewrites": [
{
"source": "/(.*)",
"destination": "/index.html"
}
]
}

1
src/vite-env.d.ts vendored Normal file
View File

@@ -0,0 +1 @@
/// <reference types="vite/client" />

View File

@@ -1,17 +0,0 @@
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': path.resolve(__dirname, './'),
},
},
build: {
outDir: 'build',
emptyOutDir: true,
sourcemap: false,
},
});

View File

@@ -1,53 +0,0 @@
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './dist'
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4