← 홈으로

Photo Fold 아키텍처

#아키텍처#Python#exe

이 도구가 어떻게 만들어지고 어떻게 배포되는지를 한 장에 정리한 개발자용 문서입니다. 개별 기능 명세는 위키, 만들면서 겪은 회고는 개발노트를 참고하세요.

한눈에 보는 구조

[사용자 PC]
   └─ photo-fold.exe  ← PyInstaller로 묶은 단일 실행파일
        ├─ 사진 스캔 (로컬 폴더 읽기)
        ├─ EXIF 파싱 (촬영일 · 방향)
        └─ 자동 그룹핑 / 썸네일 생성   ※ 네트워크 없음, 전부 로컬

[GitHub]
   └─ Releases  ← 빌드 산출물(.exe)을 업로드하는 배포 채널

[Cloudflare Pages]  (이 사이트)
   └─ 소개(랜딩) · 릴리즈노트 · 위키 · 아키텍처 · 개발노트
        └─ "내려받기" 버튼이 GitHub Releases로 연결됨

구성 요소

레이어무엇
앱 본체Python (사진 스캔 · EXIF · 정리 로직)로컬 파일 접근이 쉽고 이미지 라이브러리가 풍부
패키징PyInstaller → 단일 .exe사용자가 Python 설치 없이 더블클릭으로 실행
배포GitHub Releases버전별 바이너리 보관 + 다운로드 링크 안정적
소개/문서이 Astro 정적 사이트 (Cloudflare Pages)실행파일에는 담기 어려운 설명·문서·회고를 웹으로

릴리즈 흐름

  1. 로컬에서 기능 개발 → 태그 버전 결정 (예: v0.2.0)
  2. pyinstaller.exe 빌드
  3. GitHub에 릴리즈 생성 + .exe 첨부, 릴리즈노트에도 같은 내용 기록
  4. 이 사이트의 “내려받기” 버튼은 항상 releases/latest 를 가리키므로 자동으로 최신 버전 연결

왜 웹 서비스가 아니라 다운로드형인가

  • 사진 원본을 서버로 올리지 않는 게 이 도구의 핵심 가치 → 로컬 실행파일이 맞음
  • 그래서 이 Pages 사이트는 “앱”이 아니라 소개 + 문서 허브 역할만 한다
  • 나중에 온라인 기능(공유 링크 등)이 필요해지면 그때 Pages Functions(Worker)를 덧붙일 수 있음