Skip to content

Latest commit

 

History

History
847 lines (792 loc) · 41.8 KB

README.md

File metadata and controls

847 lines (792 loc) · 41.8 KB

BookWave

수많은 책들 사이에서 어떤 책을 읽어야할 지 감이 잡히지 않을 때,

베스트 셀러 추천이 아닌 색다른 기준으로 추천 받고 싶을 때,

다양하게 느끼는 감정들을 기록하고 공유하고 싶을 때,

저희는 이와 같은 상황을 위해 “북웨이브” 서비스를 고안했습니다.


👪 개발 멤버 소개



👑 신준호
(BackEnd)
(Infra)



😆 최제혁
(BackEnd)



😶 박소현
(FullStack)



🙄 류민지
(BackEnd)
(Infra)



😁 원재현
(FrontEnd)



🙂 이은성
(FrontEnd)


📆 프로젝트 기간

23.08.21. ~ 23.10.06


🗂️ 프로젝트 구성

FE 폴더 구조
.
├── App.tsx
├── apis
│   ├── Book
│   │   └── book.ts
│   ├── Feed
│   │   ├── bbti.ts
│   │   ├── bookList.ts
│   │   ├── recode.ts
│   │   └── userInfo.ts
│   ├── Reminder
│   │   └── diary.ts
│   ├── auth.ts
│   ├── bbti.ts
│   ├── book.ts
│   ├── index.ts
│   ├── member.ts
│   ├── memorize.ts
│   └── recommend.ts
├── assets
│   ├── Images
│   │   ├── Feed
│   │   │   ├── Reminder_1.png
│   │   │   ├── Reminder_2.png
│   │   │   ├── Reminder_3.png
│   │   │   └── Reminder_4.png
│   │   ├── TempImage.jpg
│   │   ├── bbtibook.png
│   │   ├── bookshelf.jpg
│   │   ├── community1.jpg
│   │   ├── community2.jpg
│   │   ├── feed.jpg
│   │   ├── feed_2.jpg
│   │   ├── guestrecommendlg.jpg
│   │   ├── guestrecommendmd.jpg
│   │   ├── hamzzi.png
│   │   ├── hamzzi2.jpg
│   │   ├── logo.png
│   │   ├── profile2.png
│   │   ├── recommend.jpg
│   │   ├── recommend3.png
│   │   ├── record.jpg
│   │   ├── 민지.JPG
│   │   ├── 재현.JPG
│   │   ├── 준호.jpeg
│   │   ├── 소현.jpg
│   │   └── 제혁.jpg
│   ├── font
│   │   ├── AppleSDGothicNeoB.ttf
│   │   ├── AppleSDGothicNeoEB.ttf
│   │   ├── AppleSDGothicNeoH.ttf
│   │   ├── AppleSDGothicNeoL.ttf
│   │   ├── AppleSDGothicNeoM.ttf
│   │   ├── AppleSDGothicNeoR.ttf
│   │   ├── AppleSDGothicNeoSB.ttf
│   │   ├── AppleSDGothicNeoT.ttf
│   │   ├── AppleSDGothicNeoUL.ttf
│   │   ├── SF-Pro-Text-Bold.otf
│   │   ├── SF-Pro-Text-Heavy.otf
│   │   ├── SUITE-Bold.ttf
│   │   ├── SUITE-Regular.ttf
│   │   ├── Yeongdeok Blueroad.ttf
│   │   └── font.css
│   ├── icons
│   │   ├── Book.png
│   │   ├── CarouselLeft.png
│   │   ├── CarouselRight.png
│   │   ├── Comment.png
│   │   ├── Drop.png
│   │   ├── FeedPlus.png
│   │   ├── FeedSearch.png
│   │   ├── Like.png
│   │   ├── LikeFull.png
│   │   ├── Remove.png
│   │   ├── Update.png
│   │   ├── Upload.png
│   │   ├── arrow-forward-circle-outline.png
│   │   ├── arrow-right-circle.png
│   │   ├── backBtn.png
│   │   ├── bookshelf-icon.png
│   │   ├── brush.png
│   │   ├── calendar.png
│   │   ├── check-mark.png
│   │   ├── check.png
│   │   ├── feed-icon.png
│   │   ├── hearto.png
│   │   ├── heartx.png
│   │   ├── history.png
│   │   ├── kakao.png
│   │   ├── kakao2.png
│   │   ├── kakao_login.png
│   │   ├── logo.png
│   │   ├── naver.png
│   │   ├── profile.png
│   │   ├── recommend-icon.png
│   │   ├── refresh-circle-outline.png
│   │   ├── right-arrow.png
│   │   ├── search-icon.png
│   │   ├── search.png
│   │   ├── star.png
│   │   ├── 경제.png
│   │   ├── 과학.png
│   │   ├── 만화.png
│   │   ├── 문학.png
│   │   ├── 여행.png
│   │   ├── 예술.png
│   │   ├── 육아.png
│   │   ├── 취미.png
│   │   ├── 역사4.png
│   │   ├── 인문학.png
│   │   ├── 컴퓨터.png
│   │   ├── 자기계발.png
│   │   └── 사회과학2.png
│   ├── react.svg
│   └── videos
│       ├── 404.mp4
│       ├── wave1.mp4
│       └── wave2.mp4
├── components
│   ├── BookDetail
│   │   ├── Chart
│   │   │   ├── Chart.styles.ts
│   │   │   └── Chart.tsx
│   │   ├── Record
│   │   │   ├── Record.styles.ts
│   │   │   └── Record.tsx
│   │   └── Reminder
│   │       ├── Reminder.styles.ts
│   │       └── Reminder.tsx
│   ├── Common
│   │   ├── Footer
│   │   │   ├── Footer.styles.ts
│   │   │   └── Footer.tsx
│   │   └── Header
│   │       ├── Header.styles.ts
│   │       └── Header.tsx
│   ├── CreateRecord
│   │   ├── BookInfo.styles.ts
│   │   ├── BookInfo.tsx
│   │   ├── Calendar.styles.ts
│   │   ├── Calendar.tsx
│   │   ├── PhotoUpload.styles.ts
│   │   ├── PhotoUpload.tsx
│   │   ├── StarPoint.styles.ts
│   │   └── StarPoint.tsx
│   ├── CreateReminder
│   │   └── Temp.tsx
│   ├── Feed
│   │   ├── BBTI.styles.ts
│   │   ├── BBTI.tsx
│   │   ├── Copyright.styles.ts
│   │   ├── Copyright.tsx
│   │   ├── Recode.styles.ts
│   │   ├── Recode.tsx
│   │   ├── Reminder.styles.ts
│   │   └── Reminder.tsx
│   ├── Guest
│   │   ├── Community
│   │   │   ├── Community.styles.ts
│   │   │   └── Community.tsx
│   │   ├── Recommend
│   │   │   ├── Recommend,styles.ts
│   │   │   └── Recommend.tsx
│   │   ├── Record
│   │   │   ├── Record.styles.ts
│   │   │   └── Record.tsx
│   │   └── Video
│   │       ├── Video.styles.ts
│   │       └── Video.tsx
│   ├── Join
│   │   ├── GenreSurvey
│   │   │   ├── GenreSurvey.styles.ts
│   │   │   └── GenreSurvey.tsx
│   │   ├── NickNameSurvey
│   │   │   ├── NickNameSurvey.styles.ts
│   │   │   └── NickNameSurvey.tsx
│   │   └── SignUpComplete
│   │       ├── SignupComplete,styles.ts
│   │       └── SignupComplete.tsx
│   ├── Profile
│   │   ├── ProfileRecord
│   │   │   ├── ProfileRecord.styles.ts
│   │   │   └── ProfileRecord.tsx
│   │   └── ProfileReminder
│   │       ├── ProfileDiary.styles.ts
│   │       └── ProfileDiary.tsx
│   ├── Recommend
│   │   ├── BBTI
│   │   │   ├── BBTI.styles.ts
│   │   │   └── BBTI.tsx
│   │   ├── Genre
│   │   │   ├── Genre.styles.ts
│   │   │   ├── Genre.tsx
│   │   │   ├── GenreSurveyModal.styles.ts
│   │   │   └── GenreSurveyModal.tsx
│   │   ├── Mood
│   │   │   ├── Mood.styles.ts
│   │   │   └── Mood.tsx
│   │   ├── Recent
│   │   │   ├── Recent.styles.ts
│   │   │   └── Recent.tsx
│   │   ├── Recommend.styles.ts
│   │   ├── SimpleSlider.tsx
│   │   └── Today
│   │       ├── Today.styles.ts
│   │       └── Today.tsx
│   ├── RecordEdit
│   │   └── Temp.tsx
│   ├── Redirect
│   │   ├── KakaoRedirect.tsx
│   │   └── NaverRedirect.tsx
│   ├── ReminderEdit
│   │   └── Temp.tsx
│   ├── Search
│   │   ├── SearchBox.styles.ts
│   │   ├── SearchBox.tsx
│   │   ├── SearchResult.styles.ts
│   │   └── SearchResult.tsx
│   ├── Shelf
│   │   ├── BookList.styles.ts
│   │   ├── BookList.tsx
│   │   ├── Header.styles.ts
│   │   └── Header.tsx
│   └── modals
│       ├── FeedBookSelectModal
│       │   ├── FeedBookSelect.styles.ts
│       │   └── FeedBookSelect.tsx
│       ├── FollowList
│       │   ├── FollowList.styles.ts
│       │   └── FollowList.tsx
│       ├── Login
│       │   ├── Login.styles.ts
│       │   └── Login.tsx
│       ├── RecordDetailModal
│       │   ├── BodyComponent.styles.ts
│       │   ├── BodyComponent.tsx
│       │   ├── BookComponent.styles.ts
│       │   ├── BookComponent.tsx
│       │   ├── CommentComponent.styles.ts
│       │   ├── CommentComponent.tsx
│       │   ├── CommentUnit.styles.ts
│       │   ├── CommentUnit.tsx
│       │   ├── HeaderComponent.styles.ts
│       │   ├── HeaderComponent.tsx
│       │   ├── RecordDetail.styles.ts
│       │   └── RecordDetail.tsx
│       ├── RecordType
│       │   ├── RecordType.styles.ts
│       │   └── RecordType.tsx
│       └── ReminderDetailModal
│           ├── BookComponent.styles.ts
│           ├── BookComponent.tsx
│           ├── HeaderComponent.styles.ts
│           ├── HeaderComponent.tsx
│           ├── ReminderDetail.styles.ts
│           └── ReminderDetail.tsx
├── config
│   └── SoialLogin.ts
├── index.tsx
├── pages
│   ├── BBTIPage
│   │   ├── BBTIPage.styles.ts
│   │   └── BBTIPage.tsx
│   ├── BBTIResult
│   │   ├── BBTIResult.styles.ts
│   │   └── BBTIResult.tsx
│   ├── BookDetailPage
│   │   ├── BookDetailPage.styles.ts
│   │   └── BookDetailPage.tsx
│   ├── BookShelfTest
│   │   ├── BookShelfTest.styles.ts
│   │   └── BookShelfTest.tsx
│   ├── CreateRecordPage
│   │   ├── CreateRecordPage.styles.ts
│   │   └── CreateRecordPage.tsx
│   ├── CreateReminderPage
│   │   ├── CreateReminderPage.styles.ts
│   │   └── CreateReminderPage.tsx
│   ├── FeedPage
│   │   ├── FeedPage.styles.ts
│   │   └── FeedPage.tsx
│   ├── GuestPage
│   │   ├── GuestPage.styles.ts
│   │   └── GuestPage.tsx
│   ├── Home
│   │   └── Home.tsx
│   ├── JoinPage
│   │   ├── JoinPage.styles.ts
│   │   └── JoinPage.tsx
│   ├── LoginPage
│   │   ├── LoginPage.styles.ts
│   │   └── LoginPage.tsx
│   ├── Memorize
│   │   ├── Memorize.ts
│   │   └── Memorize.tsx
│   ├── NotFoundPage
│   │   ├── NotFoundPage.style.ts
│   │   └── NotFoundPage.tsx
│   ├── RecommendPage
│   │   ├── RecommendPage.styles.ts
│   │   └── RecommendPage.tsx
│   ├── RecordEditPage
│   │   ├── EditPhotoUpload.styles.ts
│   │   ├── EditPhotoUpload.tsx
│   │   ├── RecordEditPage.styles.ts
│   │   └── RecordEditPage.tsx
│   ├── ReminderEditPage
│   │   ├── ReminderEditPage.styles.ts
│   │   └── ReminderEditPage.tsx
│   ├── SearchPage
│   │   ├── SearchPage.styles.ts
│   │   └── SearchPage.tsx
│   ├── ShelfPage
│   │   ├── ShelfPage.styles.ts
│   │   └── ShelfPage.tsx
│   ├── Test
│   │   ├── Test.styles.ts
│   │   └── Test.tsx
│   └── UserEditPage
│       ├── UserEditPage.styles.ts
│       └── UserEditPage.tsx
├── recoil
│   ├── atoms.ts
│   ├── auth.ts
│   ├── book.ts
│   ├── index.ts
│   ├── member.ts
│   └── search.ts
├── styles
│   └── theme.ts
├── types
│   ├── styled.d.ts
│   └── types.ts
├── utils
│   └── MediaQuery
│       ├── BBTIResultMQ.tsx
│       ├── BookDetailMQ.tsx
│       ├── MemorizeMQ.tsx
│       └── SearchMQ.tsx
└── vite-env.d.ts
BE 폴더 구조
.
├── main
│   ├── java
│   │   └── com
│   │       └── ssafy
│   │           └── bookwave
│   │               ├── BookwaveApplication.java
│   │               ├── bbti
│   │               │   ├── controller
│   │               │   │   └── BbtiController.java
│   │               │   ├── domain
│   │               │   │   ├── BbtiQuestion.java
│   │               │   │   ├── BbtiType.java
│   │               │   │   └── BbtiTypeElement.java
│   │               │   ├── dto
│   │               │   │   ├── request
│   │               │   │   │   ├── BbtiRequest.java
│   │               │   │   │   └── BbtiRequestDto.java
│   │               │   │   └── response
│   │               │   │       ├── BbtiQuestionResponseDto.java
│   │               │   │       ├── BbtiResponseDto.java
│   │               │   │       └── QuestionDetailResponseDto.java
│   │               │   ├── enums
│   │               │   │   └── Code.java
│   │               │   ├── repository
│   │               │   │   ├── BbtiQuesitonRepository.java
│   │               │   │   ├── BbtiRepository.java
│   │               │   │   └── BbtiTypeElementRepository.java
│   │               │   └── service
│   │               │       ├── BbtiService.java
│   │               │       └── BbtiServiceImpl.java
│   │               ├── book
│   │               │   ├── controller
│   │               │   │   ├── BookController.java
│   │               │   │   └── BookshelfController.java
│   │               │   ├── domain
│   │               │   │   ├── Book.java
│   │               │   │   ├── BookEmotion.java
│   │               │   │   ├── BookshelfBook.java
│   │               │   │   ├── Click.java
│   │               │   │   ├── GenreDetailDict.java
│   │               │   │   └── GenreDict.java
│   │               │   ├── dto
│   │               │   │   ├── request
│   │               │   │   │   ├── BookRequest.java
│   │               │   │   │   └── BookStateRequestDto.java
│   │               │   │   └── response
│   │               │   │       ├── BookBookshelfResponseDto.java
│   │               │   │       ├── BookByBbtiChartResponseDto.java
│   │               │   │       ├── BookDetailResponseDto.java
│   │               │   │       ├── BookEmotionResponseDto.java
│   │               │   │       ├── BookListBySearchResponseDto.java
│   │               │   │       ├── BookResponseDto.java
│   │               │   │       ├── BookSearchResponseDto.java
│   │               │   │       ├── BookshelfBookResponseDto.java
│   │               │   │       ├── BookshelfListResponseDto.java
│   │               │   │       ├── ClickResponseDto.java
│   │               │   │       ├── GenreDetailDictResponseDto.java
│   │               │   │       └── GenreDictResponseDto.java
│   │               │   ├── enums
│   │               │   │   ├── BookResponseMessage.java
│   │               │   │   ├── BookshelfResponseMessage.java
│   │               │   │   └── State.java
│   │               │   ├── repository
│   │               │   │   ├── BookEmotionRepository.java
│   │               │   │   ├── BookRepository.java
│   │               │   │   ├── BookshelfRepository.java
│   │               │   │   ├── GenreDetailDictRepository.java
│   │               │   │   └── GenreDictRepository.java
│   │               │   └── service
│   │               │       ├── BookService.java
│   │               │       ├── BookServiceImpl.java
│   │               │       ├── BookshelfService.java
│   │               │       └── BookshelfServiceImpl.java
│   │               ├── diary
│   │               │   ├── controller
│   │               │   │   └── DiaryController.java
│   │               │   ├── domain
│   │               │   │   └── Diary.java
│   │               │   ├── dto
│   │               │   │   ├── request
│   │               │   │   │   ├── DiaryDeleteRequestDto.java
│   │               │   │   │   ├── DiaryModifyRequestDto.java
│   │               │   │   │   └── DiaryRegistRequestDto.java
│   │               │   │   └── response
│   │               │   │       └── DiaryDetailResponseDto.java
│   │               │   ├── enums
│   │               │   │   ├── Color.java
│   │               │   │   └── DiaryResponseMessage.java
│   │               │   ├── repository
│   │               │   │   └── DiaryRepository.java
│   │               │   └── service
│   │               │       ├── DiaryService.java
│   │               │       └── DiaryServiceImpl.java
│   │               ├── global
│   │               │   ├── auth
│   │               │   │   ├── jwt
│   │               │   │   │   ├── JwtAuthenticationEntryPoint.java
│   │               │   │   │   ├── JwtAuthenticationFilter.java
│   │               │   │   │   ├── JwtExceptionFilter.java
│   │               │   │   │   └── JwtTokenProvider.java
│   │               │   │   └── oauth2
│   │               │   │       ├── kakao
│   │               │   │       │   ├── KakaoMemberDto.java
│   │               │   │       │   └── KakaoOAuth2.java
│   │               │   │       └── naver
│   │               │   │           ├── NaverMemberDto.java
│   │               │   │           └── NaverOAuth2.java
│   │               │   ├── config
│   │               │   │   ├── CorsConfig.java
│   │               │   │   ├── JpaConfig.java
│   │               │   │   ├── RedisConfig.java
│   │               │   │   ├── RestTemplateConfig.java
│   │               │   │   ├── SecurityConfig.java
│   │               │   │   ├── SwaggerConfig.java
│   │               │   │   ├── WebMvcConfig.java
│   │               │   │   └── WebSocketConfig.java
│   │               │   ├── domain
│   │               │   │   └── BaseTimeEntity.java
│   │               │   ├── exception
│   │               │   │   ├── CustomException.java
│   │               │   │   ├── handler
│   │               │   │   │   ├── ControllerAdvice.java
│   │               │   │   │   └── GlobalExceptionHandler.java
│   │               │   │   ├── message
│   │               │   │   │   ├── BaseErrorEnum.java
│   │               │   │   │   ├── FollowErrorEnum.java
│   │               │   │   │   └── MemberErrorEnum.java
│   │               │   │   └── validator
│   │               │   │       ├── BaseValidator.java
│   │               │   │       ├── FollowValidator.java
│   │               │   │       └── MemberValidator.java
│   │               │   └── util
│   │               │       ├── FileUploadUtil.java
│   │               │       ├── ResponseTemplate.java
│   │               │       └── property
│   │               │           ├── ApplicationProperties.java
│   │               │           ├── RedirectUrlProperties.java
│   │               │           └── RedisProperties.java
│   │               ├── member
│   │               │   ├── controller
│   │               │   │   ├── FollowController.java
│   │               │   │   ├── GenreController.java
│   │               │   │   ├── MemberController.java
│   │               │   │   └── MypageController.java
│   │               │   ├── domain
│   │               │   │   ├── Attendance.java
│   │               │   │   ├── Follow.java
│   │               │   │   ├── Member.java
│   │               │   │   ├── MemberBookScore.java
│   │               │   │   └── MemberGenre.java
│   │               │   ├── dto
│   │               │   │   ├── FileDto.java
│   │               │   │   ├── LoginDto.java
│   │               │   │   ├── TokenDto.java
│   │               │   │   ├── request
│   │               │   │   │   ├── FollowSaveRequestDto.java
│   │               │   │   │   ├── GenreRegistRequestDto.java
│   │               │   │   │   ├── LoginRequestDto.java
│   │               │   │   │   ├── MemberDeleteRequestDto.java
│   │               │   │   │   ├── MemberInfoUpdateRequestDto.java
│   │               │   │   │   ├── MemberRequestDto.java
│   │               │   │   │   ├── NicknameRequestDto.java
│   │               │   │   │   └── ShowInfoEditRequestDto.java
│   │               │   │   └── response
│   │               │   │       ├── BaseResponseDto.java
│   │               │   │       ├── DiaryFastApiResponse.java
│   │               │   │       ├── FavoriteGenreResponseDto.java
│   │               │   │       ├── FollowResponseDto.java
│   │               │   │       ├── FollowerPageResponseDto.java
│   │               │   │       ├── FollowerResponseDto.java
│   │               │   │       ├── FollowingPageResponseDto.java
│   │               │   │       ├── GenreQuestionResponseDto.java
│   │               │   │       ├── LoginResponseDto.java
│   │               │   │       ├── MemberAllInfoResponse.java
│   │               │   │       ├── MemberInfoResponseDto.java
│   │               │   │       ├── MemberResponseDto.java
│   │               │   │       ├── MemberUpdateResponseDto.java
│   │               │   │       ├── MyPageDiaryDto.java
│   │               │   │       ├── MyPageDiaryResponse.java
│   │               │   │       ├── MyPageMemberInfoResponse.java
│   │               │   │       ├── MyPageRecordDto.java
│   │               │   │       ├── MyPageRecordResponse.java
│   │               │   │       ├── MypageEditResponseDto.java
│   │               │   │       ├── NickNameResponseDto.java
│   │               │   │       ├── RefreshTokenResponseDto.java
│   │               │   │       ├── SearchTagResponseDto.java
│   │               │   │       └── ShowInfoFlagsResponseDto.java
│   │               │   ├── enums
│   │               │   │   ├── BaseErrorEnum.java
│   │               │   │   ├── FollowResponseEnum.java
│   │               │   │   ├── Gender.java
│   │               │   │   ├── GenreResponseMessage.java
│   │               │   │   ├── MemberResponseMessage.java
│   │               │   │   ├── Role.java
│   │               │   │   └── SocialType.java
│   │               │   ├── repository
│   │               │   │   ├── FollowRepository.java
│   │               │   │   ├── GenreDetailRepository.java
│   │               │   │   ├── GenreRepository.java
│   │               │   │   ├── MemberBookScoreRepository.java
│   │               │   │   ├── MemberGenreRepository.java
│   │               │   │   ├── MemberRepository.java
│   │               │   │   └── ShowInfoRepository.java
│   │               │   └── service
│   │               │       ├── FollowService.java
│   │               │       ├── FollowServiceImpl.java
│   │               │       ├── GenreService.java
│   │               │       ├── GenreServiceImpl.java
│   │               │       ├── MemberDetailsImpl.java
│   │               │       ├── MemberDetailsServiceImpl.java
│   │               │       ├── MemberService.java
│   │               │       └── MemberServiceImpl.java
│   │               ├── recommend
│   │               │   ├── controller
│   │               │   │   └── RecommendController.java
│   │               │   ├── domain
│   │               │   │   ├── BbtiRecommend.java
│   │               │   │   ├── EmotionRecommend.java
│   │               │   │   └── Recommend.java
│   │               │   ├── dto
│   │               │   │   ├── request
│   │               │   │   │   └── RecommendRequest.java
│   │               │   │   └── response
│   │               │   │       ├── BbtiRecommendResponse.java
│   │               │   │       ├── GenreRecommendResponse.java
│   │               │   │       ├── MoodRecommendResponse.java
│   │               │   │       ├── MoodRecommendResponseDto.java
│   │               │   │       ├── RecentRecommendResponse.java
│   │               │   │       ├── RecommendBookResponseDto.java
│   │               │   │       ├── RecommendResponse.java
│   │               │   │       └── TodayRecommendResponse.java
│   │               │   ├── enums
│   │               │   │   ├── RecommendResponseMessage.java
│   │               │   │   └── Type.java
│   │               │   ├── repository
│   │               │   │   └── RecommendRepository.java
│   │               │   └── service
│   │               │       ├── RecommendService.java
│   │               │       └── RecommendServiceImpl.java
│   │               ├── record
│   │               │   ├── controller
│   │               │   │   └── RecordController.java
│   │               │   ├── domain
│   │               │   │   ├── Comment.java
│   │               │   │   ├── Record.java
│   │               │   │   └── RecordLike.java
│   │               │   ├── dto
│   │               │   │   ├── request
│   │               │   │   │   ├── FidRequestDto.java
│   │               │   │   │   ├── RecordBookshelfResponseDto.java
│   │               │   │   │   ├── RecordCommentRequest.java
│   │               │   │   │   ├── RecordLikeRequest.java
│   │               │   │   │   ├── RecordModifyRequest.java
│   │               │   │   │   ├── RecordRegistRequestDto.java
│   │               │   │   │   └── RecordRequest.java
│   │               │   │   └── response
│   │               │   │       ├── CommentResponseDto.java
│   │               │   │       ├── EmotionResponseDto.java
│   │               │   │       ├── MemberListResponseDto.java
│   │               │   │       ├── MemberResponseDto.java
│   │               │   │       ├── RecordDetailResponseDto.java
│   │               │   │       ├── RecordLikeRegistResponseDto.java
│   │               │   │       ├── RecordListResponseDto.java
│   │               │   │       ├── RecordModifyInfoResponseDto.java
│   │               │   │       ├── RecordPreviewResponseDto.java
│   │               │   │       └── RecordResponse.java
│   │               │   ├── enums
│   │               │   │   ├── RecordEnums.java
│   │               │   │   └── RecordResponseMessage.java
│   │               │   ├── repository
│   │               │   │   ├── CommentRepository.java
│   │               │   │   ├── RecordLikeRepository.java
│   │               │   │   └── RecordRepository.java
│   │               │   └── service
│   │               │       ├── RecordLikeService.java
│   │               │       ├── RecordLikeServiceImpl.java
│   │               │       ├── RecordService.java
│   │               │       └── RecordServiceImpl.java
│   │               └── reminder
│   │                   ├── controller
│   │                   │   └── ReminderController.java
│   │                   ├── domain
│   │                   │   └── Reminder.java
│   │                   ├── dto
│   │                   │   ├── request
│   │                   │   │   ├── ReminderDeleteRequestDto.java
│   │                   │   │   ├── ReminderDetailRequestDto.java
│   │                   │   │   ├── ReminderModifyRequestDto.java
│   │                   │   │   ├── ReminderRegistRequestDto.java
│   │                   │   │   └── ReminderRequest.java
│   │                   │   └── response
│   │                   │       ├── ReminderDetailResponseDto.java
│   │                   │       └── ReminderResponse.java
│   │                   ├── enums
│   │                   │   ├── Color.java
│   │                   │   └── ReminderResponseMessage.java
│   │                   ├── repository
│   │                   │   └── ReminderRepository.java
│   │                   └── service
│   │                       ├── ReminderService.java
│   │                       └── ReminderServiceImpl.java
│   └── resources
│       ├── application-dev.properties
│       ├── application-prd.properties
│       └── application.properties
└── test
    └── java
        └── com
            └── ssafy
                └── bookwave
                    └── Book2on8onApplicationTests.java

