/meetaduck

[삼성 청년 소프트웨어 아카데미] 10기 특화 프로젝트

Primary LanguageTypeScript

header

새로운 사람들과 친해지는 가장 좋은 방법

개발 기간

2024.02.19 ~ 2024.04.05 (7주)

개요

"AI & BigData를 활용한 온라인 마니또 서비스"

Meet A Duck ! 은 새로운 만남 속에서 새로운 사람들과 친밀감을 형성하는 단계에서 활용도가 높으며, 활동적인 분위기 속에서 **AI(KoELECTRA)**를 통해 상호 간의 친밀도를 측정하고, 나의 채팅 내역을 BigData(Spark) 로 처리하여 언어 습관 을 확인 할 수 있는 온라인 마니또 서비스입니다.

팀 소개

팀원 역할
😈전원빈 팀장, BE
👶강지수 FE
😁김현영 BE
👩안준선 FE
😄양희승 BE
👦최지웅 BE

🔨 기술 스택 🔨

Backend

Spring Boot Spring Security JWT Gradle Hibernate

Frontend

React TypeScript Recoil NodeJS PWA

Database

MySQL MongoDB

Deploy

AWS Docker Nginx Jenkins RabbitMQ Amazon S3

BIGDATA

FastAPI Hadoop Spark Uvicorn

AI

Jupyter Pytorch scikit-learn numpy Pandas

Collaboration

GitLab Jira MatterMost Notion


파일 구조


