어떤 향수가 본인의 이미지 맞을지 모르시겠나요?
추구하고자 하는 이미지를 선택하여 설문을 제출하면 그에 맞는 향수를 추천해드립니다!
- 2024.03. ~ 2024.04 (6주)
- 향수를 사용하는 누구나 본인이 좋아하는 향의 향수를 찾습니다. 세상에는 수 십만 가지의 향수가 존재하지만 유명 브랜드의 향수정도만 알고 있는게 현실입니다. 사용자가 좋아할만한 향으로 이루어진 향수 추천 목록을 제시하는 서비스 Ban:chic 입니다.
-
팀 Blo9는 빅데이터와 AI 기술을 활용하여 사용자 맞춤형 추천 시스템을 개발하고자 했습니다. 향수 시장은 다양한 브랜드와 향이 존재하지만, 대부분의 소비자들은 유명 브랜드의 일부 향수만 알고 있는 경우가 많습니다. 이로 인해 자신에게 맞는 향수를 찾기 어려워하는 소비자들이 많습니다.
-
또한, 향수는 개인의 이미지와 분위기를 표현하는 중요한 도구입니다. 하지만 각 개인이 선호하는 향을 정확히 파악하고, 그에 맞는 향수를 찾는 것은 어려운 일입니다. 이를 해결하기 위해, Ban:Chic은 사용자들이 자신의 이미지와 스타일에 맞는 향수를 쉽게 찾을 수 있도록 돕는 서비스를 기획하게 되었습니다.
-
Ban:Chic은 빅데이터 추천 알고리즘과 AI 알고리즘을 통해 사용자 설문 결과와 개인의 선호도를 분석하여 최적의 향수를 추천합니다. 이를 통해 사용자들은 자신에게 가장 어울리는 향수를 쉽게 발견할 수 있으며, 다양한 향수를 시도해볼 수 있는 기회를 제공합니다.
-
본 프로젝트는 사용자 경험을 극대화하고, 향수 선택의 어려움을 해소하며, 개개인의 취향에 맞춘 맞춤형 추천 서비스를 제공하는 것을 목표로 합니다.
- CBF 알고리즘
- CF 알고리즘
- 이미지 학습 AI 모델
| 엄진식 | 이호진 | 구본민 | 김성재 | 김현준 | 백성욱 |
| FE, AI, INFRA | FE | FE | BE, INFRA | BE, INFRA | BE, AI, INFRA |
- 추구하고자 하는 이미지 기반 향수 추천
- 옷차림 기반 향수 추천
- 질문지 기반 향수 추천
Front
📦src
┣ 📂api
┃ ┣ 📜Api.tsx
┃ ┗ 📜Config.js
┣ 📂assets
┃ ┗ 📜react.svg
┣ 📂components
┃ ┣ 📂atoms
┃ ┃ ┣ 📂auth
┃ ┃ ┃ ┣ 📜Button.tsx
┃ ┃ ┃ ┣ 📜KakaoLoginButton.tsx
┃ ┃ ┃ ┗ 📜NaverLoginButton.tsx
┃ ┃ ┣ 📂framer
┃ ┃ ┃ ┣ 📜OpacityText.tsx
┃ ┃ ┃ ┣ 📜ParallaxTextforUse copy.tsx
┃ ┃ ┃ ┣ 📜ParallaxTextforUse.tsx
┃ ┃ ┃ ┗ 📜frameSection.tsx
┃ ┃ ┣ 📂item
┃ ┃ ┃ ┣ 📜circleItem.tsx
┃ ┃ ┃ ┣ 📜defalutBlock.tsx
┃ ┃ ┃ ┣ 📜perfumeListItem.tsx
┃ ┃ ┃ ┗ 📜reviewListItem.tsx
┃ ┃ ┣ 📂kakaomap
┃ ┃ ┃ ┣ 📜BrandLists.tsx
┃ ┃ ┃ ┣ 📜KakaoMap.styled.ts
┃ ┃ ┃ ┣ 📜KakaoMap.tsx
┃ ┃ ┃ ┣ 📜LocationBtn.tsx
┃ ┃ ┃ ┣ 📜SearchPlaces.tsx
┃ ┃ ┃ ┗ 📜mapUtils.js
┃ ┃ ┣ 📂list
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂list-item
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂menuToggle
┃ ┃ ┃ ┗ 📜menuToggle.tsx
┃ ┃ ┣ 📂modal
┃ ┃ ┃ ┗ 📜Modal.tsx
┃ ┃ ┗ 📂modalForm
┃ ┃ ┃ ┣ 📜ModalRegisterForm.tsx
┃ ┃ ┃ ┣ 📜ModalUpdateForm.tsx
┃ ┃ ┃ ┣ 📜StarDisplay.tsx
┃ ┃ ┃ ┣ 📜StarInput.tsx
┃ ┃ ┃ ┗ 📜StarRating.tsx
┃ ┣ 📂molecules
┃ ┃ ┣ 📂charts
┃ ┃ ┃ ┗ 📜radarChart.tsx
┃ ┃ ┣ 📂common
┃ ┃ ┃ ┣ 📂footer
┃ ┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┃ ┣ 📂gnb
┃ ┃ ┃ ┃ ┣ 📜GNB.styles.ts
┃ ┃ ┃ ┃ ┣ 📜index.tsx
┃ ┃ ┃ ┃ ┗ 📜sideBar.tsx
┃ ┃ ┃ ┗ 📂localnav
┃ ┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂detail
┃ ┃ ┃ ┣ 📜noteGroup.tsx
┃ ┃ ┃ ┣ 📜noteGroupwrap.tsx
┃ ┃ ┃ ┣ 📜perfume.tsx
┃ ┃ ┃ ┣ 📜tempReviewBox.tsx
┃ ┃ ┃ ┗ 📜tempReviewBoxMy.tsx
┃ ┃ ┣ 📂gptApi
┃ ┃ ┃ ┣ 📜gpt.js
┃ ┃ ┃ ┗ 📜gptWriter.tsx
┃ ┃ ┣ 📂likeButton
┃ ┃ ┃ ┣ 📜HeartIcon.tsx
┃ ┃ ┃ ┗ 📜LikeButton.tsx
┃ ┃ ┣ 📂list
┃ ┃ ┃ ┣ 📜circleItemList.tsx
┃ ┃ ┃ ┗ 📜myReviewList.tsx
┃ ┃ ┣ 📂mypage
┃ ┃ ┃ ┣ 📜persuitCard.tsx
┃ ┃ ┃ ┗ 📜profileCard.tsx
┃ ┃ ┗ 📂sidebarReal
┃ ┃ ┃ ┗ 📜sidebarReal.tsx
┃ ┗ 📂pages
┃ ┃ ┣ 📂error
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂landing
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂login
┃ ┃ ┃ ┣ 📜KakaoCallback.tsx
┃ ┃ ┃ ┣ 📜NaverCallback.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂main
┃ ┃ ┃ ┣ 📜index.tsx
┃ ┃ ┃ ┣ 📜mainLogin.tsx
┃ ┃ ┃ ┗ 📜mainSelect.tsx
┃ ┃ ┣ 📂map
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂mypage
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂perfumeDetail
┃ ┃ ┃ ┣ 📜index.tsx
┃ ┃ ┃ ┗ 📜indexcopy.tsx
┃ ┃ ┣ 📂recommend
┃ ┃ ┃ ┣ 📜CategorySearch.tsx
┃ ┃ ┃ ┣ 📜Perfume.tsx
┃ ┃ ┃ ┣ 📜RecommendList.tsx
┃ ┃ ┃ ┣ 📜a.ts
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┗ 📂survey
┃ ┃ ┃ ┣ 📜surveyImage.tsx
┃ ┃ ┃ ┣ 📜surveyLanding.tsx
┃ ┃ ┃ ┣ 📜surveyQuestion.tsx
┃ ┃ ┃ ┣ 📜surveyResult.tsx
┃ ┃ ┃ ┣ 📜surveyResultImg.tsx
┃ ┃ ┃ ┗ 📜surveyselect.tsx
┣ 📂hooks
┃ ┣ 📂auth
┃ ┃ ┣ 📜useDeleteId.tsx
┃ ┃ ┣ 📜useKakaoCallback.tsx
┃ ┃ ┣ 📜useLogout.tsx
┃ ┃ ┗ 📜useNaverCallback.tsx
┃ ┣ 📂feat
┃ ┃ ┗ 📜useScrollTop.tsx
┃ ┣ 📂heart
┃ ┃ ┣ 📜useGetHeart.tsx
┃ ┃ ┗ 📜useGetMyHeartList.tsx
┃ ┣ 📂info
┃ ┃ ┣ 📜useGetDetail.tsx
┃ ┃ ┗ 📜useGetUser.tsx
┃ ┣ 📂modal
┃ ┃ ┗ 📜useOpenModal.tsx
┃ ┣ 📂persuit
┃ ┃ ┗ 📜usePersuit.tsx
┃ ┣ 📂recommed
┃ ┃ ┣ 📜useCFRecommended.tsx
┃ ┃ ┗ 📜useRecommended.tsx
┃ ┣ 📂review
┃ ┃ ┣ 📜useGetMyReviews.tsx
┃ ┃ ┗ 📜useGetPerfumeReviews.tsx
┃ ┣ 📂survey
┃ ┃ ┗ 📜useSurvey.tsx
┃ ┗ 📂ui
┃ ┃ ┣ 📜useToggle.ts
┃ ┃ ┗ 📜useWindowWidth.ts
┣ 📂layouts
┃ ┣ 📜layouts.tsx
┃ ┣ 📜layoutsWithoutF.tsx
┃ ┗ 📜layoutsWithoutHF.tsx
┣ 📂mocks
┃ ┣ 📜handlers.js
┃ ┗ 📜worker.js
┣ 📂router
┃ ┣ 📜Router.tsx
┃ ┗ 📜Url.tsx
┣ 📂styles
┃ ┣ 📜Color.js
┃ ┣ 📜Font.js
┃ ┣ 📜GlobalStyles.js
┃ ┣ 📜Style.js
┃ ┗ 📜Theme.js
┣ 📂utils
┃ ┣ 📜ImgUrl.ts
┃ ┣ 📜LoadingSpinner.tsx
┃ ┣ 📜PursuitBeauty.tsx
┃ ┣ 📜PursuitMap.tsx
┃ ┗ 📜PursuitStyleRanges.tsx
┣ 📜Main.tsx
┗ 📜vite-env.d.ts
Back
📦src
┣ 📂main
┃ ┣ 📂java
┃ ┃ ┗ 📂com
┃ ┃ ┃ ┗ 📂ssafy
┃ ┃ ┃ ┃ ┗ 📂banchic
┃ ┃ ┃ ┃ ┃ ┣ 📂config
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dummy
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CsvDataService.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜DummyDataService.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜GenderDataService.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SeasonDataService.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜DataInitalizationRunner.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ClientConfig.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜DataSourceConfig.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RoutingDataSource.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜S3Config.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SecurityConfig.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SwaggerConfig.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜WebConfig.java
┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AuthController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CategoryController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜HeartController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PerfumeController.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜TestController.java
┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BrandReq.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜GenderReq.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PersuitReq.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ReviewReq.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SeasonReq.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdateNicknameReq.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂perfume
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜GenderRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LongevityRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PerfumeRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PriceRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SeasonRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SillageRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BrandRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommonResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜GenderRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberInfoRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberNicknameRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberReviewRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PerfumeOverviewRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RecommRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RecommendByImageRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ReviewRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SeasonRes.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜TokenDto.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂perfume
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂gender
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Female.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Male.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MoreFemale.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MoreMale.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Unisex.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂season
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Day.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Fall.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Night.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Spring.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Summer.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Winter.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Gender.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Likeability.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Longevity.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Price.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Season.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Sillage.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BaseEntity.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Heart.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Member.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Perfume.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Persuit.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Recommend.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RefreshToken.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Review.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂type
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberType.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜OAuthProvider.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserDetailsImpl.java
┃ ┃ ┃ ┃ ┃ ┣ 📂exception
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AccessDeniedHandlerException.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AuthenticationEntryPointException.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CustomException.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ErrorCode.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ExceptionController.java
┃ ┃ ┃ ┃ ┃ ┣ 📂oauthApi
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂client
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KakaoApiClient.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜NaverApiClient.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OAuthApiClient.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RevokeTokenResponseDto.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂params
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜NaverLogoutParams.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OAuthLogoutParams.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜OauthTokenParams.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KakaoInfoResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜NaverInfoResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OAuthInfoResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RequestOAuthInfoService.java
┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂category
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂gender
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FemaleRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MaleRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MoreFemaleRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MoreMaleRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UnisexRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂season
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜DayRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FallRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜NightRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SpringRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SummerRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜WinterRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂perfume
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜GenderRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LikeabilityRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LongevityRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PriceRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SeasonRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SillageRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜HeartRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PerfumeRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PerfumeReviewRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PersuitRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RecommendRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RefreshTokenRepository.java
┃ ┃ ┃ ┃ ┃ ┣ 📂security
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜JwtFilter.java
┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AmazonS3ResourceStorage.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CategoryService.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FileUploadService.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜HeartService.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberService.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OAuthLoginService.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OAuthLogoutService.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PerfumeReviewService.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PerfumeService.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserDetailsServiceImpl.java
┃ ┃ ┃ ┃ ┃ ┣ 📂tokens
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AuthTokens.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KakaoTokens.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜NaverTokens.java
┃ ┃ ┃ ┃ ┃ ┣ 📂util
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜TokenProvider.java
┃ ┃ ┃ ┃ ┃ ┗ 📜BanchicApplication.java
┃ ┗ 📂resources
┃ ┃ ┣ 📂templates
┃ ┃ ┃ ┣ 📜loginForm.html
┃ ┃ ┃ ┗ 📜loginSuccess.html
┃ ┃ ┣ 📜application-prod.yml
┃ ┃ ┗ 📜application.yml
┗ 📂test
┃ ┗ 📂java
┃ ┃ ┗ 📂com
┃ ┃ ┃ ┗ 📂ssafy
┃ ┃ ┃ ┃ ┗ 📂banchic
┃ ┃ ┃ ┃ ┃ ┗ 📜BanchicApplicationTests.java