# Archive 수만 개의 사진·영상을 빠르게 조회·재생하면서 삭제/태그/이동으로 관리하고, 중복(완전 동일 + 유사)을 찾아 제거하는 크로스플랫폼 데스크톱 앱. - **플랫폼**: Windows x64 / Windows ARM64 / macOS (Intel + Apple Silicon) - **배포**: 포터블(무설치) 우선 — exe 옆 `data/` 폴더가 있으면 포터블 모드로 동작 - **스택**: Tauri v2 (Rust) + SolidJS + SQLite + ffmpeg 사이드카 - **소스**: 로컬 디스크, OS 마운트 드라이브(UNC/SMB), 앱내 FTP/SFTP/WebDAV (시놀로지 등) ## 개발 요구사항: Node 22+, Rust stable(1.95+), (Windows) WebView2 런타임 — Win10/11 기본 탑재. > **이 PC 주의사항**: VS Community 2026에는 MSVC 데스크톱 라이브러리가 없어 > rustc가 링크에 실패한다(LNK1104: msvcrt.lib). 반드시 **VS Build Tools 2026의 > vcvars64 환경**에서 cargo를 실행해야 하며, 아래 스크립트가 이를 대신 처리한다. ```bat npm install scripts\dev.cmd :: 개발 실행 (vcvars64 + tauri dev) scripts\test.cmd :: 코어 크레이트 헤드리스 테스트 (vcvars64 + cargo test) ``` Windows ARM64 크로스컴파일은 로컬에 ARM64 MSVC 라이브러리가 없어 CI에서만 검증된다. 로컬에서 하려면 VS Installer에서 "MSVC ARM64/AArch64 빌드 도구" 컴포넌트를 설치할 것. ## 구조 ``` src/ SolidJS 프론트엔드 (3-pane UI, 가상 그리드) src-tauri/ Tauri 셸 (커맨드, 데이터 디렉터리, 미디어 서버 기동) crates/ archive-db SQLite 스키마·마이그레이션·단일 writer 스레드 archive-vfs VFS 추상화 (local / sftp / ftp / webdav) archive-indexer 스캔·해시·썸네일·중복탐지 엔진 archive-media localhost HTTP 미디어 서버 (Range 스트리밍, ffmpeg 잡) ``` ## 배포 **Windows 포터블 (무설치)** ```bat scripts\fetch-ffmpeg.ps1 -Target win64 :: ffmpeg 사이드카 다운로드 npm run tauri build -- --no-bundle :: 릴리스 빌드 scripts\package-portable.ps1 -Target x64 :: Archive--windows-x64.zip 생성 ``` zip을 풀고 `Archive.exe`를 실행하면 됩니다. exe 옆 `data\` 폴더에 인덱스·썸네일이 저장되므로 폴더째 옮겨도 동작합니다. WebView2 런타임(Win10/11 기본 탑재)이 필요합니다. **macOS (universal)** CI(macos-14)에서 `scripts/fetch-ffmpeg-macos.ps1`로 arm64+x64 ffmpeg를 lipo 결합한 뒤 `tauri build --target universal-apple-darwin`으로 `.dmg`를 만듭니다. 배포 시 Apple Developer ID 서명·공증이 필요하며, 미서명 빌드는 첫 실행 시 우클릭 → 열기로 Gatekeeper를 통과시켜야 합니다. **Windows ARM64**: CI에서 크로스컴파일로 검증됩니다(로컬은 ARM64 MSVC 툴체인 필요). ## 유지보수 앱 시작 시 백그라운드로 DB 백업(`archive.db.bak`, VACUUM INTO), 30일 지난 삭제 항목 하드 퍼지, 썸네일 캐시 LRU 정리(기본 상한 4GB)를 수행합니다. 설계 문서: 계획서 참조 (`~/.claude/plans/reflective-watching-toucan.md`).