Andrey K. Choi 13c752b93a feat: Оптимизация навигации AdminJS в логические группы
- Объединены ресурсы в 5 логических групп: Контент сайта, Бронирования, Отзывы и рейтинги, Персонал и гиды, Администрирование
- Удалены дублирующие настройки navigation для чистой группировки
- Добавлены CSS стили для визуального отображения иерархии с отступами
- Добавлены эмодзи-иконки для каждого типа ресурсов через CSS
- Улучшена навигация с правильной вложенностью элементов
2025-11-30 21:57:58 +09:00

🇰🇷 Korea Tourism Agency

Modern tourism website for domestic travel in Korea with comprehensive admin panel.

Korea Tourism Node.js PostgreSQL Docker

🌟 Features

🏛️ Website Features

  • Tour Packages: City tours, mountain hiking, fishing expeditions
  • Guide Profiles: Experienced local guides with specializations
  • Travel Blog: Articles about Korean culture, food, and destinations
  • Responsive Design: Mobile-first approach with modern UI
  • SEO Optimized: Clean URLs and meta tags

🛠️ Admin Panel Features

  • Route Management: Create and manage tour packages
  • Guide Management: Profile management with photos and schedules
  • Article System: Blog management with categories
  • Image Editor: Integrated upload, gallery, and URL options
  • User Management: Admin authentication and roles
  • Dashboard: Analytics and quick access to all features

🚀 Installation and Setup

Prerequisites

  • Docker and Docker Compose
  • Node.js 18+ (for local development)
  • Git

1. Clone Repository

git clone <repository-url>
cd korea-tourism-agency

2. Start Development Environment

# Give execute permissions to the script
chmod +x start-dev.sh

# Launch full environment
./start-dev.sh

3. Manual Setup (Alternative)

# Create .env file from example
cp .env.example .env

# Start containers
docker-compose up -d

# Run database migrations
docker-compose exec app npm run db:migrate

# Seed with test data
docker-compose exec app npm run db:seed

🌐 Access URLs

After successful startup:

🔐 Login Credentials

Admin Panel:

  • Username: admin
  • Password: 123456

Database (Adminer):

  • System: PostgreSQL
  • Server: postgres
  • Username: tourism_user
  • Password: tourism_password
  • Database: korea_tourism

📁 Project Structure

korea-tourism-agency/
├── 📂 src/                    # Application source code
│   ├── 📂 config/             # Database configuration
│   ├── 📂 routes/             # Express routes
│   └── 📂 helpers/            # Utility functions
├── 📂 views/                  # EJS templates
│   ├── 📂 routes/             # Tour pages
│   ├── 📂 guides/             # Guide pages
│   └── 📂 articles/           # Article pages
├── 📂 public/                 # Static files
│   ├── 📂 css/                # Stylesheets
│   ├── 📂 js/                 # JavaScript
│   ├── 📂 images/             # Images
│   └── 📂 uploads/            # Uploaded files
├── 📂 database/               # DB migrations and schemas
│   ├── schema.sql             # Database schema
│   ├── migrate.js             # Migration script
│   └── seed.js                # Test data
├── 📂 docker/                 # Docker configurations
└── 📂 docs/                   # Documentation

🗄️ Database

Main Tables

  • routes - Tourist routes and tours
  • guides - Guide profiles
  • articles - Blog articles
  • bookings - Tour bookings
  • admins - Administrators
  • contact_messages - Contact form messages
  • site_settings - Site settings

Tour Types

  • city - City tours (Seoul, Busan)
  • mountain - Mountain hiking (Seoraksan, Jirisan)
  • fishing - Sea fishing (East Sea, Jeju Island)

🛠️ Development

Useful Commands

# View application logs
docker-compose logs -f app

# Restart application
docker-compose restart app

# Execute commands in container
docker-compose exec app npm run db:migrate
docker-compose exec app npm run db:seed

# Stop all containers
docker-compose down

# Full cleanup (warning: deletes DB data)
docker-compose down -v
docker system prune -f

Route Structure

  • / - Homepage
  • /routes - Tour catalog
  • /routes/:id - Tour details
  • /guides - Guide list
  • /guides/:id - Guide profile
  • /articles - Blog articles
  • /admin - Admin panel
  • /api - REST API

API Endpoints

  • GET /api/routes - Get tours with filtering
  • GET /api/guides - Get guides
  • POST /api/booking - Create booking
  • GET /api/search - Site search

🎨 Design & UI

Color Scheme

  • Primary Color: #2563eb (Blue)
  • Korean Red: #c41e3a
  • Korean Blue: #003478
  • Modern gradients and transitions

UI Components

  • AdminJS - Admin panel framework
  • Bootstrap 5 - Frontend framework
  • Font Awesome - Icon library
  • AOS - Scroll animations
  • Chart.js - Charts and graphs

Responsive Design

  • Desktop (1200px+)
  • Tablet (768px-1199px)
  • Mobile (up to 767px)
  • Touch device support

🔧 Configuration

Environment Variables (.env)

# Database
DB_HOST=postgres
DB_PORT=5432
DB_NAME=korea_tourism
DB_USER=tourism_user
DB_PASSWORD=tourism_password

# Application
PORT=3000
NODE_ENV=development
SESSION_SECRET=your-secret-key

# File Upload
UPLOAD_PATH=/app/public/uploads
MAX_FILE_SIZE=5242880

# Contact Information
SITE_NAME=Korea Tourism Agency
CONTACT_EMAIL=info@koreatourism.com
CONTACT_PHONE=+82-2-1234-5678

🚀 Production Deployment

# Use production compose file
docker-compose -f docker-compose.prod.yml up -d

# Or create .env.production
cp .env.example .env.production
# Edit settings for production

# Launch with production settings
NODE_ENV=production docker-compose up -d

🌍 Localization

Site supports:

  • Korean (primary language)
  • English (for tourists)
  • Proper fonts: Noto Sans KR for Korean text

🌟 Особенности

🎯 Основные функции

  • Каталог туров: Городские экскурсии, горные походы, морская рыбалка
  • Система гидов: Профессиональные гиды с рейтингами и специализациями
  • Блог и статьи: Полезная информация о путешествиях по Корее
  • Система бронирования: Онлайн заявки с управлением статусами
  • Многоязычность: Поддержка корейского и английского языков

🎨 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. Запустить среду разработки\nbash\n# Дать права на выполнение скрипту\nchmod +x start-dev.sh\n\n# Запустить полное окружение\n./start-dev.sh\n\n\n3. Ручной запуск (альтернатива)\nbash\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\nbash\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\nenv\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\nbash\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.\n\n## 🆘 Поддержка\n\nЕсли у вас есть вопросы:\n\n- 📧 Email: info@koreatourism.com\n- 🐛 Issues: Создайте issue в репозитории\n- 📖 Docs: Смотрите папку /docs\n\n---\n\nKorea Tourism Agency - Откройте для себя красоту Кореи! 🇰🇷
Description
No description provided
Readme 673 KiB
Languages
JavaScript 50.4%
HTML 31.3%
EJS 14.1%
CSS 2.2%
PLpgSQL 1.3%
Other 0.7%