Files
tourrism_site/README.md
Andrey K. Choi a461fea9d9 Компактные hero секции и улучшенная инициализация БД
🎨 UI улучшения:
- Уменьшена высота синих панелей с 100vh до 70vh на главной
- Добавлен класс .compact (25vh) для всех остальных страниц
- Улучшена адаптивность для мобильных устройств
- Обновлены все шаблоны с hero секциями

🚀 Инфраструктура:
- Автоматическая инициализация базы данных при деплое
- Улучшены мокапные данные (больше отзывов, бронирований, сообщений)
- Добавлены настройки сайта в базу данных
- Создан скрипт автоматического деплоя deploy.sh

📦 Система сборки:
- Обновлен .gitignore с полным покрытием файлов
- Добавлена папка для загрузок с .gitkeep
- Улучшен README с инструкциями по запуску
- ES модули для инициализации базы данных

🐛 Исправления:
- Совместимость с ES модулями в Node.js
- Правильная обработка ошибок инициализации БД
- Корректные SQL запросы для PostgreSQL
2025-11-29 18:47:42 +09:00

75 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Korea Tourism Agency 🇰🇷
Современный сайт туристического агентства для внутренних поездок по Корее с профессиональной админ-панелью.
![Korea Tourism](https://img.shields.io/badge/Korea-Tourism-blue?style=for-the-badge)
![Node.js](https://img.shields.io/badge/Node.js-v18+-green?style=for-the-badge)
![PostgreSQL](https://img.shields.io/badge/PostgreSQL-13+-blue?style=for-the-badge)
![Docker](https://img.shields.io/badge/Docker-Ready-blue?style=for-the-badge)
## 🚀 Быстрый старт
### Автоматический деплой
```bash
./deploy.sh
```
### Ручной запуск
```bash
# Клонирование репозитория
git clone <repository-url>
cd tourism_site
# Запуск с Docker
docker-compose up --build -d
# Или локальная разработка
npm install
npm run dev
```
## 📱 Доступ к приложению
- **Основной сайт**: http://localhost:3000
- **Админ панель**: http://localhost:3000/admin
- **База данных**: http://localhost:8080 (Adminer)
## 🔑 Учётные данные по умолчанию
- **Админ**: admin / admin123
- **База данных**: postgres / postgres
## 🌟 Особенности
### 🎯 Основные функции
- **Каталог туров**: Городские экскурсии, горные походы, морская рыбалка
- **Система гидов**: Профессиональные гиды с рейтингами и специализациями
- **Блог и статьи**: Полезная информация о путешествиях по Корее
- **Система бронирования**: Онлайн заявки с управлением статусами
- **Многоязычность**: Поддержка корейского и английского языков
### 🎨 AdminLTE панель управления
- **Современный дизайн**: Профессиональная админ-панель на основе AdminLTE 3.2
- **Управление контентом**: Маршруты, гиды, статьи, бронирования
- **Dashboard с аналитикой**: Статистика посещений и бронирований
- **Безопасность**: Аутентификация с хешированием паролей
- **Загрузка файлов**: Система загрузки изображений с превью
### 🚀 Технологии
- **Backend**: Node.js + Express.js
- **Database**: PostgreSQL с миграциями
- **Frontend**: Bootstrap 5 + EJS шаблоны
- **Admin**: AdminLTE 3.2 + DataTables + Chart.js
- **Deployment**: Docker + Docker Compose
- **Styles**: Responsive дизайн с корейскими элементами
## 🚀 Быстрый старт
### Предварительные требования
- Docker и Docker Compose
- Git
### Установка и запуск
1. **Клонировать репозиторий**
```bash\ngit clone <repository-url>\ncd korea-tourism-agency\n```\n\n2. **Запустить среду разработки**\n```bash\n# Дать права на выполнение скрипту\nchmod +x start-dev.sh\n\n# Запустить полное окружение\n./start-dev.sh\n```\n\n3. **Ручной запуск (альтернатива)**\n```bash\n# Создать .env файл из примера\ncp .env.example .env\n\n# Запустить контейнеры\ndocker-compose up -d\n\n# Выполнить миграции\ndocker-compose exec app npm run db:migrate\n\n# Заполнить тестовыми данными\ndocker-compose exec app npm run db:seed\n```\n\n### 🌐 Доступ к сайту\n\nПосле успешного запуска:\n\n- **🏠 Основной сайт**: http://localhost:3000\n- **⚙️ Админ панель**: http://localhost:3000/admin\n- **🗄️ Adminer (БД)**: http://localhost:8080\n\n### 🔐 Данные для входа\n\n**Админ-панель:**\n- Username: `admin`\n- Password: `admin123`\n\n**База данных (Adminer):**\n- System: `PostgreSQL`\n- Server: `postgres`\n- Username: `tourism_user`\n- Password: `tourism_password`\n- Database: `korea_tourism`\n\n## 📁 Структура проекта\n\n```\nkorea-tourism-agency/\n├── 📂 src/ # Исходный код приложения\n│ ├── 📂 config/ # Конфигурация БД\n│ └── 📂 routes/ # Express маршруты\n├── 📂 views/ # EJS шаблоны\n│ ├── 📂 admin/ # Шаблоны админки\n│ ├── 📂 routes/ # Страницы туров\n│ ├── 📂 guides/ # Страницы гидов\n│ └── 📂 articles/ # Страницы статей\n├── 📂 public/ # Статические файлы\n│ ├── 📂 css/ # Стили\n│ ├── 📂 js/ # JavaScript\n│ ├── 📂 images/ # Изображения\n│ └── 📂 uploads/ # Загруженные файлы\n├── 📂 database/ # Миграции и схемы БД\n│ ├── schema.sql # Схема БД\n│ ├── migrate.js # Скрипт миграций\n│ └── seed.js # Тестовые данные\n├── 📂 docker/ # Docker конфигурации\n└── 📂 docs/ # Документация\n```\n\n## 🗄️ База данных\n\n### Основные таблицы\n\n- **routes** - Туристические маршруты\n- **guides** - Профили гидов\n- **articles** - Статьи блога\n- **bookings** - Бронирования\n- **admins** - Администраторы\n- **contact_messages** - Сообщения с формы контактов\n- **site_settings** - Настройки сайта\n\n### Типы туров\n\n- **city** - Городские экскурсии (서울, 부산)\n- **mountain** - Горные походы (설악산, 지리산)\n- **fishing** - Морская рыбалка (동해, 제주도)\n\n## 🛠️ Разработка\n\n### Полезные команды\n\n```bash\n# Просмотр логов\ndocker-compose logs -f app\n\n# Перезапуск приложения\ndocker-compose restart app\n\n# Выполнение команд в контейнере\ndocker-compose exec app npm run db:migrate\ndocker-compose exec app npm run db:seed\n\n# Остановка всех контейнеров\ndocker-compose down\n\n# Полная очистка (внимание: удалит данные БД)\ndocker-compose down -v\ndocker system prune -f\n```\n\n### Структура маршрутов\n\n- **/** - Главная страница\n- **/routes** - Каталог туров\n- **/routes/:id** - Детали тура\n- **/guides** - Список гидов\n- **/guides/:id** - Профиль гида\n- **/articles** - Блог статьи\n- **/admin** - Админ панель\n- **/api** - REST API\n\n### API эндпоинты\n\n- `GET /api/routes` - Получить туры с фильтрацией\n- `GET /api/guides` - Получить гидов\n- `POST /api/booking` - Создать бронирование\n- `GET /api/search` - Поиск по сайту\n\n## 🎨 Дизайн\n\n### Цветовая схема\n- **Основной цвет**: #2563eb (Blue)\n- **Корейский красный**: #c41e3a\n- **Корейский синий**: #003478\n- **Градиенты**: Современные переходы цветов\n\n### Компоненты UI\n- **AdminLTE 3.2** - Админ панель\n- **Bootstrap 5** - Фронтенд фреймворк\n- **Font Awesome** - Иконки\n- **AOS** - Анимации при скролле\n- **DataTables** - Таблицы в админке\n- **Chart.js** - Графики и диаграммы\n\n## 🌍 Локализация\n\nСайт поддерживает:\n- **Корейский язык** (основной)\n- **Английский язык** (для туристов)\n- **Правильные шрифты**: Noto Sans KR для корейского текста\n\n## 📱 Адаптивность\n\n- ✅ Desktop (1200px+)\n- ✅ Tablet (768px-1199px)\n- ✅ Mobile (до 767px)\n- ✅ Поддержка touch устройств\n\n## 🔧 Настройки\n\n### Переменные окружения (.env)\n\n```env\n# База данных\nDB_HOST=postgres\nDB_PORT=5432\nDB_NAME=korea_tourism\nDB_USER=tourism_user\nDB_PASSWORD=tourism_password\n\n# Приложение\nPORT=3000\nNODE_ENV=development\nSESSION_SECRET=your-secret-key\n\n# Загрузка файлов\nUPLOAD_PATH=/app/public/uploads\nMAX_FILE_SIZE=5242880\n\n# Контакты\nSITE_NAME=Korea Tourism Agency\nCONTACT_EMAIL=info@koreatourism.com\nCONTACT_PHONE=+82-2-1234-5678\n```\n\n## 🚀 Production развертывание\n\n```bash\n# Использовать production compose файл\ndocker-compose -f docker-compose.prod.yml up -d\n\n# Или создать .env.production\ncp .env.example .env.production\n# Отредактировать настройки для production\n\n# Запустить с production настройками\nNODE_ENV=production docker-compose up -d\n```\n\n## 📸 Скриншоты\n\n### 🏠 Главная страница\n- Hero секция с призывом к действию\n- Карточки популярных туров\n- Статистика и отзывы\n- Современный адаптивный дизайн\n\n### ⚙️ Админ панель\n- Dashboard с аналитикой\n- Управление турами и гидами\n- Система загрузки изображений\n- Таблицы с поиском и фильтрацией\n\n## 🤝 Участие в разработке\n\n1. Fork проекта\n2. Создайте feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit изменения (`git commit -m 'Add amazing feature'`)\n4. Push в branch (`git push origin feature/amazing-feature`)\n5. Создайте Pull Request\n\n## 📄 Лицензия\n\nЭтот проект использует MIT лицензию. Подробности в файле [LICENSE](LICENSE).\n\n## 🆘 Поддержка\n\nЕсли у вас есть вопросы:\n\n- 📧 Email: info@koreatourism.com\n- 🐛 Issues: Создайте issue в репозитории\n- 📖 Docs: Смотрите папку `/docs`\n\n---\n\n**Korea Tourism Agency** - Откройте для себя красоту Кореи! 🇰🇷✨