Android Jetpack
위젯, 생체 인증, Health Connect 등 안드로이드 네이티브 기능을 연동하기 위해 사용했습니다.
약 4년간 직접 사용하며 개선해 온 개인 일기 서비스.
Overview
2022년부터 현재까지 직접 사용하며 기능을 개선하고, 실제 사용 과정에서 발견한 요구사항에 맞춰 여러 차례 재설계한 일기 서비스입니다.
Motivation
2020년부터 카카오톡 나와의 채팅방에 일기를 작성했지만, 지난 기록을 찾아보거나 날짜별로 관리하기 어려웠습니다. 기록의 가독성과 접근성을 높이고 원하는 기능을 직접 추가하기 위해 일기 서비스를 개발했습니다.
Stack
위젯, 생체 인증, Health Connect 등 안드로이드 네이티브 기능을 연동하기 위해 사용했습니다.
웹과 안드로이드 WebView에서 하나의 UI를 재사용하고, 사용자 인증을 처리하기 위해 사용했습니다.
일기와 미디어 데이터를 관리하는 REST API를 구현하고 저장소별 백업 로직을 운영하기 위해 사용했습니다.
일기 데이터를 캐싱하고 Optimistic 업데이트와 Infinite Scroll을 구현하기 위해 사용했습니다.
날짜별 일기 내용과 관련 데이터를 영속적으로 저장하기 위해 사용했습니다.
Key Features
Architecture
Result
2022년부터 현재까지 실제 일기 기록에 사용하며, 장기간 운영 과정에서 생긴 요구사항을 반영해 웹·안드로이드·백엔드 구조와 기능을 지속적으로 개선했습니다.
Troubleshooting
Next.js 화면을 WebView로 제공하고 JavaScript Interface와 기능별 provider를 구현해 웹 코드와 안드로이드 네이티브 기능을 연결했습니다.
Android Keystore에서 생성한 키로 일기 암호화 키를 보호하고, 생체 인증이나 기기 잠금 인증에 성공한 경우에만 복호화하도록 구현했습니다.
업로드 전에 브라우저에서 사진을 압축하고, 업로드 진행률과 실패 시 재시도 기능을 제공하도록 구현했습니다.
React Query의 Optimistic 업데이트로 작성 내용을 즉시 캐시에 반영하고, 요청 실패 시 기존 데이터로 롤백하도록 구현했습니다.