Front
front
 ┣ public
 ┃ ┣ icons
 ┃ ┃ ┣ apple-touch-icon-144x144.png
 ┃ ┃ ┣ apple-touch-icon-152x152.png
 ┃ ┃ ┣ apple-touch-icon-72x72.png
 ┃ ┃ ┣ apple-touch-icon-76x76.png
 ┃ ┃ ┣ favicon-128.png
 ┃ ┃ ┣ favicon-16x16.png
 ┃ ┃ ┣ favicon-196x196.png
 ┃ ┃ ┣ favicon-32x32.png
 ┃ ┃ ┣ favicon-96x96.png
 ┃ ┃ ┣ mstile-310x310.png
 ┃ ┃ ┗ RubberDuckBase.png
 ┃ ┣ manifest.json
 ┃ ┗ reset.css
 ┣ src
 ┃ ┣ assets
 ┃ ┃ ┣ fonts
 ┃ ┃ ┗ images
 ┃ ┣ components
 ┃ ┃ ┣ chatting
 ┃ ┃ ┃ ┣ ChatListArea.tsx
 ┃ ┃ ┃ ┣ ChattingHeader.tsx
 ┃ ┃ ┃ ┗ ChattingInputArea.tsx
 ┃ ┃ ┣ commons
 ┃ ┃ ┃ ┣ Button.tsx
 ┃ ┃ ┃ ┣ Card.tsx
 ┃ ┃ ┃ ┣ Carousel.tsx
 ┃ ┃ ┃ ┣ Frame.tsx
 ┃ ┃ ┃ ┣ Input.tsx
 ┃ ┃ ┃ ┣ Loading.tsx
 ┃ ┃ ┃ ┣ PartyLeaveButton.tsx
 ┃ ┃ ┃ ┣ ProfileName.tsx
 ┃ ┃ ┃ ┗ Slides.tsx
 ┃ ┃ ┣ hint
 ┃ ┃ ┃ ┣ HintChats.tsx
 ┃ ┃ ┃ ┣ HintInputQuestion.tsx
 ┃ ┃ ┃ ┣ HintMessage.tsx
 ┃ ┃ ┃ ┗ HintProfile.tsx
 ┃ ┃ ┣ mission
 ┃ ┃ ┃ ┣ MissionImage.tsx
 ┃ ┃ ┃ ┗ MissionSlider.tsx
 ┃ ┃ ┣ navbar
 ┃ ┃ ┃ ┗ MainNav.tsx
 ┃ ┃ ┣ party
 ┃ ┃ ┃ ┣ DatePickerInput.tsx
 ┃ ┃ ┃ ┗ ShareButton.tsx
 ┃ ┃ ┣ result
 ┃ ┃ ┃ ┣ ResultCountCard.tsx
 ┃ ┃ ┃ ┣ ResultDoughnutChart.tsx
 ┃ ┃ ┃ ┣ ResultList.tsx
 ┃ ┃ ┃ ┣ ResultListItem.tsx
 ┃ ┃ ┃ ┣ ResultListItemProfile.tsx
 ┃ ┃ ┃ ┗ WordCloud.tsx
 ┃ ┃ ┗ vote
 ┃ ┃ ┃ ┣ VoteCard.tsx
 ┃ ┃ ┃ ┣ VoteCarouselItem.tsx
 ┃ ┃ ┃ ┣ VoteCarouselList.tsx
 ┃ ┃ ┃ ┣ VoteCarouselListItem.tsx
 ┃ ┃ ┃ ┣ VoteRadioButton.tsx
 ┃ ┃ ┃ ┣ VoteRadioButtonList.tsx
 ┃ ┃ ┃ ┗ VoteRadioButtonProfileName.tsx
 ┃ ┣ pages
 ┃ ┃ ┣ chatting
 ┃ ┃ ┃ ┣ ChattingDetailPage.tsx
 ┃ ┃ ┃ ┗ ChattingPage.tsx
 ┃ ┃ ┣ hint
 ┃ ┃ ┃ ┣ HintInProgressPage.tsx
 ┃ ┃ ┃ ┣ HintInputFormPage.tsx
 ┃ ┃ ┃ ┣ HintNonePage.tsx
 ┃ ┃ ┃ ┣ HintPage.tsx
 ┃ ┃ ┃ ┗ HintResultPage.tsx
 ┃ ┃ ┣ login
 ┃ ┃ ┃ ┣ LoginPage.tsx
 ┃ ┃ ┃ ┗ RedirectionPage.tsx
 ┃ ┃ ┣ mission
 ┃ ┃ ┃ ┣ MissionCompletePage.tsx
 ┃ ┃ ┃ ┣ MissionFirstPage.tsx
 ┃ ┃ ┃ ┣ MissionManitiPage.tsx
 ┃ ┃ ┃ ┣ MissionManitoPage.tsx
 ┃ ┃ ┃ ┣ MissionPage.tsx
 ┃ ┃ ┃ ┗ MissionTodayPage.tsx
 ┃ ┃ ┣ party
 ┃ ┃ ┃ ┣ PartyCreatePage.tsx
 ┃ ┃ ┃ ┣ PartyMakerPage.tsx
 ┃ ┃ ┃ ┗ PartyPage.tsx
 ┃ ┃ ┣ result
 ┃ ┃ ┃ ┣ PairResultPage.tsx
 ┃ ┃ ┃ ┣ ResultPage.tsx
 ┃ ┃ ┃ ┣ ResultPairListPage.tsx
 ┃ ┃ ┃ ┗ ResultSlidesPage.tsx
 ┃ ┃ ┣ root
 ┃ ┃ ┃ ┗ RootPage.tsx
 ┃ ┃ ┣ Status
 ┃ ┃ ┃ ┣ ErrorPage.tsx
 ┃ ┃ ┃ ┣ ProtectedRoutes.tsx
 ┃ ┃ ┃ ┣ ResultErrorPage.tsx
 ┃ ┃ ┃ ┗ Router.tsx
 ┃ ┃ ┗ vote
 ┃ ┃ ┃ ┣ VoteAfterPage.tsx
 ┃ ┃ ┃ ┣ VoteBefore24Page.tsx
 ┃ ┃ ┃ ┗ VoteInProgressPage.tsx
 ┃ ┣ recoil
 ┃ ┃ ┣ atom.ts
 ┃ ┃ ┗ dummy.ts
 ┃ ┣ services
 ┃ ┃ ┣ axios.ts
 ┃ ┃ ┣ chatListLoadService.ts
 ┃ ┃ ┣ chatSendImageService.ts
 ┃ ┃ ┣ chatSendMessageService.ts
 ┃ ┃ ┣ chatService.ts
 ┃ ┃ ┣ HintInputQuestionService.ts
 ┃ ┃ ┣ hintPageService.ts
 ┃ ┃ ┣ loginService.ts
 ┃ ┃ ┣ missionTodayService.ts
 ┃ ┃ ┣ partyDeleteService.ts
 ┃ ┃ ┣ partyStartService.ts
 ┃ ┃ ┣ resultService.ts
 ┃ ┃ ┣ settingFCM.ts
 ┃ ┃ ┣ updateHintAnswersService.ts
 ┃ ┃ ┗ voteService.ts
 ┃ ┣ styles
 ┃ ┃ ┣ chatting
 ┃ ┃ ┃ ┣ ChatListArea.module.css
 ┃ ┃ ┃ ┣ ChattingDetailPage.module.css
 ┃ ┃ ┃ ┣ ChattingHeader.module.css
 ┃ ┃ ┃ ┣ ChattingInputArea.module.css
 ┃ ┃ ┃ ┗ ChattingPage.module.css
 ┃ ┃ ┣ commons
 ┃ ┃ ┃ ┣ Button.module.css
 ┃ ┃ ┃ ┣ Card.module.css
 ┃ ┃ ┃ ┣ Frame.module.css
 ┃ ┃ ┃ ┣ Input.module.css
 ┃ ┃ ┃ ┣ PartyLeaveButton.module.css
 ┃ ┃ ┃ ┗ ProfileName.module.css
 ┃ ┃ ┣ hint
 ┃ ┃ ┃ ┣ HintChats.module.css
 ┃ ┃ ┃ ┣ HintInputFormPage.module.css
 ┃ ┃ ┃ ┣ HintInputQuestion.module.css
 ┃ ┃ ┃ ┣ HintMessage.module.css
 ┃ ┃ ┃ ┣ HintPage.module.css
 ┃ ┃ ┃ ┗ HintProfile.module.css
 ┃ ┃ ┣ login
 ┃ ┃ ┃ ┗ LoginPage.module.css
 ┃ ┃ ┣ mission
 ┃ ┃ ┃ ┣ Mission.module.css
 ┃ ┃ ┃ ┣ MissionCompletePage.module.css
 ┃ ┃ ┃ ┗ MissionSlider.module.css
 ┃ ┃ ┣ party
 ┃ ┃ ┃ ┣ Partyjoin.module.css
 ┃ ┃ ┃ ┗ PartyMaker.module.css
 ┃ ┃ ┣ result
 ┃ ┃ ┃ ┣ ResultCountCard.module.css
 ┃ ┃ ┃ ┣ ResultListItem.module.css
 ┃ ┃ ┃ ┣ ResultListItemProfile.module.css
 ┃ ┃ ┃ ┗ ResultPage.module.css
 ┃ ┃ ┣ vote
 ┃ ┃ ┃ ┣ VoteAfterPage.module.css
 ┃ ┃ ┃ ┣ VoteBefore24Page.module.css
 ┃ ┃ ┃ ┣ VoteCard.module.css
 ┃ ┃ ┃ ┣ VoteCarouselList.module.css
 ┃ ┃ ┃ ┣ VoteInProgressPage.module.css
 ┃ ┃ ┃ ┗ VoteRadioButton.module.css
 ┃ ┃ ┣ webSocket
 ┃ ┃ ┃ ┗ TestPage2.module.css
 ┃ ┃ ┣ Colors.css
 ┃ ┃ ┣ ErrorPage.module.css
 ┃ ┃ ┣ ETC.css
 ┃ ┃ ┣ MainNav.module.css
 ┃ ┃ ┗ Typography.css
 ┃ ┣ types
 ┃ ┃ ┣ button.ts
 ┃ ┃ ┣ chat.ts
 ┃ ┃ ┣ chatMessage.ts
 ┃ ┃ ┣ hint.ts
 ┃ ┃ ┣ mission.ts
 ┃ ┃ ┣ party.ts
 ┃ ┃ ┣ result.ts
 ┃ ┃ ┣ user.interface.ts
 ┃ ┃ ┗ vote.ts
 ┃ ┣ App.tsx
 ┃ ┣ main.tsx
 ┃ ┗ vite-env.d.ts
 ┣ .env
 ┣ .eslintrc.js
 ┣ .gitignore
 ┣ .prettierrc
 ┣ Dockerfile
 ┣ index.html
 ┣ j10c108.p.ssafy.io-key.pem
 ┣ j10c108.p.ssafy.io.pem
 ┣ Jenkinsfile
 ┣ localhost-key.pem
 ┣ localhost.pem
 ┣ package-lock.json
 ┣ package.json
 ┣ README.md
 ┣ sw.js
 ┣ tsconfig.json
 ┣ tsconfig.node.json
 ┗ vite.config.ts

