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>
This commit is contained in:
강 한
2026-07-16 22:04:06 +09:00
co-authored by Claude Opus 4.8
commit 394d1b9805
132 changed files with 23468 additions and 0 deletions
@@ -0,0 +1,28 @@
[package]
name = "archive-indexer"
version = "0.1.0"
edition = "2021"
[dependencies]
archive-db = { path = "../archive-db" }
archive-vfs = { path = "../archive-vfs" }
jwalk = "0.8"
rayon = "1"
crossbeam-channel = { workspace = true }
xxhash-rust = { version = "0.8", features = ["xxh3"] }
blake3 = { version = "1", features = ["mmap", "rayon"] }
image = "0.25"
image_hasher = "3"
fast_image_resize = "6"
imagesize = "0.14"
kamadak-exif = "0.6"
thiserror = { workspace = true }
tracing = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
rusqlite = { version = "0.40", features = ["bundled"] }
trash = "5"
filetime = "0.2"
[dev-dependencies]
tempfile = "3"