하루냥은 "하루를 위로해주는 모바일 속 작은 내 친구" 콘셉트의 AI 기반 감정 일기 앱입니다. 사용자가 그날의 날씨/감정/일기 작성하면, 하루냥은 기록 내용에 맞춰 공감과 위로의 편지를 전해 감정 기록을 지속하게 만드는 경험을 제공합니다.
프로젝트 기간
기여도
프론트42%
사용 기술
TypeScript
React
Sass
Zustand
React Query
상세 내용
프로젝트 개요
하루냥은 AI 기반 감정 일기 앱으로, 사용자가 감정과 일기를 작성하면 AI가 공감 편지를 제공하는 서비스입니다. Frontend Developer로 참여해 Flutter 앱의 주요 화면을 WebView 기반 React 서비스로 전환하고, 현재는 앱인토스 배포를 위해 React + Vite + React Query로 서비스를 개발하고 있습니다.
온보딩부터 일기 작성, AI 편지 응답까지 주요 사용자 플로우를 설계하고 구현했습니다.
앱인토스 하루냥 구현 테스트 화면 입니다.
주요 역할 및 기여
핵심 사용자 플로우 구현
앱의 온보딩부터 일기 작성, AI 편지 응답까지 전체 플로우를 구현했습니다.
온보딩 플로우: 닉네임 → 생일 → 직업 → 완료의 4단계 회원가입 프로세스를 useFunnel로 구현, 진행률 표시 및 단계별 데이터 보존 처리
일기 작성 플로우: 날씨 선택 → 감정 선택 → 일기 작성의 3단계 입력 과정을 BottomSheet + IconTabBar 조합으로 구현
3초 간격 자동 저장: setInterval로 주기적 저장 + AppStorage 활용해 작성 중 데이터 유실 방지
AI 편지 응답 화면: 감정별 캐릭터·배경색 동적 생성, 편지 이미지 저장 및 북마크 기능 구현
디자인 시스템 기반 UI 컴포넌트 구축
앱 전반의 UI 일관성과 개발 효율을 위해 디자인 시스템을 구축하고 핵심 컴포넌트를 제작했습니다.
Button: variant/size/fluid 등 확장 가능한 props로 재사용성 확보
BottomSheet: ResizeObserver 기반 동적 높이 계산 + 애니메이션 처리로 네이티브에 가까운 UX 구현
WheelSelector: PointerEvent 기반 드래그 + 스냅 정렬로 터치/마우스 멀티 디바이스 지원
ImageEditor: 크롭 + Canvas 기반 압축으로 원본 비율 유지 및 업로드 최적화
Portal 레이어 시스템: 모달/바텀시트 DOM 분리로 z-index 이슈 해소
useFunnel 기반 다단계 폼 시스템 구현
온보딩/일기 작성 등 다단계 프로세스를 관리하기 위해 커스텀 훅을 설계했습니다.
URL 쿼리 기반 단계 관리로 뒤로/앞으로가기 자연스럽게 지원
LocalStorage 상태 유지로 새로고침/재진입 시 입력 데이터 복원
TypeScript 제네릭으로 단계/상태 타입을 추론해 타입 안정성 확보
선언적 API로 단계 UI를 명확하게 분리
WebView 환경 최적화
React 서비스가 React Native WebView에서 동작하는 환경에 맞춰 UX를 보완했습니다.
BottomSheet 활성화 시 document.body 스크롤 잠금
CSS transition + onTransitionEnd로 부드러운 전환 처리
다양한 디바이스 대응을 위한 fluid 레이아웃 적용
기술적 도전 및 성과
1. 다단계 폼에서 데이터 유실 문제 해결 (useFunnel)
문제 상황
온보딩, 일기 작성 등 다단계 폼에서 사용자가 뒤로가기를 누르거나 새로고침 시 입력 데이터가 사라지는 문제가 있었습니다. 특히 일기 작성 중 실수로 브라우저를 닫으면 모든 내용이 날아가 사용자 경험이 크게 저하되었습니다.