- Added step-by-step installation guide - Included proper credentials (admin/123456) - Added comprehensive project structure - Included development commands and API docs - Added configuration examples - Improved formatting and organization
265 lines
16 KiB
Markdown
265 lines
16 KiB
Markdown
# 🇰🇷 Korea Tourism Agency
|
||
|
||
Modern tourism website for domestic travel in Korea with comprehensive admin panel.
|
||
|
||

|
||

|
||

|
||

|
||
|
||
## 🌟 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
|
||
```bash
|
||
git clone <repository-url>
|
||
cd korea-tourism-agency
|
||
```
|
||
|
||
### 2. Start Development Environment
|
||
```bash
|
||
# Give execute permissions to the script
|
||
chmod +x start-dev.sh
|
||
|
||
# Launch full environment
|
||
./start-dev.sh
|
||
```
|
||
|
||
### 3. Manual Setup (Alternative)
|
||
```bash
|
||
# 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:
|
||
|
||
- 🏠 **Main Website**: http://localhost:3000
|
||
- ⚙️ **Admin Panel**: http://localhost:3000/admin
|
||
- 🗄️ **Adminer (DB)**: http://localhost:8080
|
||
|
||
### 🔐 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
|
||
```bash
|
||
# 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)
|
||
```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
|
||
|
||
```bash
|
||
# 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. **Запустить среду разработки**\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** - Откройте для себя красоту Кореи! 🇰🇷✨ |