기술 스택

FrontEnd BackEnd DATA DB CI/CD 협업툴
Node 18.17.1 Java JDK 11 Python 3.9 MySQL 8.0.33 AWS EC2(Ubuntu 20.04 LTS) GitLab
NPM 9.6.7 Spring Boot 2.7.15 FastApi 0.103.1 Redis 7.0.12 Nginx 1.25.1 Jira
Vite + Typescript + SWC Gradle 8.2.1 Selenium 4.13.0 Docker 24 Notion
React 18.2.0 Lombok pandas 1.5.3 Jenkins figma
Recoil Spring Security Swagger
React-query JJWT 0.9.1 Postman
Framer-motion
ChakraUI

시스템 아키텍처




📚 프로젝트 기능

1. 메인화면



2. 회원가입 / 로그인

  • 카카오 소셜 로그인으로 회원가입을 진행합니다.
  • 최초 로그인 시 기본정보를 입력받습니다.


3. 회원정보 수정

  • 프로필 이미지와 닉네임을 변경할 수 있습니다.


4. 도서 추천 및 일기작성

  • 그날의 일기를 작성하고 일기를 통해 그날의 감정을 분류합니다.
  • 분류된 감정을 기준으로 그날의 도서를 추천해줍니다.
  • 읽고 싶은 감정별 도서를 추천받을 수 있습니다.
  • 최근에 읽은 도서와 비슷한 도서를 추천받을 수 있습니다.
  • 자신의 BBTI와 같은 사람들이 많이 읽은 도서를 추천받을 수 있습니다.
  • 장르별 도서를 추천받을 수 있습니다.


5. 독서기록 작성

  • 자신이 읽는중이거나 읽은 도서를 선택해 독서기록을 작성할 수 있습니다.


6. 피드

  • 자신이 팔로우하거나 자신과 BBTI가 같은 회원이 남긴 독서기록을 볼 수 있습니다.


7. 피드 상세보기

  • 피드 클릭 시 피드 상세보기를 할 수 있습니다.
  • 좋아요 및 댓글작성을 할 수 있습니다.


8. 책장

  • 책장에 자신이 읽고 싶은 도서 , 읽는중인 도서 , 읽은 도서를 저장할 수 있습니다.


9. 도서 검색

  • 도서 제목, 작가 , 카테고리를 기반으로 도서를 검색 할 수 있습니다.


10. 도서 상세

  • 도서 상세정보를 조회할 수 있습니다
  • BBTI별 도서를 읽은 비율을 차트로 확인할 수 있습니다.
  • 도서를 읽고 작성된 독서기록을 분석해 도서별 감정비율을 확인할 수 있습니다.
  • 도서별 독서기록을 조회할 수 있습니다.
  • 도서 상태를 변경할 수 있습니다.



📝 프로젝트 산출물