Files
Archive/README.md
T
강 한andClaude Opus 4.8 394d1b9805 Archive v0.1.0 — 사진/영상 라이브러리 관리 프로그램
Tauri v2 + SolidJS + SQLite + ffmpeg 사이드카로 구현한 크로스플랫폼
사진·영상 관리 앱. 로컬/NAS(SFTP·WebDAV·FTP) 소스, 가상 그리드,
인앱 재생, 태그/이동/삭제/undo, 중복 탐지, 포터블 배포.

- archive-db: SQLite 스키마·마이그레이션·단일 writer 스레드 + FTS5 trigram
- archive-vfs: VFS 4백엔드(local/sftp/ftp/webdav) + 자격증명(키체인/볼트)
- archive-indexer: 스캔·해시·썸네일·중복탐지·태그·파일작업·유지보수
- archive-media: localhost HTTP 미디어 서버(Range) + ffmpeg 스트림 잡
- 프론트: 3-pane UI, justified 가상 그리드, 라이트박스, 중복 검토 패널

Rust 테스트 49개 통과. CI: win x64/arm64 포터블 zip + macOS universal dmg.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 22:04:06 +09:00

68 lines
3.1 KiB
Markdown

# 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-<ver>-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`).