-
[개인 프로젝트] 맛집 애플리케이션프로젝트 2024. 5. 8. 19:59
📌 React를 사용하여 제작을 한 사이트입니다.
UseEffect와 UseMemo 같은 hooks를 통한 상태 관리로 코드의 흐름이 명확해 가독성이 좋았고, 에러가 났을 때에 코드의 관리가 수월했습니다.
📌 지도 페이지의 렌더링의 경우 가져오는 식당 데이터의 변경이 없기 때문에 매번 서버에 요청을 하여 가져오기 보단 SSG 방식을 사용하여 응답 속도가 약 400ms에서 4ms 정도로 줄였습니다. 반면에 수정이 가능한 맛집 목록의 경우 동적 데이터가 들어가므로 SSR 방식으로 렌더링을 하였습니다.
📌 React-hook-form을 사용하였습니다.
폼 유효성 검사 및 에러 처리를 useForm을 통해서 할 수 있었습니다.
비제어 컴포넌트 방식으로, 변경된 폼 필드만 렌더링하여 사용자 입력 폼이 많은 맛집 등록의 경우 리렌더링으로 인한 불필요한 연산을 피했습니다.
📌 TailwindCSS로 스타일링을 주어 전체적인 스타일링 수정과 추가가 용이하게 하였습니다.
📌 Next-auth, Prisma를 연동한 사용자 인증, Prisma, Supabase를 이용한 데이터베이스를 사용하였습니다.
더보기📋 Background
2024년 2월 진행한 개인 프로젝트입니다. 타지에서 서울로 온 친구와 함께 식당을 다니며 여행을 하는 도중 만들어보면 좋겠다 싶어서 제작하였습니다. 서울시에서 제공하는 식당 API를 사용하여 카테고리 별 분류 및 검색이 가능하고, 선호하는 맛집을 등록할 수도 있습니다.
📋 의미
프론트엔드 개발자이지만, 백엔드가 수행하는 임무도 하며 배경지식을 쌓을 수 있는 경험이었습니다. 사용자인증, 데이터베이스 다루기 등 기본적이지만 협업을 하려면 필수적으로 이해하고 있어야 하는 부문이므로 직접 역할을 수행한다는 점에 있어서 뜻깊은 경험이었습니다.
📌 주요 기능 외부 API (카카오 지도) 사용, 검색 기능 구현, 사용자 리뷰 및 평점, 데이터 정렬과 필터링, geolocation API를 이용한 위치 정보 가져오기 📌 Github https://github.com/ 📌 Frontend React, Redux, TypeScript, Styled Component 📌 Backend NestJS, MySQL, AWS, 📌 Database Prisma, Supabase 📌 Deployment Vercel 📌 기능 설명
1. 메인 페이지(맛집 지도) 카카오 지도에 맛집 목록을 아이콘 형식으로 나열
Kakao Map API로 지도 위에 맛집 마커 표시2. 맛집 목록 페이지 맛집을 클릭하여 상세 정보를 확인
필터링, 정렬 기능(목록, 필터링)3. 프로필 페이지(마이페이지) 개인 정보 & 작성 리뷰 보여주기 4. 맛집 상세 페이지 특정 맛집 정보 보여주기(주소, 연락처, 지도, 메뉴, 리뷰 등) 5. 찜한 가게 리스트 맛집 찜하기 기능을 통해, 저장한 맛집만 모아서 리스트로 보여주기. '프로젝트' 카테고리의 다른 글
UseEffect의 dependency(의존성) 관리 (0) 2024.05.08 [팀 프로젝트] 호텔 예약 서비스 PLUSPLUS (0) 2023.12.13 [JavaScript] 페이지 이동간 권한 체크는 언제? (0) 2023.12.11 여러 가지 데이터를 전송할 땐? 쿼리 파라미터 DTO 써보기. (1) 2023.12.08 프로젝트 시작하기에 앞서 협업 준비 (0) 2022.05.23