Back
back
 ┣ .gradle
 ┣ .idea
 ┣ build
 ┃ ┣ classes
 ┃ ┃ ┗ java
 ┃ ┃ ┃ ┗ main
 ┃ ┃ ┃ ┃ ┣ com
 ┃ ┃ ┃ ┃ ┃ ┗ ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ duck
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ common
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ BaseTimeEntity.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ TimeUtil.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CorsMvcConfig.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ RabbitConfig.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ RabbitProperties.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ SchedulerConfig.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ SecurityConfig.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ StompConfig.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ domain
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ chat
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ChatController.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ RabbitStompController.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MessageReq$MessageReqBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ MessageReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ChatRes$ChatResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ChatRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MessageRes$MessageResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ MessageRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Chat$ChatBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Chat.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Message$MessageBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Message.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Topic$TopicBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ Topic.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ChatErrorCode.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ChatException.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ChatRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MessageRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ TopicRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ChatService.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ guest
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ GuestController.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GuestReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ VoteReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GuestRes$GuestResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GuestRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ PairRes$PairResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ PairRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ VoteRes$VoteResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ VoteRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Guest$GuestBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ Guest.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GuestErrorCode.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ GuestException.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ GuestRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ GuestService.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ hint
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ HintController.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ HintReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ HintStatusReq$HintStatusReqBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ HintStatusReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ HintRes$HintResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ HintRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ HintStatusRes$HintStatusResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ HintStatusRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Hint$HintBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Hint.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ HintStatus$HintStatusBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ HintStatus.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ HintErrorCode.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ HintException.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ HintRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ HintStatusRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ HintService.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ mission
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ MissionController.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionImageUpdateReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionPassReq$MissionPassReqBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionPassReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ MissionSuccessReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionRes$MissionResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MyManitoMissionRes$MyManitoMissionResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ MyManitoMissionRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Mission$MissionBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Mission.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionStatus$MissionStatusBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ MissionStatus.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionErrorCode.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ MissionException.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ MissionStatusRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ MissionService.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ party
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ PartyController.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CreateReq$CreateReqBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CreateReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ DeleteReq$DeleteReqBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ DeleteReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ StartReq$StartReqBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ StartReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CreateRes$CreateResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CreateRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ PartyRes$PartyResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ PartyRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Party$PartyBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ Party.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ PartyErrorCode.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ PartyException.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ PartyRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ PartyService.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ result
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ResultController.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ model
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Favorability.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ FavorabilityProjection.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ResultReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionResultRes$MissionResultResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ MissionResultRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ResultRes$ResultResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ResultRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ResultWithManitiRes$ResultWithManitiResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ResultWithManitiRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ResultWithManitoRes$ResultWithManitoResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ResultWithManitoRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Result$ResultBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ Result.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ResultErrorCode.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ResultException.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ResultRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ResultService.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ user
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ UserController.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ model
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ KakaoUserInfo$Account$Profile.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ KakaoUserInfo$Account.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ KakaoUserInfo.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ OAuthToken.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UserSignUpReq$UserSignUpReqBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ UserSignUpReq.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UserRes$UserResBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ UserRes.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ User$UserBuilder.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ User.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UserErrorCode.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ UserException.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ UserRepository.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ UserService.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ GlobalExceptionHandler.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ jwt
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CustomJwtAuthenticationFilter.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ JwtAuthInterceptor.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ JwtErrorCode.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ JwtException.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ JwtProperties.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ scheduler
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ TaskSchedulerService.class
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ DuckApplication.class
 ┣ .gitignore
 ┣ build.gradle
 ┣ Dockerfile
 ┣ gradlew
 ┣ gradlew.bat
 ┣ Jenkinsfile
 ┗ settings.gradle



