Files
tourrism_site/README.md
Andrey K. Choi 1e7d7c06eb 📚 Enhanced README with detailed setup instructions
- 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
2025-11-30 10:34:04 +09:00

265 lines
16 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
Modern tourism website for domestic travel in Korea with comprehensive admin panel.
![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)
## 🌟 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** - Откройте для себя красоту Кореи! 🇰🇷✨