사용자의 설문조사를 바탕으로 사용자의 취향별 여행지를 추천해주고 다른 여행자들과 소통할 수 있는 웹 어플리케이션
메인페이지에서 동그란 비행기 클릭시 로그인 할 수 있다.
여행하자(Let's Travel)은 로그인 후 이용이 가능하다.
로그인과 회원가입을 선택 할 수 있다.
로그인과 회원가입 페이지
로그인 시 네비게이션바에 로그아웃이 생긴다.
설문조사 페이지에서는 원하는 요소를 하나 선택하고 다음페이지로 넘어갈 수 있다.
다시하기를 클릭하면 설문조사를 다시 할 수 있고 결과보러가기를 클릭하면 결과를 볼 수 있다.
결과 페이지에선 설문조사 결과에 지도 사진을 확인할 수 있다.
사진을 클릭할 시 유튜브 영상을 볼 수 있다.
댓글 페이지에서는 나라별 댓글을 확인할 수 있고, 댓글의 수정과 삭제를 할 수 있다.
Firebase Authentication
을 통해 구글 소셜로그인을 구현하였음
Youtube Data API
를 사용하여 도시의 이미지 클릭시 도시와 관련된 유튜브 영상을 sweetalert2
를 통해 띄움
react query를 활용하여 firebase 통신 부분을 리팩토링하였음
유튜브 API를 사용하던 중 할당량에 문제가 있었다.
하루에 제한된 할당량은 10,000이다. 그런데 검색 API 한번 사용시 100 이라는 할당량이 사용되었고, 이는 100번만 검색하여도 할당량이 초과된다.
그래서 재생목록을 만들어 재생목록을 불러오는 API를 사용하였다.
재생목록을 불러오는 API는 할당량이 1 밖에 되지 않는다.
React query 사용시 refetch
를 해야하는 부분이 있었는데, invalidateQueries
를 한번만 호출하여 refetching
이 안되는 문제점이 있었다. 각각 onSuccess
에 invalidateQueries
를 달아주었다.
const deleteMutate = useMutation({
mutationKey: ['comments'],
mutationFn: deleteData,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['comments'] });
},
});
const updateMutate = useMutation({
mutationFn: updateData,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['comments'] });
},
});
const addMutate = useMutation({
mutationFn: addData,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['comments'] });
},
});