프론트엔드 개발 포트폴리오 | 여행 스케쥴링 플래너 사이트
내일배움캠프 4기 웹 개발 과정 React 트랙 수료생 최종 프로젝트 ‘Sharpa’를 소개합니다.
Sep 04, 2023
당신의 여행 플래너 서포팅 사이트!
여행지 추천 및 정보 제공 , 여행에 필요한 일정 플래너 기능을 제공합니다.
아키텍쳐

핵심 기능
기술적 의사결정
내용
Recoil , react-query를 사용한 이유
Redux의 보일러플레이트 문제
기존 리덕스에서 상태관리를 하려면 기본적인 client단 상태관리 로직인데도 아래처럼 초기세팅을 해줘야 할게 많습니다. 전역state가 추가 될 때 마다 store에 reducer도 넣어줘야 되고

또 서버와의 통신을 하기위해서는 reateAsyncThunk를 써야하는데 로직이 createAsyncThunk, extraReducers 등을 통해 일일히 초기 세팅을 해줘야 해서 불편한 감이 있었습니다.
.png%253FspaceId%253D83c75a39-3aba-4ba4-a792-7aefe4b07895%3Ftable%3Dblock%26id%3D1d83c6eb-1ba5-45fd-b345-eb10829017cf%26cache%3Dv2&w=1920&q=75)
.png%253FspaceId%253D83c75a39-3aba-4ba4-a792-7aefe4b07895%3Ftable%3Dblock%26id%3D165520a0-eefc-42aa-9a62-cbd08669596f%26cache%3Dv2&w=1920&q=75)
이런 불편함을 해소하기 위해서 Recoil 과 React-query를 도입하였습니다. 초기설정도 간단하고 보기에도 코드가 직관적이라서 더 좋은것 같습니다.
Recoil
.png%253FspaceId%253D83c75a39-3aba-4ba4-a792-7aefe4b07895%3Ftable%3Dblock%26id%3D8efc276b-f0ab-4b61-ae2e-2cbc7c676c8f%26cache%3Dv2&w=1920&q=75)
React-query
.png%253FspaceId%253D83c75a39-3aba-4ba4-a792-7aefe4b07895%3Ftable%3Dblock%26id%3Da503c10f-4164-4691-bc22-a62599b0c60f%26cache%3Dv2&w=1920&q=75)
CRA(Create-React-App) 명령어 없이 Webpack을 초기 설정 후 프로젝트 진행
기본적으로 CRA는 webpack과 babel등이 다 세팅 된 상태인데 하나하나 세팅한 이유는 번들러 동작원리에 대해서도 궁금했고, 리액트 프로젝트가 어떻게 만들어지는지 궁금해서 CRA 없이 프로젝트를 진행 했습니다.
webpack.config.js 파일을 생성 후 초기세팅 해준 코드입니다.
초기설정을 할때 파일을 읽어오는 시작점을 entry 속성으로 설정할 수 있고, .js파일로 진입점을 사용하면 됩니다. 반대로 번들 된 결과물도 설정 할 수 있으며 반환된 파일들은 dist 폴더로 이동하게 됩니다.
그외에 패키지들을 추가할 때에는 require명령어로 추가해준 후 변수를 사용합니다.
.png%253FspaceId%253D83c75a39-3aba-4ba4-a792-7aefe4b07895%3Ftable%3Dblock%26id%3Daa5b7340-a0ff-486f-82eb-423fbbc2d98d%26cache%3Dv2&w=1920&q=75)
그리고 경로별칭을 지정해 줄수있습니다. 저희는 src로 바로 접근하기 위해서 골뱅이로 접근할수 있게 설정을 하였습니다.
그외에 babel로더를 사용하기 위해 module에 규칙을 추가 하였고, ts loader, css-loader 등 사용하고 싶은 파일을 정규식으로 지정 후 설정해 주었습니다.
.png%253FspaceId%253D83c75a39-3aba-4ba4-a792-7aefe4b07895%3Ftable%3Dblock%26id%3De95961ac-3737-4bfb-922e-578c6a9c3b88%26cache%3Dv2&w=1920&q=75)
그리고 환경변수 세팅을 해주기 위해서는 cra와 다르게 dotenv를 설치해 줘야하고 전역에 변수선언 한 dotenv 변수를
new webpack.DefinePlugin({ 에 할당해 줘야 합니다.트러블 슈팅
코드 스플리팅
무한 스크롤
제작자들
포지션 | 이름 | 담당
※ 담당 페이지 및 주요 기능만 기재함 | E-Mail | gitHub | Blog |
프론트엔드 | 지회수 | - 헤더/푸터 : 검색 기능
- 랜딩 페이지
- 메인 페이지 : 슬라이드 배너, 리뷰량에 따른 인기도시 조회
- 도시 상세페이지 : 도시별 날씨 조회
- 스크롤 탑 버튼 | newasborn@gmail.com | ||
프론트엔드 | 한상권 | - 지도 페이지 : 도시 마커 표시, 도시 데이터 조회
- 도시 상세페이지 : 도시 정보 조회, 도시 명소 조회
- 관광지 상세페이지 : 도시 및 카테고리별 관광지 조회, 리뷰 작성/수정/삭제 및 조회
- 마이 페이지 : 프로필 등록/수정/삭제, 나의 일정 조회, 내가 쓴 리뷰 조회
- 로그인/회원가입 페이지 : 일반/SNS 로그인, 회원가입
| hss3522@gmail.com | ||
프론트엔드 | 김우상 | - 일정 페이지 : 캘린더, 일정 작성/수정/삭제, 검색 기능, 일정 담기, 지도맵 일정별 장소 표시 | freesian12@gmail.com | https://github.com/Freesian12 | |
디자인 | 박수정 | - 웹 사이트 UI/UX 디자인 전반
- 이미지 소스 제작 : 테마 배너 | soojung6969@gmail.com | - | - |
Share article
















