Mobile_반하다

Written on September 3, 2020

DFIT Title

Period 2020년 7월 15일 ~ 8월 27일
Team 개발자 2명, 기획자 1명, 디자이너 1명
Platform iOS & android 모바일 어플리케이션
Role React Native와 Node.js 사용, 풀스택 개발
- TypeScript 사용
- 상태관리를 위한 Redux (Redux-toolkit) 적용
- 일기 작성, 수정, 삭제 관련 CRUD 구현
- Scrollable 캘린더 및 포스팅 순서 변경 구현
- 사진 갤러리 및 Date Picker 커스텀화
- 환경 별 환경 변수 설정 및 Code-Push 활용 배포
- Express.js 프레임워크 활용 서버 구축
- Multer, MulterS3를 활용하여 이미지 업로드 구현
- 관계형 DB, MySQL 사용 DB 구축
- 제플린을 이용한 디자이너와 협업
Tech Stack


Overview

반려동물과의 소중한 하루를 기억할 수 있는 반려동물 하루 다이어리, 반하다.
밖에 있는 시간이 많기 때문에 반려동물을 키우지는 못하지만 반려동물 영상을 꼬박 챙겨보는 나에게 이번 프로젝트는 힐링이었다.🤗
초반에는 반려동물 한 마리에 대한 일기를 작성할 수 있도록 구성했지만, 실제 반려동물을 키우는 사람들의 의견을 반영하여 한 마리 뿐만 아니라 여러마리 반려동물의 일기를 자유롭게 작성할 수 있도록 했다.
앞으로 추가하고 싶은 기능이 무궁무진한 반려동물 하루 다이어리! 많은 분들이 반려동물과의 소중한 시간을 [반하다]와 함께 추억하길🙏🏻

Key Features

Image Picker 및 Date Picker 커스텀화

귀여운 앱의 톤을 유지하기 위해 이미지 피커와 데이트 피커를 커스텀화 하였다. 라이브러리를 수정하기도 하며 시행착오도 많았지만 뿌듯 뿌듯! 하지만 아직 최적화 하고 싶은 부분이 있어 계속 손 볼 예정이다.

dfit-demo-gif dfit-demo-gif

커서(Selection) 위치에 따라 키보드에 가려지지 않도록 Scroll

일기 작성/수정 화면에서 이미지 크기로 인해 텍스트 작성 화면이 좁게 느껴지지 않도록 하기 위해 텍스트 필드가 포커스 되면 텍스트 필드가 top으로 스크롤 되게 하였으며, 또한 커서(selection) 위치에 따라 키보드에 가려지지 않도록 자동으로 스크롤 되도록 구현했다. selection 위치에 따라 자동 스크롤 되는 부분은 ios만 가능하며, 안드로이드는 아직 노력 중이다 😥

dfit-demo-gif dfit-demo-gif

드래그로 일기 순서 이동 구현

하루에 일기를 여러개를 쓸 수 있도록 해 놓았기 때문에 일기 순서를 사용자가 수정할 수 있도록 하고 싶었다. 일기 쓴 시간을 포스팅 마다 설정하게 할지, 드래그로 순서를 변경하게 할 것인지 고민 끝에 드래그 방법으로 사용자가 더욱 간단하게 접근할 수 있도록 했다.
이 때, db를 최소한으로 수정하기 위해 일기마다 소수점을 가지는 order 값을 부여하고, 순서를 이동한 일기의 order 값만 뒤에 위치한 일기의 order 값과 0.001씩 차이나게 하여 정렬하는 방법을 사용했다.

dfit-demo-gif

스크롤 페이징을 통한 무한 스크롤 구현

일기 리스트 스크린에서는 전체 일기를 최신순으로 볼 수 있기 해야하기 부하를 줄여주기 위해서 페이징 처리를 하고, 이를 무한 스크롤로 로딩할 수 있도록 했다. 또한, 헤더의 일기장 이름을 터치하면 리스트의 Top으로 이동할 수 있도록 하여 사용성을 향상시켰다.

dfit-demo-gif dfit-demo-gif

월간/연간 달력 구현

일기 리스트 페이지에서는 특정 날짜의 일기로의 접근이 쉽지 않기 때문에 캘린더 화면을 만들었다. 월별 캘린더는 위아래 스크롤로 이동할 수 있으며, 연도 이동도 할 수 있도록 했다. 최적화 시키느라 애를 먹긴 했는데 여러가지 방법을 시도하면서 RN의 FlatList에 대해 더 알수있게 되었다. 이걸 해놓고 보니.. 디핏의 캘린더도 수정하고 싶어졌.. 🤦‍♀️

dfit-demo-gif dfit-demo-gif

👩🏻‍💻 배우는 것을 즐기는 프론트엔드 개발자 입니다
부족한 블로그에 방문해 주셔서 감사합니다 🙇🏻‍♀️

in the process of becoming the best version of myself