# 기술 명세 ## 프로젝트 개요 - 목적: 보유 중인 닌텐도 스위치 게임 목록을 웹에서 조회, 필터링, 정렬, 상세 확인한다. - 형태: 정적 HTML + ES Module JavaScript 기반 단일 프론트엔드. - 빌드: Tailwind CSS CLI를 사용해 스타일 파일을 생성/관리한다. ## 화면/라우팅 - 목록 화면: `index.html` - 주요 기능: 검색, 필터(언어/판매상태/국가/CERO), 정렬, 게임 개수 표시, 판매 정보 배지 표시 - 데이터 소스: `db/nsw.resale.db.js` (`export default` → `items` 배열) - 스크립트: `script/nsw.js` - 상세 화면: `nsw-detail.html` - 주요 기능: 게임 기본 정보/판매 정보 상세 표시 - 진입 방식: `nsw-detail.html?no={gameNo}` - 데이터 소스: `db/nsw.resale.db.js` - 스크립트: `script/nsw-detail.js` ## 데이터 구조 (중고 판매 DB) - 파일: `db/nsw.resale.db.js` - 형태: `export const NSW_RESALE_DB = { metadata, items }`, `export default items` - 주요 필드: - `no` (number): 게임 고유 순번 - `title` (string): 일본어/원문 타이틀 - `koTitle` (string|null): 한국어 타이틀 - `image` (string): 상세 이미지 경로 - `thumbnail` (string): 목록 썸네일 경로 - `platform` (string): 플랫폼명 - `requiredCapacity` (string|null): 필요 용량 - `playMode` (string|null): 플레이 모드 - `playUser` (string|null): 플레이 인원 - `localPlayUser` (string|null): 로컬 통신 인원 - `onlinePlayUser` (string|null): 온라인 통신 인원 - `compatibleController` (string|null): 대응 컨트롤러 - `onlineDataSave` (string|null): 세이브 데이터 보관 지원 여부 - `maker` (string|null): 메이커 - `language` (string|null): 지원 언어 목록 - `release` (string|null): 출시일(예: `2017年7月20日`) - `tags` (string|null): 장르/특성 태그 - `extension` (string[]|null): 추가 콘텐츠 목록 - `status` (string): `available` | `sold` (판매 가능/판매완료) - `itemCondition` (string|null): 판매자가 직접 작성하는 제품 상태. 예: `미개봉 새제품`, `초회 한정판` - `country` (string): `KOR` | `JPN` - `cero` (string|null): CERO 등급 - `sale` (object): - `currency` (string): `KRW` - `suggestedPrice` (`number` | `"none"`): 수기 입력된 판매가(KRW). 미입력 항목은 `"none"`. ## 필터/정렬 동작 - 필터: - 언어 필터: 한국어 지원/미지원 - 상태 필터: `status` + `extension` 보유 여부 - 국가 필터: `country` - CERO 필터: `cero` - 정렬: - 순번 최신/과거 - 발매일 최신/과거 - 구매일 최신/과거 - 무작위 ## 스타일/에셋 - 스타일 소스: `style/tailwind.css` - 이미지: - 목록/상세에서 `images/nsw` 하위 이미지를 참조 - 데이터 레코드의 `image`, `thumbnail` 필드로 렌더링 - 원격 업로드 용량 제한 대응을 위해 `images/**`는 Git LFS 관리 대상으로 지정한다.