Photo Fold 아키텍처
이 도구가 어떻게 만들어지고 어떻게 배포되는지를 한 장에 정리한 개발자용 문서입니다. 개별 기능 명세는 위키, 만들면서 겪은 회고는 개발노트를 참고하세요.
한눈에 보는 구조
[사용자 PC]
└─ photo-fold.exe ← PyInstaller로 묶은 단일 실행파일
├─ 사진 스캔 (로컬 폴더 읽기)
├─ EXIF 파싱 (촬영일 · 방향)
└─ 자동 그룹핑 / 썸네일 생성 ※ 네트워크 없음, 전부 로컬
[GitHub]
└─ Releases ← 빌드 산출물(.exe)을 업로드하는 배포 채널
[Cloudflare Pages] (이 사이트)
└─ 소개(랜딩) · 릴리즈노트 · 위키 · 아키텍처 · 개발노트
└─ "내려받기" 버튼이 GitHub Releases로 연결됨
구성 요소
| 레이어 | 무엇 | 왜 |
|---|---|---|
| 앱 본체 | Python (사진 스캔 · EXIF · 정리 로직) | 로컬 파일 접근이 쉽고 이미지 라이브러리가 풍부 |
| 패키징 | PyInstaller → 단일 .exe | 사용자가 Python 설치 없이 더블클릭으로 실행 |
| 배포 | GitHub Releases | 버전별 바이너리 보관 + 다운로드 링크 안정적 |
| 소개/문서 | 이 Astro 정적 사이트 (Cloudflare Pages) | 실행파일에는 담기 어려운 설명·문서·회고를 웹으로 |
릴리즈 흐름
- 로컬에서 기능 개발 → 태그 버전 결정 (예:
v0.2.0) pyinstaller로.exe빌드- GitHub에 릴리즈 생성 +
.exe첨부, 릴리즈노트에도 같은 내용 기록 - 이 사이트의 “내려받기” 버튼은 항상
releases/latest를 가리키므로 자동으로 최신 버전 연결
왜 웹 서비스가 아니라 다운로드형인가
- 사진 원본을 서버로 올리지 않는 게 이 도구의 핵심 가치 → 로컬 실행파일이 맞음
- 그래서 이 Pages 사이트는 “앱”이 아니라 소개 + 문서 허브 역할만 한다
- 나중에 온라인 기능(공유 링크 등)이 필요해지면 그때 Pages Functions(Worker)를 덧붙일 수 있음