시스템 아키텍처

System Architecture

화면 정의서

WireFrame

전체 와이어 프레임

전체 와이어 프레임

로그인 & 파티 시작

로그인 파티생성 대기_와이어프레임

미션

미션_와이어프레임

채팅

채팅_와이어프레임

힌트

힌트_와이어프레임

결과

결과_와이어프레임(종료전)

파티 종료 후

파티_종료_후_와이어프레임

ERD

ERD

서비스 소개 (주요 기능)

1. 사용자

  • 파티

    • 소셜 로그인(Kakao)
    • 파티 생성
    • 파티 참가
    • 파티 나가기
    • 파티 삭제
  • 미션

    • 미션 수행
    • 마니또의 미션 확인
  • 채팅

    • 실시간 그룹채팅
    • 실시간 마니또와 채팅
    • 실시간 마니띠와 채팅
  • 힌트

    • 힌트 작성
    • 마니또의 힌트 조회
  • 결과

    • 예상 마니또 투표
    • (종료 후) 힌트 전체 조회
    • (종료 후) AI기반 친밀도 분석결과조회
    • (종료 후) 빅데이터 기반 WordCloud 제공
    • (종료 후) 예상 마니또 투표 결과
    • (종료 후) 대화 빈도/횟수 조회
    • (종료 후) 미션 수행횟수 조회
    • (종료 후) 긍정어 부정어 사용비율 조회

