From 068fac72bfd8329ad884805c2ae41f0260a7a888 Mon Sep 17 00:00:00 2001 From: KINDNICK <68893236+KINDNICK@users.noreply.github.com> Date: Thu, 27 Nov 2025 00:01:19 +0900 Subject: [PATCH] =?UTF-8?q?Fix=20:=20=EC=9D=B4=EB=A9=94=EC=9D=BC=20?= =?UTF-8?q?=EB=B0=8F=20=ED=96=89=EC=82=AC=20=EA=B8=B0=EA=B0=84=20=EC=97=B0?= =?UTF-8?q?=EC=9E=A5=20=ED=8F=AC=ED=8A=B8=ED=8F=B4=EB=A6=AC=EC=98=A4=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/settings.local.json | 4 +- CLAUDE.md | 84 +++++++++++++++++++++++++++---------- README.md | 3 +- components/footer.html | 2 +- contact.html | 13 ++++-- gallery.html | 12 ++++++ index.html | 19 +++++---- portfolio.html | 29 ++++++++++--- qna.html | 15 +++---- services.html | 6 +-- 10 files changed, 133 insertions(+), 54 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 2865cd0..f2181de 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -18,7 +18,9 @@ "Bash(curl:*)", "Bash(netstat:*)", "Bash(ipconfig)", - "Bash(ping:*)" + "Bash(ping:*)", + "Bash(dir:*)", + "Bash(nul)" ], "deny": [], "ask": [] diff --git a/CLAUDE.md b/CLAUDE.md index 50ef665..a382ae5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,6 +6,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co This is the official website for 밍글 스튜디오 (Mingle Studio), a motion capture studio located in Incheon, South Korea. The website is a multi-page static site built with vanilla HTML, CSS, and JavaScript, showcasing motion capture services, studio galleries, and client portfolios. +**Tech Stack:** Pure HTML5, CSS3 (with CSS Variables), Vanilla JavaScript (ES6+), no framework dependencies + ## Architecture & Structure ### Page Architecture @@ -19,8 +21,9 @@ The site follows a modular component-based structure: ### Component Loading System The site uses a dynamic component loading system implemented in `js/common.js`: - Header and footer are loaded via `fetch()` API from `components/` directory -- Fallback system: Static backup footer is hidden when dynamic loading succeeds +- **Fallback System**: Pages should include a static backup footer in HTML that gets hidden when dynamic loading succeeds (check `backupFooter` logic in `loadComponents()`) - Components are initialized after DOM load with proper error handling +- Loading sequence: `showPageLoading()` → `loadComponents()` → `initLazyLoading()` → `hidePageLoading()` ### CSS Architecture - **CSS Variables**: Defined in `:root` of `common.css` with motion capture/VTuber orange theme @@ -30,20 +33,8 @@ The site uses a dynamic component loading system implemented in `js/common.js`: ## Development Commands -### Quick Start (권장) -**Windows:** -```cmd -# 더블클릭으로 실행 -start-server.bat -``` +### Server Options -**macOS/Linux:** -```bash -# 터미널에서 실행 -./start-server.sh -``` - -### Manual Server Start **Node.js (권장):** ```bash npm run dev # http://localhost:8000 @@ -52,29 +43,45 @@ npm run serve # 같은 기능 npm test # 도움말 + 서버 시작 ``` -**Python:** +**Python (Alternative):** ```bash -python server.py # 커스텀 서버 (추천) -python -m http.server 8000 # 기본 서버 +python server.py # Custom server with auto-open on port 8001 +python -m http.server 8000 # Basic Python server on port 8000 ``` +**Note:** The custom Python server (`server.py`) uses port 8001 and includes automatic port detection, browser opening, and clean URL support (`.html` extension optional). + ### Development Features -- **자동 브라우저 열기**: 서버 시작 시 자동으로 브라우저에서 사이트 열림 -- **Clean URLs**: `.html` 확장자 없이 접근 가능 (`/about`, `/services` 등) -- **개발 최적화**: 캐시 비활성화, CORS 헤더 추가 -- **오류 처리**: 포트 충돌 및 기본적인 오류 상황 처리 +- **Auto Browser Opening**: Python server automatically opens http://localhost:8001 (or available port) +- **Clean URLs**: `.html` extension optional for access (e.g., `/about` works as `/about.html`) +- **Dev Optimizations**: Cache disabled, CORS headers added +- **Port Auto-Detection**: Python server finds available ports from 8001-8020 if default is occupied +- **Error Handling**: Port conflicts and basic error scenarios handled gracefully ### Available URLs +When using npm scripts (port 8000): - Homepage: http://localhost:8000/ - About: http://localhost:8000/about -- Services: http://localhost:8000/services +- Services: http://localhost:8000/services - Portfolio: http://localhost:8000/portfolio - Gallery: http://localhost:8000/gallery - Contact: http://localhost:8000/contact - Q&A: http://localhost:8000/qna +When using `python server.py` (port 8001 or auto-detected): +- The server will display available URLs with the detected port + ## Key Technical Details +### JavaScript Module System +- **Common Utilities** (`js/common.js`): Exports functions via `window.commonUtils` object for use in page-specific scripts + - Navigation handling with hamburger menu + - Notification system with 4 types (success, error, warning, info) + - Lazy loading for YouTube iframes and images using IntersectionObserver + - Loading state management (page-level and component-level) + - Utility functions: `debounce`, `throttle`, `isValidEmail` +- **Popup System** (`js/popup.js`): Cookie-based "don't show today" functionality for main page popups + ### SEO Optimization - Structured data (JSON-LD) with LocalBusiness schema for search engines - Comprehensive meta tags including Open Graph, Twitter Cards, and Korean platform-specific tags @@ -108,7 +115,38 @@ python -m http.server 8000 # 기본 서버 - SOOP/streaming VODs: Direct iframe source for broadcast examples ### Navigation Updates -When adding new pages, update `components/header.html` navigation links and ensure corresponding CSS/JS files follow the naming convention. +When adding new pages, update `components/header.html` navigation links and ensure corresponding CSS/JS files follow the naming convention (`css/[page].css`, `js/[page].js`). + +## Important Notes + +### File Structure Conventions +- Each page has three files: `[page].html`, `css/[page].css`, `js/[page].js` +- Backup files may exist (e.g., `index_backup.html`, `index_new.html`) - these are not actively used +- All pages must include placeholders for dynamic components: + - `
` for header + - `` for footer +- Page-specific CSS and JS are loaded after common files for proper override capability + +### Styling System +Access the orange motion capture theme via CSS variables defined in `common.css`: +```css +--primary-color: #ff8800; +--gradient-main: linear-gradient(135deg, #ff8800 0%, #ff6600 100%); +--navbar-height: 70px; +``` + +### Common Utilities Access +Page-specific scripts can access common functions via `window.commonUtils`: +```javascript +// Show notification +window.commonUtils.showNotification('Message', 'success'); + +// Validate email +window.commonUtils.isValidEmail('test@example.com'); + +// Use debounce/throttle +const debouncedFn = window.commonUtils.debounce(myFn, 300); +``` ## Business Context diff --git a/README.md b/README.md index 5545fdb..31beda5 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,8 @@ npx serve . 프로젝트에 대한 문의사항이 있으시면 연락주세요: -- **이메일**: hello@minglestudio.com +- **비지니스 문의**: minglestudio@minglestudio.co.kr +- **예약 문의**: help@minglestudio.co.kr - **전화**: 010-1234-5678 - **주소**: 서울특별시 강남구 테헤란로 123 diff --git a/components/footer.html b/components/footer.html index a0662b8..82fc45c 100644 --- a/components/footer.html +++ b/components/footer.html @@ -3,7 +3,7 @@