kimwontae

← All projects

Web & Interactive

Film Timer

암실 환경에서 현상 단계, 교반, 온도, 레시피와 기록을 오프라인으로 관리하는 PWA.

Category
Offline PWA / IndexedDB
Year
2026
Film Development Timer 레시피 화면

실제 서비스 화면: 현상 레시피 선택 인터페이스

프로젝트 개요

해결 과제
암실에서는 낮은 조도와 젖은 손으로 현상 단계, 시간, 교반, 온도와 레시피를 함께 관리해야 했다.
접근 방식
단계별 타이머와 교반 알림, 레시피·필름 기록을 오프라인 PWA로 구성하고 데이터를 IndexedDB에 저장했다.
담당 기여
현상 과정을 기능 구조로 정리하고 React·TypeScript 애플리케이션과 암실용 화면을 설계·개발했다.
결과
네트워크 없이 현상 과정을 안내하고 레시피와 결과를 기기에 기록하는 필름 현상 보조 도구를 배포했다.
"암실의 현상 단계와 기록을 한 화면에서 관리하는 오프라인 PWA"

암실 작업을 위한 오프라인 도구

Film Development Timer는 흑백 및 컬러(C-41/E-6) 필름 현상의 단계별 시간, 교반 알림, 온도 보정, 개인 레시피와 결과 기록을 한곳에서 관리하는 프로그레시브 웹 앱(PWA)이다.

젖은 장갑과 낮은 조도에서도 조작할 수 있도록 큰 버튼과 높은 대비를 사용했다. 지원되는 브라우저에서는 진동과 화면 꺼짐 방지 기능을 사용하며, 레시피와 기록은 서버 계정 없이 브라우저의 IndexedDB에 저장한다.

주요 기능 (Core Features)

  • 단계별 타이머와 교반 알림: 현상(Developer), 정지(Stop), 정착(Fixer), 수세(Wash)의 시간을 이어서 관리합니다. 교반 간격에는 화면, 소리와 지원 기기의 진동으로 알립니다.
  • 오프라인 일지와 결과 기록: 백엔드 서버 없이 레시피와 현상 기록을 브라우저의 IndexedDB에 저장합니다. 스캔 이미지는 Canvas API로 WebP 형식으로 압축해 기록에 연결합니다.
  • 현상 프리셋: Kodak, Ilford 등 20개 이상의 필름·약품 조합을 로컬 JSON에 담아 ISO, 온도와 교반 시간을 불러옵니다.
  • 시간 보정: 기준 온도 20°C와 다른 환경에서는 ILFORD 시간·온도 보정표를 바탕으로 참고 시간을 계산합니다.
  • 문제 확인 안내: 망상 현상(Reticulation), 색 편향 등 눈으로 확인할 수 있는 결과를 기준으로 가능한 원인과 점검 항목을 보여줍니다.

디자인 철학 및 방향성

  • 장갑을 고려한 조작: 젖은 고무장갑을 착용한 상태에서도 누르기 쉽도록 주요 버튼의 크기와 간격을 넓혔습니다.
  • 낮은 조도의 시인성: 어두운 배경과 밝은 상태색을 사용해 안전등 아래에서도 타이머 단계와 남은 시간을 구분합니다.
  • 기기 내 기록: 데이터는 현재 브라우저에 저장됩니다. 브라우저 데이터 삭제나 기기 변경 시 사라질 수 있으므로 중요한 기록은 별도로 보관해야 합니다.

기술 스택 (Tech Stack)

  • Frontend & UI: React 18 (SPA), Vite, TypeScript, TailwindCSS v4, Lucide React
  • Data & Storage: IndexedDB (Dexie.js), HTML5 Canvas API (Resizing & WebP Compression), UUID
  • Web API: navigator.vibrate(), navigator.share(), Screen WakeLock API
English

Offline Film Development Assistant PWA

This offline-capable Progressive Web App combines multi-step timers, agitation alerts, temperature reference calculations, and local recipe records for darkroom work. It does not require a cloud account.

Large controls and high-contrast states support use in low light and with wet gloves. Compatible browsers can provide vibration alerts and keep the screen awake. IndexedDB stores records on the current device, while the Canvas API compresses attached scans as WebP.

Launch Application

웹 브라우저에서 바로 PWA를 실행할 수 있습니다.

Open Web App →