- Published On
Travel Point - 기획부터 개발까지 2
개발 단계의 회고록
어려웠던 점
React-query 도입 및 환경 세팅
백엔드와 소통하며, API를 연결하고 환경 세팅하는 과정에서 어려움이 있었습니다.
특히, 폴더 구조를 일관되게 변경하고 데이터 fetch 및 caching 관리를 설정하는 데 시간이 걸렸습니다.
다양한 UI 구현
동일한 디자인의 UI만 보여주면 사용자의 집중도가 떨어질 수 있어서 다양한 UI를 구현하려고 했습니다.
이를 위해 여러 사이트를 참고하며 다른 색상, 다른 위치, 캐로셀 방식 등을 다양하게 적용하는 과정에서 많은 시도와 실패를 겪었습니다.
TailwindCSS 설정 및 반응형 디자인
디자인의 일관성과 반응형을 유지하기 위해 TailwindCSS 설정을 많이 변경해야 했습니다.
공식 문서를 참고하여 다양한 pseudo class를 적용하는 데 어려움이 있었습니다.
이미지 최적화
프로젝트에서 이미지가 중요한 요소이기 때문에 이미지 최적화에 많은 시간을 투자해야 했습니다.
다양한 디바이스 크기와 사이즈, priority, quality 설정을 통해 네트워크 레이턴시를 최적화하는 과정에서 많은 시행착오가 있었습니다.
페이지네이션 구현
스크롤의 피로감을 줄이기 위해 infinite scroll 대신 페이지네이션을 직접 구현하였습니다.
필터와 개수(파라미터)에 맞춘 페이지네이션 구현이 까다로웠습니다.
3D UI 구현
여행지 부루마블 게임을 제작하기 위해 주사위 UI를 3D처럼 구현하는 데 어려움이 있었습니다.
먼저 three.js로 주사위를 구현해 보았지만, 로딩 문제와 주사위만 3D로 구현하면 어색해지기 때문에 css를 사용하여 preserve-3d와 keyframe-spin 등을 이용하여 3D 효과를 구현하는 과정에서 많은 실험이 필요하였지만 구현에 성공했습니다.
로딩 및 에러 처리
데이터 fetch의 로딩과 이미지 렌더링 UI의 로딩을 2단계에 걸쳐서 구현하는 데 어려움이 있었습니다.
또한, 에러 이미지를 따로 구현하는 과정도 까다로웠습니다.
회원가입/ 로그인 기능 구현
Oauth(네이버, 구글)와 이메일 회원가입 및 로그인 기능을 병렬 라우팅과 인터셉팅 라우트를 활용하여 모달 창으로 구현하는 과정에서 인터셉팅 라우팅은 캐시를 지우지 않으면 인터셉팅이 안되는 버그가 있었습니다.
Lighthouse 최적화
성능, 접근성, 권장사항 및 SEO 최적화를 진행하는 데 있어 세부적인 최적화 작업이 필요했습니다.
외부 API 활용
KakaoMap API와 Naver Search API를 활용하여 여행지 지도와 블로그 결과 UI를 구현하는 과정에서 API 사용법을 익히고 적용하는 데 어려움이 있었습니다.
LocalStorage 기능 구현
최근 본 여행지 목록을 저장하고 표시하기 위해 localStorage를 활용하는 과정에서 데이터 관리와 최적화 문제를 해결해야 했습니다.
마이페이지 기능 구현
프로필 사진 및 캐릭터 변경, 내가 "찜"한 여행지, 내가 쓴 리뷰, 최근 본 여행지 확인, 회원 탈퇴 및 로그아웃 기능을 구현하는 과정에서 사용자 데이터 관리와 UI/UX 최적화를 동시에 고려해야 했습니다.
배운 점
문서 활용의 중요성
React-query와 TailwindCSS 등 새로운 도구를 도입하는 과정에서 공식 문서를 참조하는 것이 매우 중요하다는 것을 배웠습니다. 이를 통해 폴더 구조와 데이터 관리 방식을 효율적으로 개선할 수 있었습니다.
다양한 UI 구현
다양한 디자인 시도를 통해 사용자의 집중도를 높이는 방법을 배웠습니다. 색상, 위치, 애니메이션 등 UI 요소를 다양하게 활용하는 것이 중요하다는 것을 깨달았습니다.
반응형 디자인의 중요성
TailwindCSS 설정을 통해 반응형 디자인을 구현하는 과정에서 일관성과 유연성의 중요성을 배웠습니다. 이를 통해 다양한 디바이스에서 최적의 사용자 경험을 제공할 수 있었습니다.
이미지 최적화
이미지 최적화를 통해 성능 향상의 중요성을 배웠습니다. 다양한 설정을 통해 네트워크 레이턴시를 줄이고 사용자 경험을 개선할 수 있었습니다.
효율적인 데이터 로딩
페이지네이션을 통해 스크롤 피로감을 줄이는 방법을 배웠습니다. 이를 통해 사용자 경험을 개선하고 효율적인 데이터 로딩 방식을 구현할 수 있었습니다.
3D UI 구현의 가능성
three.js 없이도 CSS만으로 3D 효과를 구현할 수 있다는 것을 배웠습니다. 이를 통해 더 다양한 UI 요소를 구현할 수 있는 가능성을 깨달았습니다.
로딩 및 에러 처리
로딩과 에러 처리를 단계적으로 구현함으로써 사용자에게 더 나은 경험을 제공할 수 있다는 것을 배웠습니다.
회원가입/ 로그인 기능 구현
다양한 회원가입 및 로그인 방식을 구현함으로써 사용자의 편의성을 높일 수 있음을 배웠습니다.
성능 최적화
Lighthouse를 통해 성능, 접근성, 권장사항 및 SEO를 최적화하는 방법을 배웠습니다. 이를 통해 웹사이트의 전반적인 품질을 향상시킬 수 있었습니다.
외부 API 활용
KakaoMap API와 Naver Search API를 통해 외부 데이터를 효과적으로 활용하는 방법을 배웠습니다.
LocalStorage 활용
최근 본 여행지 목록을 저장하고 표시하는 과정에서 localStorage를 효율적으로 활용하는 방법을 배웠습니다.
사용자 데이터 관리
마이페이지 기능을 구현하면서 사용자 데이터를 관리하고 UI/UX를 최적화하는 방법을 배웠습니다. 이를 통해 더 나은 사용자 경험을 제공할 수 있었습니다.
다음 포스트
React Native란?연관된 포스트 구경가기
간략히