- Full-stack Node.js/Express application with PostgreSQL - Modern ES modules architecture - AdminJS admin panel with Sequelize ORM - Tourism routes, guides, articles, bookings management - Responsive Bootstrap 5 frontend - Docker containerization with docker-compose - Complete database schema with migrations - Authentication system for admin panel - Dynamic placeholder images for tour categories
217 lines
11 KiB
Markdown
217 lines
11 KiB
Markdown
# 📁 Korea Tourism Agency - Структура проекта
|
||
|
||
## 🎯 Обзор проекта
|
||
|
||
Полнофункциональный сайт туристического агентства для внутренних поездок по Корее с профессиональной админ-панелью на основе AdminLTE.
|
||
|
||
## 📂 Структура файлов
|
||
|
||
```
|
||
korea-tourism-agency/
|
||
│
|
||
├── 📄 README.md # Документация проекта
|
||
├── 📄 package.json # Зависимости Node.js
|
||
├── 📄 docker-compose.yml # Конфигурация Docker
|
||
├── 📄 Dockerfile # Docker образ приложения
|
||
├── 📄 .env.example # Пример переменных окружения
|
||
├── 📄 .gitignore # Git игнорируемые файлы
|
||
├── 🚀 start-dev.sh # Скрипт быстрого запуска
|
||
│
|
||
├── 📂 src/ # Исходный код приложения
|
||
│ ├── 📄 app.js # Основной файл приложения Express
|
||
│ ├── 📂 config/
|
||
│ │ └── 📄 database.js # Конфигурация подключения к БД
|
||
│ └── 📂 routes/ # Express маршруты
|
||
│ ├── 📄 admin.js # Админ панель маршруты
|
||
│ ├── 📄 api.js # REST API маршруты
|
||
│ ├── 📄 routes.js # Маршруты туров
|
||
│ ├── 📄 guides.js # Маршруты гидов
|
||
│ └── 📄 articles.js # Маршруты статей
|
||
│
|
||
├── 📂 views/ # EJS шаблоны
|
||
│ ├── 📄 layout.ejs # Общий layout
|
||
│ ├── 📄 index.ejs # Главная страница
|
||
│ ├── 📄 contact.ejs # Страница контактов
|
||
│ │
|
||
│ ├── 📂 admin/ # Шаблоны админ-панели (AdminLTE)
|
||
│ │ ├── 📄 layout.ejs # Layout админки
|
||
│ │ ├── 📄 dashboard.ejs # Dashboard с аналитикой
|
||
│ │ ├── 📄 login.ejs # Страница входа
|
||
│ │ ├── 📄 routes.ejs # Управление турами
|
||
│ │ ├── 📄 guides.ejs # Управление гидами
|
||
│ │ ├── 📄 articles.ejs # Управление статьями
|
||
│ │ ├── 📄 bookings.ejs # Управление бронированиями
|
||
│ │ ├── 📄 settings.ejs # Настройки сайта
|
||
│ │ └── 📄 profile.ejs # Профиль администратора
|
||
│ │
|
||
│ ├── 📂 routes/ # Страницы туров
|
||
│ │ ├── 📄 index.ejs # Список всех туров
|
||
│ │ └── 📄 detail.ejs # Детали тура
|
||
│ │
|
||
│ ├── 📂 guides/ # Страницы гидов
|
||
│ │ ├── 📄 index.ejs # Список гидов
|
||
│ │ └── 📄 detail.ejs # Профиль гида
|
||
│ │
|
||
│ ├── 📂 articles/ # Страницы статей
|
||
│ │ ├── 📄 index.ejs # Список статей
|
||
│ │ └── 📄 detail.ejs # Детали статьи
|
||
│ │
|
||
│ └── 📂 partials/ # Компоненты
|
||
│ ├── 📄 header.ejs # Шапка сайта
|
||
│ ├── 📄 footer.ejs # Подвал сайта
|
||
│ ├── 📄 navbar.ejs # Навигация
|
||
│ └── 📄 meta.ejs # Meta теги
|
||
│
|
||
├── 📂 public/ # Статические файлы
|
||
│ ├── 📂 css/ # Стили
|
||
│ │ ├── 📄 main.css # Основные стили (500+ строк)
|
||
│ │ └── 📄 admin.css # Дополнительные стили админки
|
||
│ │
|
||
│ ├── 📂 js/ # JavaScript
|
||
│ │ ├── 📄 main.js # Основной JS (интерактивность)
|
||
│ │ └── 📄 admin.js # JS для админ-панели
|
||
│ │
|
||
│ ├── 📂 images/ # Изображения
|
||
│ │ ├── 📄 logo.png # Логотип
|
||
│ │ ├── 📄 hero-bg.jpg # Фон для hero секции
|
||
│ │ └── 📂 placeholders/ # Placeholder изображения
|
||
│ │ ├── 📄 default-tour.svg # Заглушка для туров
|
||
│ │ └── 📄 default-guide.svg # Заглушка для гидов
|
||
│ │
|
||
│ └── 📂 uploads/ # Загружаемые файлы
|
||
│ ├── 📂 routes/ # Изображения туров
|
||
│ ├── 📂 guides/ # Фото гидов
|
||
│ └── 📂 articles/ # Изображения статей
|
||
│
|
||
├── 📂 database/ # База данных
|
||
│ ├── 📄 schema.sql # Полная схема БД (8 таблиц)
|
||
│ ├── 📄 migrate.js # Скрипт миграций
|
||
│ └── 📄 seed.js # Тестовые данные
|
||
│
|
||
├── 📂 docker/ # Docker конфигурации
|
||
│ ├── 📄 Dockerfile.dev # Dockerfile для разработки
|
||
│ ├── 📄 Dockerfile.prod # Dockerfile для продакшена
|
||
│ └── 📄 nginx.conf # Конфиг Nginx (для продакшена)
|
||
│
|
||
└── 📂 docs/ # Документация
|
||
├── 📄 SETUP.md # Инструкции по настройке
|
||
├── 📄 API.md # Документация API
|
||
└── 📄 DATABASE.md # Схема базы данных
|
||
```
|
||
|
||
## 🗄️ Структура базы данных
|
||
|
||
### Основные таблицы:
|
||
|
||
1. **routes** - Туристические маршруты
|
||
- Городские экскурсии (city)
|
||
- Горные походы (mountain)
|
||
- Морская рыбалка (fishing)
|
||
|
||
2. **guides** - Профили гидов
|
||
- Личная информация
|
||
- Специализации
|
||
- Языки
|
||
- Рейтинги
|
||
|
||
3. **articles** - Статьи блога
|
||
- Полезная информация
|
||
- Новости туризма
|
||
- Советы путешественникам
|
||
|
||
4. **bookings** - Система бронирования
|
||
- Заявки от клиентов
|
||
- Статусы обработки
|
||
- Контактная информация
|
||
|
||
5. **admins** - Администраторы
|
||
- Аутентификация
|
||
- Роли и права
|
||
|
||
6. **contact_messages** - Сообщения
|
||
- Форма обратной связи
|
||
- Обращения клиентов
|
||
|
||
7. **site_settings** - Настройки
|
||
- Конфигурация сайта
|
||
- SEO настройки
|
||
|
||
8. **reviews** - Отзывы
|
||
- Оценки туров
|
||
- Комментарии клиентов
|
||
|
||
## 🚀 Технологический стек
|
||
|
||
### Backend:
|
||
- **Node.js + Express.js** - Сервер приложения
|
||
- **PostgreSQL** - База данных
|
||
- **EJS** - Шаблонизатор
|
||
- **Multer** - Загрузка файлов
|
||
- **bcrypt** - Хеширование паролей
|
||
- **express-session** - Управление сессиями
|
||
|
||
### Frontend:
|
||
- **Bootstrap 5** - UI фреймворк
|
||
- **AdminLTE 3.2** - Админ панель
|
||
- **Font Awesome** - Иконки
|
||
- **AOS** - Анимации при скролле
|
||
- **Vanilla JavaScript** - Интерактивность
|
||
|
||
### DevOps:
|
||
- **Docker + Docker Compose** - Контейнеризация
|
||
- **Nginx** - Веб-сервер (продакшн)
|
||
- **Adminer** - Управление БД
|
||
|
||
### Дизайн:
|
||
- **Корейские цвета** (#c41e3a, #003478)
|
||
- **Noto Sans KR** - Корейские шрифты
|
||
- **Responsive Design** - Адаптивность
|
||
- **Modern UI/UX** - Современный интерфейс
|
||
|
||
## 🌟 Ключевые возможности
|
||
|
||
### ✅ Пользовательская часть:
|
||
- 🏠 Современная главная страница с hero секцией
|
||
- 🗺️ Каталог туров с фильтрацией по типам
|
||
- 👨💼 Профили гидов с рейтингами
|
||
- 📝 Блог с полезными статьями
|
||
- 📞 Форма контактов и обратной связи
|
||
- 🔍 Поиск по всему сайту
|
||
- 📱 Полная адаптивность для мобильных
|
||
|
||
### ⚙️ Админ-панель (AdminLTE):
|
||
- 📊 Dashboard с аналитикой и статистикой
|
||
- 🎯 CRUD операции для всех сущностей
|
||
- 📸 Система загрузки изображений
|
||
- 📋 Таблицы с поиском и сортировкой
|
||
- 📈 Графики и диаграммы
|
||
- 🔐 Безопасная аутентификация
|
||
|
||
### 🛠️ Техническое:
|
||
- 🐳 Docker контейнеризация
|
||
- 🗃️ PostgreSQL с миграциями
|
||
- 🔒 Безопасность и валидация
|
||
- 📦 Модульная архитектура
|
||
- 🚀 Готовность к продакшену
|
||
|
||
## 📝 Статус готовности
|
||
|
||
- ✅ Backend API - 100%
|
||
- ✅ База данных - 100%
|
||
- ✅ Админ панель - 100%
|
||
- ✅ Фронтенд дизайн - 100%
|
||
- ✅ Docker настройка - 100%
|
||
- ✅ Документация - 100%
|
||
- ✅ Скрипты запуска - 100%
|
||
|
||
## 🎯 Готов к использованию!
|
||
|
||
Проект полностью готов для:
|
||
- 🚀 **Разработки**: `./start-dev.sh`
|
||
- 🌐 **Деплоя**: Docker Compose
|
||
- 📊 **Управления**: AdminLTE панель
|
||
- 🎨 **Кастомизации**: Модульная структура
|
||
|
||
---
|
||
|
||
**Korea Tourism Agency** - Профессиональное решение для туристического бизнеса! 🇰🇷✨ |