사용자 화면

파티

01파티생성

02파티시작

03파티참가


미션

11미션새로고침

12미션제출

13미션확인


힌트

04힌트입력

15힌트


채팅

14채팅


결과

16투표

21힌트확인

22미션

23결과


종료

24파티삭제

25참가자나가기


컨벤션

Branch

- 주요 브랜치 (항상 유지)
    - **master**
        - 항상 배포 가능한 브랜치 (백업)

    - **develop**
        - 배포 브랜치(main) 다음 버전을 준비하는 브랜치
        - 개발된 모든 코드의 통합 장소
- 보조 브랜치 (임시 생성/머지했으면 삭제)
    - **feature**
        - 특정 기능을 개발하는 브랜치
        - develop 브랜치에서 생성, 기능 개발  develop 브랜치로 병합
        - e.g. `feature/be/login`, `feature/fe/logou`

    - **hotfix**
        - 배포 브랜치의 현재 버전에서 버그가 생겼을  긴급 수정을 위한 브랜치
        - main 브랜치에서 생성, 버그 수정  main  develop 브랜치로 병합
        - e.g. `hotfix/20240111`, `hotfix/#5`

Commit

  • 커밋 메시지 구조
    • 개행 2번씩.
type: <subject>

[body]

[footer]
  • type
- feat: 기능 추가
- fix: 버그 수정
- refactor: 코드 리팩토링
- design: CSS  디자인
- style: 코드 스타일 수정
- test: 코드 테스트 관련
- docs: 문서 수정
- chore: 빌드  기타 변경사항
- rename: 파일명 수정
- remove: 파일 삭제
  • subject
1. 최대 50글자까지 작성
2. 특수기호 사용 금지 (마침표 )
3. 영문 작성시  단어 명령문,  글자 대문자
    - e.g. `Add file`
4. 한글 작성시 개조식으로 작성
    - e.g. `파일 추가`
  • body
1. 생략 가능
2. '어떻게'보다는 '무엇을', '왜' 변경했는지 작성
  • footer
1. 생략 가능
2. GitLab 연동
3. Fixes #<이슈번호>
4. Resolves #<이슈번호>
5. Ref #<이슈번호>
6. Related to #<이슈번호>
7. e.g. `Fixes: #47`, `Related to: #32, 21`

DATA

-네이버 영화 리뷰 : https://github.com/e9t/nsmc
-네이버쇼핑, Steam 플랫폼 리뷰 데이터 : https://github.com/bab2min/corpus
-한국어 단발성 대화 데이터셋 : https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100
-감성 대화 말뭉치 : https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100&aihubDataSe=realm&dataSetSn=86