# Mana Viewer — 개발 및 분석 종합 보고서 이 문서는 **Mana Viewer(마나 뷰어)** 프로젝트의 데스크탑 애플리케이션 아키텍처, 구현된 UI/UX 기능, 그리고 대상 웹사이트의 구조 분석 결과를 요약한 종합 보고서입니다. --- ## 1. 프로젝트 개요 - **목적**: 만화/웹툰을 쾌적하고 몰입감 있게 감상할 수 있는 데스크탑 뷰어 애플리케이션 개발 - **프레임워크**: **Tauri v2** (Rust Backend + React/TypeScript Frontend) - **디자인 테마**: 다크 모드 기반의 글래스모피즘(Glassmorphism) 및 퍼플 액센트 테마 --- ## 2. 애플리케이션 아키텍처 및 구현 현황 ### 2.1 프론트엔드 (React + TypeScript) - **[UrlInput.tsx](file:///Users/kim1634/mycloud/personal/workspace/mana-viewer/src/components/UrlInput.tsx)** - 만화 회차 URL 입력 및 로딩 인터페이스 - 최근 읽은 URL 히스토리 저장 및 불러오기 (`localStorage` 연동) - 파싱 에러 및 소스 붙여넣기 모달 지원 - **[MangaViewer.tsx](file:///Users/kim1634/mycloud/personal/workspace/mana-viewer/src/components/MangaViewer.tsx)** - **단면 / 양면 모드 (Single / Spread)**: 한 화면에 1장 또는 2장의 이미지를 나란히 배치 - **읽기 방향 (LTR / RTL)**: 한국 만화(좌→우) 및 일본 만화(우→좌) 방향 전환 지원 - **시작 페이지 오프셋 (Spread Start Offset)**: 표지(1페이지)는 단독으로 보고, 설정한 오프셋 페이지부터 양면으로 매칭하는 오프셋 제어 로직 - **3분할 클릭 존 (Click Zones)**: 화면 좌측(이전), 우측(다음), 중앙(툴바 토글) 클릭 반응 - **키보드 단축키**: `←`/`→` (페이지 이동), `F` (전체화면), `S` (설정 패널) - **[ViewerToolbar.tsx](file:///Users/kim1634/mycloud/personal/workspace/mana-viewer/src/components/ViewerToolbar.tsx)** - 상단 자동 숨김 툴바 (3초 간 무반응 시 감춤) - 회차 제목, 현재/전체 페이지 표시 - 이전화 / 다음화 넘기기 네비게이션 버튼 - **[SettingsPanel.tsx](file:///Users/kim1634/mycloud/personal/workspace/mana-viewer/src/components/SettingsPanel.tsx)** - 슬라이드 방식의 설정 오버레이 패널 - 뷰어 모드, 읽기 방향, 양면 시작 오프셋, 이미지 맞춤(너비/높이/원본), 배경색 설정 --- ### 2.2 백엔드 (Rust / Tauri) - **[parser.rs](file:///Users/kim1634/mycloud/personal/workspace/mana-viewer/src-tauri/src/parser.rs)** - `scraper` 크레이트를 활용한 HTML 데이터 추출 - `#theme-viewer-data` 스크립트 태그 내 뷰어 토큰, 회차 ID, 메타데이터 추출 - `.theme-viewer-prev`, `.theme-viewer-next` 및 텍스트 기반 이전화/다음화 네비게이션 추출 - **[commands.rs](file:///Users/kim1634/mycloud/personal/workspace/mana-viewer/src-tauri/src/commands.rs)** - `fetch_chapter`: 페이지 요청 및 메타데이터 수집 - `fetch_image`: 이미지 Hotlink 방지 우회를 위한 `Referer` 헤더 추가 프록시 및 Base64 변환 --- ## 3. 웹사이트 구조 분석 결과 분석 대상 페이지: `https://newtoki1.org/manhwa/8605/u-mokggzkw-74cw` ### 3.1 렌더링 방식 및 이미지 구동 구조 1. **정적 HTML 태그 미사용**: - 만화 본문 이미지는 정적 `` 태그로 렌더링되지 않음 - 본문 영역 HTML에는 배너 광고 요소만 존재함 2. **동적 API 로딩 방식**: - 페이지 하단 `