Initial commit: Korea Tourism Agency website with AdminJS
- 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
BIN
public/images/city-tour-placeholder.webp
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
44
public/images/default-article.jpg
Normal file
@@ -0,0 +1,44 @@
|
||||
<!-- Korea Tourism Agency - Placeholder SVG Image Generator -->
|
||||
<svg width="600" height="400" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- Gradient Background -->
|
||||
<defs>
|
||||
<linearGradient id="koreaGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#2563eb;stop-opacity:1" />
|
||||
<stop offset="50%" style="stop-color:#3b82f6;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#1e40af;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- Background -->
|
||||
<rect width="100%" height="100%" fill="url(#koreaGradient)"/>
|
||||
|
||||
<!-- Mountain Silhouette -->
|
||||
<path d="M0,300 Q150,200 300,250 Q450,200 600,280 L600,400 L0,400 Z" fill="rgba(255,255,255,0.1)"/>
|
||||
<path d="M0,320 Q100,240 200,280 Q400,220 600,300 L600,400 L0,400 Z" fill="rgba(255,255,255,0.05)"/>
|
||||
|
||||
<!-- Korean Flag Colors Accent -->
|
||||
<circle cx="500" cy="100" r="15" fill="#c41e3a" opacity="0.3"/>
|
||||
<circle cx="480" cy="120" r="10" fill="#003478" opacity="0.3"/>
|
||||
|
||||
<!-- Tour Bus Icon -->
|
||||
<g transform="translate(250,180)">
|
||||
<rect x="0" y="20" width="100" height="40" rx="5" fill="white" opacity="0.9"/>
|
||||
<rect x="10" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="30" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="50" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="70" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<circle cx="20" cy="65" r="8" fill="#374151"/>
|
||||
<circle cx="80" cy="65" r="8" fill="#374151"/>
|
||||
<rect x="0" y="45" width="100" height="8" fill="white" opacity="0.9"/>
|
||||
</g>
|
||||
|
||||
<!-- Korean Text -->
|
||||
<text x="300" y="330" font-family="Arial, sans-serif" font-size="24" font-weight="bold" text-anchor="middle" fill="white">한국 관광</text>
|
||||
<text x="300" y="350" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="white" opacity="0.8">Korea Tourism</text>
|
||||
|
||||
<!-- Decorative Elements -->
|
||||
<circle cx="50" cy="50" r="3" fill="white" opacity="0.4"/>
|
||||
<circle cx="550" cy="80" r="2" fill="white" opacity="0.6"/>
|
||||
<circle cx="100" cy="120" r="2" fill="white" opacity="0.5"/>
|
||||
<circle cx="520" cy="200" r="3" fill="white" opacity="0.3"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
44
public/images/default-tour.jpg
Normal file
@@ -0,0 +1,44 @@
|
||||
<!-- Korea Tourism Agency - Placeholder SVG Image Generator -->
|
||||
<svg width="600" height="400" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- Gradient Background -->
|
||||
<defs>
|
||||
<linearGradient id="koreaGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#2563eb;stop-opacity:1" />
|
||||
<stop offset="50%" style="stop-color:#3b82f6;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#1e40af;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- Background -->
|
||||
<rect width="100%" height="100%" fill="url(#koreaGradient)"/>
|
||||
|
||||
<!-- Mountain Silhouette -->
|
||||
<path d="M0,300 Q150,200 300,250 Q450,200 600,280 L600,400 L0,400 Z" fill="rgba(255,255,255,0.1)"/>
|
||||
<path d="M0,320 Q100,240 200,280 Q400,220 600,300 L600,400 L0,400 Z" fill="rgba(255,255,255,0.05)"/>
|
||||
|
||||
<!-- Korean Flag Colors Accent -->
|
||||
<circle cx="500" cy="100" r="15" fill="#c41e3a" opacity="0.3"/>
|
||||
<circle cx="480" cy="120" r="10" fill="#003478" opacity="0.3"/>
|
||||
|
||||
<!-- Tour Bus Icon -->
|
||||
<g transform="translate(250,180)">
|
||||
<rect x="0" y="20" width="100" height="40" rx="5" fill="white" opacity="0.9"/>
|
||||
<rect x="10" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="30" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="50" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="70" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<circle cx="20" cy="65" r="8" fill="#374151"/>
|
||||
<circle cx="80" cy="65" r="8" fill="#374151"/>
|
||||
<rect x="0" y="45" width="100" height="8" fill="white" opacity="0.9"/>
|
||||
</g>
|
||||
|
||||
<!-- Korean Text -->
|
||||
<text x="300" y="330" font-family="Arial, sans-serif" font-size="24" font-weight="bold" text-anchor="middle" fill="white">한국 관광</text>
|
||||
<text x="300" y="350" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="white" opacity="0.8">Korea Tourism</text>
|
||||
|
||||
<!-- Decorative Elements -->
|
||||
<circle cx="50" cy="50" r="3" fill="white" opacity="0.4"/>
|
||||
<circle cx="550" cy="80" r="2" fill="white" opacity="0.6"/>
|
||||
<circle cx="100" cy="120" r="2" fill="white" opacity="0.5"/>
|
||||
<circle cx="520" cy="200" r="3" fill="white" opacity="0.3"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
BIN
public/images/fish-placeholder.jpg
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
44
public/images/korea-hero.jpg
Normal file
@@ -0,0 +1,44 @@
|
||||
<!-- Korea Tourism Agency - Placeholder SVG Image Generator -->
|
||||
<svg width="600" height="400" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- Gradient Background -->
|
||||
<defs>
|
||||
<linearGradient id="koreaGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#2563eb;stop-opacity:1" />
|
||||
<stop offset="50%" style="stop-color:#3b82f6;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#1e40af;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- Background -->
|
||||
<rect width="100%" height="100%" fill="url(#koreaGradient)"/>
|
||||
|
||||
<!-- Mountain Silhouette -->
|
||||
<path d="M0,300 Q150,200 300,250 Q450,200 600,280 L600,400 L0,400 Z" fill="rgba(255,255,255,0.1)"/>
|
||||
<path d="M0,320 Q100,240 200,280 Q400,220 600,300 L600,400 L0,400 Z" fill="rgba(255,255,255,0.05)"/>
|
||||
|
||||
<!-- Korean Flag Colors Accent -->
|
||||
<circle cx="500" cy="100" r="15" fill="#c41e3a" opacity="0.3"/>
|
||||
<circle cx="480" cy="120" r="10" fill="#003478" opacity="0.3"/>
|
||||
|
||||
<!-- Tour Bus Icon -->
|
||||
<g transform="translate(250,180)">
|
||||
<rect x="0" y="20" width="100" height="40" rx="5" fill="white" opacity="0.9"/>
|
||||
<rect x="10" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="30" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="50" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="70" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<circle cx="20" cy="65" r="8" fill="#374151"/>
|
||||
<circle cx="80" cy="65" r="8" fill="#374151"/>
|
||||
<rect x="0" y="45" width="100" height="8" fill="white" opacity="0.9"/>
|
||||
</g>
|
||||
|
||||
<!-- Korean Text -->
|
||||
<text x="300" y="330" font-family="Arial, sans-serif" font-size="24" font-weight="bold" text-anchor="middle" fill="white">한국 관광</text>
|
||||
<text x="300" y="350" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="white" opacity="0.8">Korea Tourism</text>
|
||||
|
||||
<!-- Decorative Elements -->
|
||||
<circle cx="50" cy="50" r="3" fill="white" opacity="0.4"/>
|
||||
<circle cx="550" cy="80" r="2" fill="white" opacity="0.6"/>
|
||||
<circle cx="100" cy="120" r="2" fill="white" opacity="0.5"/>
|
||||
<circle cx="520" cy="200" r="3" fill="white" opacity="0.3"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
BIN
public/images/mountain-placeholder.jpg
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
public/images/placeholder.jpg
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
43
public/images/placeholders/default-guide.svg
Normal file
@@ -0,0 +1,43 @@
|
||||
<!-- Korea Tourism Agency - Guide Placeholder SVG -->
|
||||
<svg width="300" height="300" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- Gradient Background -->
|
||||
<defs>
|
||||
<linearGradient id="guideGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#f3f4f6;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#e5e7eb;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- Background -->
|
||||
<rect width="100%" height="100%" fill="url(#guideGradient)"/>
|
||||
|
||||
<!-- Guide Icon -->
|
||||
<g transform="translate(150,150)">
|
||||
<!-- Head -->
|
||||
<circle cx="0" cy="-40" r="25" fill="#2563eb"/>
|
||||
|
||||
<!-- Body -->
|
||||
<rect x="-20" y="-15" width="40" height="60" rx="10" fill="#3b82f6"/>
|
||||
|
||||
<!-- Arms -->
|
||||
<rect x="-30" y="-10" width="15" height="40" rx="7" fill="#2563eb"/>
|
||||
<rect x="15" y="-10" width="15" height="40" rx="7" fill="#2563eb"/>
|
||||
|
||||
<!-- Legs -->
|
||||
<rect x="-15" y="45" width="12" height="30" rx="6" fill="#1e40af"/>
|
||||
<rect x="3" y="45" width="12" height="30" rx="6" fill="#1e40af"/>
|
||||
|
||||
<!-- Korean Flag Badge -->
|
||||
<rect x="8" y="5" width="12" height="8" fill="#c41e3a"/>
|
||||
<rect x="8" y="5" width="6" height="4" fill="white"/>
|
||||
<rect x="8" y="9" width="6" height="4" fill="#003478"/>
|
||||
|
||||
<!-- Guide Flag -->
|
||||
<rect x="25" y="-25" width="3" height="40" fill="#8b5cf6"/>
|
||||
<rect x="28" y="-25" width="20" height="12" fill="#a855f7"/>
|
||||
</g>
|
||||
|
||||
<!-- Korean Text -->
|
||||
<text x="150" y="250" font-family="Arial, sans-serif" font-size="18" font-weight="bold" text-anchor="middle" fill="#374151">가이드</text>
|
||||
<text x="150" y="270" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#6b7280">Professional Guide</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
44
public/images/placeholders/default-tour.svg
Normal file
@@ -0,0 +1,44 @@
|
||||
<!-- Korea Tourism Agency - Placeholder SVG Image Generator -->
|
||||
<svg width="600" height="400" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- Gradient Background -->
|
||||
<defs>
|
||||
<linearGradient id="koreaGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#2563eb;stop-opacity:1" />
|
||||
<stop offset="50%" style="stop-color:#3b82f6;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#1e40af;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- Background -->
|
||||
<rect width="100%" height="100%" fill="url(#koreaGradient)"/>
|
||||
|
||||
<!-- Mountain Silhouette -->
|
||||
<path d="M0,300 Q150,200 300,250 Q450,200 600,280 L600,400 L0,400 Z" fill="rgba(255,255,255,0.1)"/>
|
||||
<path d="M0,320 Q100,240 200,280 Q400,220 600,300 L600,400 L0,400 Z" fill="rgba(255,255,255,0.05)"/>
|
||||
|
||||
<!-- Korean Flag Colors Accent -->
|
||||
<circle cx="500" cy="100" r="15" fill="#c41e3a" opacity="0.3"/>
|
||||
<circle cx="480" cy="120" r="10" fill="#003478" opacity="0.3"/>
|
||||
|
||||
<!-- Tour Bus Icon -->
|
||||
<g transform="translate(250,180)">
|
||||
<rect x="0" y="20" width="100" height="40" rx="5" fill="white" opacity="0.9"/>
|
||||
<rect x="10" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="30" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="50" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<rect x="70" y="25" width="15" height="12" fill="#2563eb"/>
|
||||
<circle cx="20" cy="65" r="8" fill="#374151"/>
|
||||
<circle cx="80" cy="65" r="8" fill="#374151"/>
|
||||
<rect x="0" y="45" width="100" height="8" fill="white" opacity="0.9"/>
|
||||
</g>
|
||||
|
||||
<!-- Korean Text -->
|
||||
<text x="300" y="330" font-family="Arial, sans-serif" font-size="24" font-weight="bold" text-anchor="middle" fill="white">한국 관광</text>
|
||||
<text x="300" y="350" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="white" opacity="0.8">Korea Tourism</text>
|
||||
|
||||
<!-- Decorative Elements -->
|
||||
<circle cx="50" cy="50" r="3" fill="white" opacity="0.4"/>
|
||||
<circle cx="550" cy="80" r="2" fill="white" opacity="0.6"/>
|
||||
<circle cx="100" cy="120" r="2" fill="white" opacity="0.5"/>
|
||||
<circle cx="520" cy="200" r="3" fill="white" opacity="0.3"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |