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
This commit is contained in:
2025-11-29 18:13:17 +09:00
commit 409e6c146b
53 changed files with 16195 additions and 0 deletions

View 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

View 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