Skip to content

비대면 화상 소개팅 서비스 "맞나만나"

Notifications You must be signed in to change notification settings

qkdk/mannamanna

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation


맞나? 만나!

남녀노소 누구나 원하는 사랑. 사랑이 쉽지 않은 이유는 무엇일까요? 왜 사랑이 이루어지지 않을까요?

서로 다른 사람이 만나 서로 맞춰가며 사랑을 하는 것이 쉽지 않다는 것을 저희는 몇 번의 사랑과 이별을 통해 알게 되었습니다.

저희는 사랑을 돕고자 사람을 소개시켜주는 것에서 더 나아가 그들이 잘 맞는지 서로 대화해보고, 정말 만날 수 있도록 도와주는 서비스를 제공합니다.


👪 개발 멤버 소개



👑 안규보
(Back-End)



😆 최제혁
(Back-End)



😶 박소현
(Back-End)



🙄 김재이
(Front-End)



😁 홍영기
(Front-End)



🙂 노윤식
(Front-End)

Spring Boot
JPA
MySQL
Redis
QueryDSL
SpringSecurity
CI/CD
Spring Boot
JPA
MySQL
AWS EC2
Spring Boot
JPA
MySQL
UI/UX
React
ReactHookForm
Typescript
Recoil
StyledComponent
UI/UX
React
Typescript
Recoil
StyledComponent
React
Typescript
ReactQuery
ReactHookForm
Recoil
StyledComponent

📆 프로젝트 기간

23.07.04. ~ 23.08.18


💡 서비스 소개

MANNA

소개팅이 어려운 남녀를 위한 블라인드 소개팅을 제공합니다
초기 블러처리된 화면을 제공하여 접근성을 높이고 매칭 성공률을 높이기 위해 미션 , 대화주제 추천 , 예약 등의 서비스를 제공합니다


🛠️ 기술 스택

Front

NodeJS

Back


CI/CD

AWS

협업 툴

Notion Postman


🔨 개발 환경 및 기술 스택

FrontEnd BackEnd DB CI/CD 협업툴 기타
Node 18.16.0 Java JDK 17 MySQL 8.0.33 AWS EC2(Ubuntu 20.04 LTS) GitLab Kakao Login API
React 18.2.0 Spring Boot 3.0.2 Redis 7.0.12 Nginx 1.18.0 Jira Kakao address API
NPM 9.6.7 Gradle 8.1.1 Docker 24.0.5 Notion KakaoMapAPI
Redux 4.2.1 Openvidu-Java-Client 2.28.0 figma SMTP
Axios 1.4.0 Swagger 공공데이터 포탈
Openvidu-Browser 2.28.0 Postman


🗂️ 프로젝트 구성

FE 폴더 구조
├── App.tsx
├── Recoil
│   └── State.ts
├── Styles
│   ├── GlobalFont.ts
│   └── GlobalStyle.ts
├── apis
│   ├── Api.ts
│   ├── FindIdPwApi.ts
│   ├── LoginApi.ts
│   ├── OpenViduApi.ts
│   ├── RegisterApi.ts
│   ├── Request
│   │   └── Request.ts
│   ├── Response
│   │   └── Response.ts
│   ├── Url.ts
│   ├── reactquery
│   │   └── GetReactQuery.tsx
│   └── utils
│       ├── LocalStrorage.ts
│       └── Storage.ts
├── asset
│   ├── font
│   │   └── neodgm.woff
│   └── image
│       ├── A.jpeg
│       ├── B.jpeg
│       ├── C.jpeg
│       ├── Card_A.png
│       ├── Card_B.png
│       ├── Card_C.png
│       ├── Card_D.png
│       ├── Card_E.png
│       ├── Card_F.png
│       ├── D.jpeg
│       ├── E.jpeg
│       ├── F.jpeg
│       ├── GoBackBtn.png
│       ├── MissionLogo.png
│       ├── RealLogo.png
│       ├── back.jpg
│       ├── calendarheart.png
│       ├── emptyheart.png
│       ├── fullheart.png
│       ├── kakao.png
│       ├── meeting.jpg
│       ├── noteLogo.png
│       ├── signup.png
│       ├── sogaeting.jpg
│       ├── start.png
│       └── unknown.png
├── components
│   ├── animation
│   │   └── HeartAnimation.tsx
│   ├── common
│   │   ├── Back.tsx
│   │   ├── ColorButton.tsx
│   │   ├── Container.tsx
│   │   ├── CustomInputBox.tsx
│   │   ├── EmailDomain.tsx
│   │   ├── GoBackIcon.tsx
│   │   ├── KakaoMap.tsx
│   │   ├── Logo.tsx
│   │   ├── MacBox1.tsx
│   │   ├── OfflineBtn.tsx
│   │   ├── OnlineBtn.tsx
│   │   ├── Openvidu
│   │   │   ├── OvVideo.tsx
│   │   │   └── UserVideoCompo.tsx
│   │   ├── Profile.tsx
│   │   ├── RadiusContainer.tsx
│   │   ├── SmallMacBookProfile.tsx
│   │   ├── Sogeting
│   │   │   ├── BtnBox.tsx
│   │   │   ├── DummyImage.jpg
│   │   │   ├── FilterBody.tsx
│   │   │   ├── FilterComponents.tsx
│   │   │   ├── FilterContainer.tsx
│   │   │   ├── Selection
│   │   │   │   ├── Selection1.tsx
│   │   │   │   ├── Selection2.tsx
│   │   │   │   ├── Selection3.tsx
│   │   │   │   └── Selection4.tsx
│   │   │   ├── SogetingFont1.tsx
│   │   │   ├── SogetingMainBack.tsx
│   │   │   └── button
│   │   │       ├── NewPersonBtn.tsx
│   │   │       └── chooseBtn.tsx
│   │   ├── Timer.tsx
│   │   ├── UserCalendar.tsx
│   │   ├── macbookBox.tsx
│   │   ├── mainImage.png
│   │   ├── reserveLogo.png
│   │   ├── slider.tsx
│   │   ├── unScrollMacBox.tsx
│   │   └── wingHart.png
│   └── layout
│       ├── Greetings.tsx
│       ├── MyPageSideTab.tsx
│       ├── Sidebar
│       │   ├── SidebarChat.tsx
│       │   ├── SidebarHome.tsx
│       │   ├── SidebarMission.tsx
│       │   ├── SidebarMyPage.tsx
│       │   ├── SidebarNote.tsx
│       │   ├── SidebarSchdule.tsx
│       │   └── SidebarStyle.ts
│       └── Sidetab.tsx
├── constants
│   └── ThrowError.ts
├── custom.d.ts
├── hooks
│   └── useOpenvidu.ts
├── index.tsx
├── pages
│   ├── Alarm.tsx
│   ├── Chatting
│   │   ├── Chatting.tsx
│   │   ├── ChattingComponent.tsx
│   │   └── ChattingStyle.ts
│   ├── Choice.tsx
│   ├── Landing
│   │   ├── Landing.tsx
│   │   └── LandingStyle.ts
│   ├── Layout.tsx
│   ├── Meeting
│   │   ├── Meeting.tsx
│   │   ├── MeetingGame.tsx
│   │   ├── MeetingMacBox.tsx
│   │   ├── MeetingMain.tsx
│   │   ├── MeetingMakeRoom.tsx
│   │   └── MeetingWait.tsx
│   ├── Mission
│   │   ├── Mission.tsx
│   │   ├── MissionModal.tsx
│   │   ├── MissionPicture.tsx
│   │   └── MissionStyle.tsx
│   ├── Note
│   │   ├── Modal
│   │   │   ├── AcceptModal.tsx
│   │   │   ├── DeleteNoteModal.tsx
│   │   │   ├── NoteModalStyle.tsx
│   │   │   └── ReplyModal.tsx
│   │   ├── Note.tsx
│   │   ├── NoteComponent
│   │   │   └── NoteBody.tsx
│   │   ├── NoteState.tsx
│   │   ├── NoteStyle.tsx
│   │   ├── RequestNote.tsx
│   │   └── ResponseNote.tsx
│   ├── Reserve
│   │   ├── Interfaces.ts
│   │   ├── LocateObject.ts
│   │   ├── Reserve.tsx
│   │   ├── ReserveComp.tsx
│   │   ├── ReserveCompStyle.ts
│   │   ├── ReservePlaceComp.tsx
│   │   └── ReservePlaceCompStyle.ts
│   ├── Soagaeting
│   │   ├── SoagaetinStyle.ts
│   │   ├── Soageting.tsx
│   │   ├── SoagetingMain.tsx
│   │   ├── SoagetingWait.tsx
│   │   ├── SogaetingState.ts
│   │   └── SogaetingStyles.tsx
│   ├── Study
│   │   ├── StudyRecoil.tsx
│   │   └── StudyRecoilResult.tsx
│   └── User
│       ├── ForgotIdPw
│       │   ├── ForgotId.tsx
│       │   ├── ForgotIdStyle.ts
│       │   ├── ForgotIdStyles.tsx
│       │   └── ForgotPw.tsx
│       ├── Login
│       │   ├── Clinet.ts
│       │   ├── KaKaoLogin.tsx
│       │   ├── KakaoData.tsx
│       │   ├── Login.tsx
│       │   └── LoginStyle.ts
│       ├── MainHome
│       │   ├── MainHome.tsx
│       │   └── MainHomeStyle.ts
│       ├── MyPage
│       │   ├── MyPageHistory.tsx
│       │   ├── MyPageMileage.tsx
│       │   ├── MyPageModal
│       │   │   ├── ChangePicModal.tsx
│       │   │   ├── ImageChange.tsx
│       │   │   └── ModifyLocal.tsx
│       │   ├── MyPageModify.tsx
│       │   ├── MyPageModifyStyle.tsx
│       │   ├── MyPageState.ts
│       │   ├── MyPageStyle.ts
│       │   ├── MyPageStyles.tsx
│       │   ├── MyPageWithdrawal.tsx
│       │   └── Mypage.tsx
│       ├── Register
│       │   ├── Address
│       │   │   ├── AddressDetail.tsx
│       │   │   ├── EnterAddressModal.tsx
│       │   │   ├── EnterGuGun.tsx
│       │   │   └── LocalApi.tsx
│       │   ├── AnswerBox.tsx
│       │   ├── Image
│       │   │   ├── EnterImageModal.tsx
│       │   │   ├── ImageInput.tsx
│       │   │   └── ShowImage.tsx
│       │   ├── ModalStyle.ts
│       │   ├── Question.tsx
│       │   ├── Register.tsx
│       │   ├── RegisterDetail.tsx
│       │   ├── RegisterState.ts
│       │   ├── RegisterStyle.ts
│       │   ├── SaveBtn.tsx
│       │   ├── Selection.tsx
│       │   ├── SelfPR
│       │   │   ├── IntroduceModal.tsx
│       │   │   └── IntroduceTextArea.tsx
│       │   └── Toggle
│       │       ├── DrinkCheck.tsx
│       │       └── SmokeCheck.tsx
│       └── Schedule
│           ├── SchduelModal.tsx
│           ├── Schedule.tsx
│           └── ScheduleStyle.ts
└── typings

BE 폴더 구조
├── main
│   ├── java
│   │   └── com
│   │       └── ssafy
│   │           └── manna
│   │               ├── MannaApplication.java
│   │               ├── global
│   │               │   ├── auth
│   │               │   │   ├── domain
│   │               │   │   │   └── RefreshToken.java
│   │               │   │   ├── dto
│   │               │   │   │   └── LoginResponse.java
│   │               │   │   ├── filter
│   │               │   │   │   └── CustomJsonUsernamePasswordAuthenticationFilter.java
│   │               │   │   ├── handler
│   │               │   │   │   ├── LoginFailureHandler.java
│   │               │   │   │   └── LoginSuccessHandler.java
│   │               │   │   ├── jwt
│   │               │   │   │   ├── JwtService.java
│   │               │   │   │   └── filter
│   │               │   │   │       └── JwtAuthenticationProcessingFilter.java
│   │               │   │   ├── repository
│   │               │   │   │   └── RefreshTokenRepository.java
│   │               │   │   └── service
│   │               │   │       ├── LoginService.java
│   │               │   │       └── RefreshTokenService.java
│   │               │   ├── common
│   │               │   │   ├── domain
│   │               │   │   │   ├── Address.java
│   │               │   │   │   ├── BaseCreateOnlyEntity.java
│   │               │   │   │   ├── BaseStartEndEntity.java
│   │               │   │   │   ├── BaseTimeEntity.java
│   │               │   │   │   ├── Code.java
│   │               │   │   │   ├── CodeDetail.java
│   │               │   │   │   ├── Gugun.java
│   │               │   │   │   ├── Session.java
│   │               │   │   │   └── Sido.java
│   │               │   │   ├── dto
│   │               │   │   │   ├── MailDto.java
│   │               │   │   │   └── ProfilePictureDto.java
│   │               │   │   ├── enums
│   │               │   │   │   └── SessionEnum.java
│   │               │   │   ├── repository
│   │               │   │   │   ├── AddressRepository.java
│   │               │   │   │   ├── CodeDetailRepository.java
│   │               │   │   │   └── RedisSessionRepository.java
│   │               │   │   └── service
│   │               │   │       └── SessionService.java
│   │               │   ├── config
│   │               │   │   ├── CorsConfig.java
│   │               │   │   ├── QuerydslConfig.java
│   │               │   │   ├── RedisConfig.java
│   │               │   │   ├── SecurityConfig.java
│   │               │   │   ├── WebMvcConfig.java
│   │               │   │   └── WebSocketConfig.java
│   │               │   ├── controller
│   │               │   │   └── OpenViduController.java
│   │               │   ├── handler
│   │               │   │   ├── CustomExceptionHandler.java
│   │               │   │   ├── StompHandler.java
│   │               │   │   └── WebSocketEventListener.java
│   │               │   └── util
│   │               │       ├── GeoUtils.java
│   │               │       └── ResponseTemplate.java
│   │               ├── meeting
│   │               │   ├── controller
│   │               │   │   ├── MeetingController.java
│   │               │   │   └── MeetingGameController.java
│   │               │   ├── domain
│   │               │   │   ├── BalanceGame.java
│   │               │   │   ├── GameLoveStick.java
│   │               │   │   ├── Meeting.java
│   │               │   │   └── MeetingMember.java
│   │               │   ├── dto
│   │               │   │   ├── request
│   │               │   │   │   ├── MeetingGameRequest.java
│   │               │   │   │   ├── MeetingMakeRoomRequest.java
│   │               │   │   │   ├── MeetingReportRequest.java
│   │               │   │   │   └── MeetingRequest.java
│   │               │   │   └── response
│   │               │   │       ├── MeetingGameResponse.java
│   │               │   │       ├── MeetingMakeRoomResponse.java
│   │               │   │       └── MeetingResponse.java
│   │               │   ├── exception
│   │               │   │   ├── MeetingGameNotFoundException.java
│   │               │   │   └── MeetingNotFoundException.java
│   │               │   ├── repository
│   │               │   │   ├── MeetingGameRepository.java
│   │               │   │   └── MeetingRepository.java
│   │               │   └── service
│   │               │       ├── MeetingGameService.java
│   │               │       ├── MeetingService.java
│   │               │       └── MeetingServiceImpl.java
│   │               ├── member
│   │               │   ├── Enums
│   │               │   │   ├── AlarmCode.java
│   │               │   │   ├── BanCode.java
│   │               │   │   ├── GenderEnum.java
│   │               │   │   ├── MemberExceptionsEnum.java
│   │               │   │   ├── MemberInfoEnum.java
│   │               │   │   └── UserRole.java
│   │               │   ├── controller
│   │               │   │   └── MemberController.java
│   │               │   ├── domain
│   │               │   │   ├── Ban.java
│   │               │   │   ├── Friend.java
│   │               │   │   ├── Member.java
│   │               │   │   ├── MemberDetail.java
│   │               │   │   ├── MileageHistory.java
│   │               │   │   ├── ProfilePicture.java
│   │               │   │   └── RefreshToken.java
│   │               │   ├── dto
│   │               │   │   ├── request
│   │               │   │   │   ├── MemberCheckPwdRequest.java
│   │               │   │   │   ├── MemberDeleteRequest.java
│   │               │   │   │   ├── MemberFindIdRequest.java
│   │               │   │   │   ├── MemberFindPwdRequest.java
│   │               │   │   │   ├── MemberLoginRequest.java
│   │               │   │   │   ├── MemberSignUpRequest.java
│   │               │   │   │   └── MemberUpdateRequest.java
│   │               │   │   └── response
│   │               │   │       ├── MemberFindIdResponse.java
│   │               │   │       ├── MemberFindPwdResponse.java
│   │               │   │       ├── MemberInfoResponse.java
│   │               │   │       └── MemberLoginResponse.java
│   │               │   ├── repository
│   │               │   │   ├── MemberDetailRepository.java
│   │               │   │   ├── MemberRepository.java
│   │               │   │   └── ProfilePictureRepository.java
│   │               │   └── service
│   │               │       ├── MemberService.java
│   │               │       └── MemberServiceImpl.java
│   │               ├── messenger
│   │               │   ├── Enums
│   │               │   │   ├── ChatRoomExceptionEnums.java
│   │               │   │   └── NoteExceptionsEnum.java
│   │               │   ├── controller
│   │               │   │   ├── ChatController.java
│   │               │   │   ├── ChatRoomController.java
│   │               │   │   └── NoteController.java
│   │               │   ├── domain
│   │               │   │   ├── Alarm.java
│   │               │   │   ├── Chat.java
│   │               │   │   ├── ChatRoom.java
│   │               │   │   ├── Note.java
│   │               │   │   ├── RedisChat.java
│   │               │   │   ├── RedisChatHistory.java
│   │               │   │   └── RedisChatRoom.java
│   │               │   ├── dto
│   │               │   │   ├── ChatMessage.java
│   │               │   │   ├── request
│   │               │   │   │   ├── MakeChattingRoomRequest.java
│   │               │   │   │   ├── NoteSendRequest.java
│   │               │   │   │   └── SogaeNoteSendRequest.java
│   │               │   │   └── response
│   │               │   │       ├── ChatHistoryResponse.java
│   │               │   │       ├── ChatRoomResponse.java
│   │               │   │       ├── NoteDetailResponse.java
│   │               │   │       ├── NoteListResponse.java
│   │               │   │       └── SogaeNoteDetailResponse.java
│   │               │   ├── repository
│   │               │   │   ├── ChatRepository.java
│   │               │   │   ├── ChatRoomRepository.java
│   │               │   │   ├── ChattingRepository.java
│   │               │   │   └── NoteRepository.java
│   │               │   └── service
│   │               │       ├── ChatRoomService.java
│   │               │       ├── ChatRoomServiceImpl.java
│   │               │       ├── NoteService.java
│   │               │       ├── NoteServiceImpl.java
│   │               │       └── RedisSubscriber.java
│   │               ├── mission
│   │               │   ├── Enums
│   │               │   │   ├── MissionCode.java
│   │               │   │   └── MissionResponseMessage.java
│   │               │   ├── controller
│   │               │   │   └── MissionController.java
│   │               │   ├── domain
│   │               │   │   ├── Mission.java
│   │               │   │   └── MissionQuestion.java
│   │               │   ├── dto
│   │               │   │   ├── request
│   │               │   │   │   ├── MissionAssignRequest.java
│   │               │   │   │   ├── MissionDeleteRequest.java
│   │               │   │   │   ├── MissionDoRequest.java
│   │               │   │   │   ├── MissionGiveUpRequest.java
│   │               │   │   │   ├── MissionRequest.java
│   │               │   │   │   └── MissionStartRequest.java
│   │               │   │   └── response
│   │               │   │       ├── MissionCallResponse.java
│   │               │   │       ├── MissionDetailResponse.java
│   │               │   │       ├── MissionFinishResponse.java
│   │               │   │       ├── MissionParticipantResponse.java
│   │               │   │       ├── MissionResponse.java
│   │               │   │       └── MissionStartResponse.java
│   │               │   ├── exception
│   │               │   │   └── MissionNotFoundException.java
│   │               │   ├── repository
│   │               │   │   ├── MissionQuestionRepository.java
│   │               │   │   └── MissionRepository.java
│   │               │   └── service
│   │               │       ├── MissionService.java
│   │               │       └── MissionServiceImpl.java
│   │               ├── schedule
│   │               │   ├── Enums
│   │               │   │   ├── DateTimeFormat.java
│   │               │   │   └── Timezone.java
│   │               │   ├── controller
│   │               │   │   ├── ReservePlaceController.java
│   │               │   │   └── ScheduleController.java
│   │               │   ├── domain
│   │               │   │   ├── OfflineSchedule.java
│   │               │   │   ├── OnlineSchedule.java
│   │               │   │   ├── ReservePlace.java
│   │               │   │   └── Schedule.java
│   │               │   ├── dto
│   │               │   │   ├── request
│   │               │   │   │   ├── DetailScheduleRequest.java
│   │               │   │   │   ├── OfflineScheduleRequest.java
│   │               │   │   │   ├── OnlineScheduleRequest.java
│   │               │   │   │   ├── ReserveMiddlePlaceRequest.java
│   │               │   │   │   ├── ReservePlaceRequest.java
│   │               │   │   │   ├── ScheduleRequest.java
│   │               │   │   │   └── TodayScheduleRequest.java
│   │               │   │   └── response
│   │               │   │       ├── OfflineScheduleResponse.java
│   │               │   │       ├── OnlineScheduleResponse.java
│   │               │   │       └── ScheduleResponse.java
│   │               │   ├── exception
│   │               │   │   └── NotFoundScheduleException.java
│   │               │   ├── repository
│   │               │   │   ├── OfflineScheduleRepository.java
│   │               │   │   ├── OnlineScheduleRepository.java
│   │               │   │   ├── ReservePlaceRepository.java
│   │               │   │   └── ScheduleRepository.java
│   │               │   └── service
│   │               │       ├── OfflineScheduleService.java
│   │               │       ├── OfflineScheduleServiceImpl.java
│   │               │       ├── OnlineScheduleService.java
│   │               │       ├── OnlineScheduleServiceImpl.java
│   │               │       ├── ReservePlaceService.java
│   │               │       ├── ReservePlaceServiceImpl.java
│   │               │       ├── ScheduleService.java
│   │               │       └── ScheduleServiceImpl.java
│   │               └── sogaeting
│   │                   ├── controller
│   │                   │   ├── SogaetingController.java
│   │                   │   └── SogaetingReserveController.java
│   │                   ├── domain
│   │                   │   ├── Sogaeting.java
│   │                   │   └── SogaetingContinue.java
│   │                   ├── dto
│   │                   │   ├── request
│   │                   │   │   ├── ReservationRequest.java
│   │                   │   │   ├── SogaetingFilteringRequest.java
│   │                   │   │   ├── SogaetingLikeRequest.java
│   │                   │   │   ├── SogaetingReportRequest.java
│   │                   │   │   ├── SogaetingRequest.java
│   │                   │   │   ├── SogaetingStartRequest.java
│   │                   │   │   └── SogaetingSuccessRequest.java
│   │                   │   └── response
│   │                   │       ├── ImageMappedSogaetingMemberResponse.java
│   │                   │       ├── ReservationResponse.java
│   │                   │       ├── SogaetingChatRecommendResponse.java
│   │                   │       ├── SogaetingInfoResponse.java
│   │                   │       ├── SogaetingMemberResponse.java
│   │                   │       ├── SogaetingMemberResponsePage.java
│   │                   │       └── SogaetingResponse.java
│   │                   ├── enums
│   │                   │   ├── SogaetingEnum.java
│   │                   │   └── SogaetingResponseMessage.java
│   │                   ├── exception
│   │                   │   └── SogaetingNotFoundException.java
│   │                   ├── repository
│   │                   │   ├── CustomSogaetingRepository.java
│   │                   │   └── SogaetingRepository.java
│   │                   └── service
│   │                       ├── SogaetingService.java
│   │                       └── SogaetingServiceImpl.java
│   └── resources
│       ├── 0809Manna.sql
│       ├── application-jwt.yml
│       ├── application-redis.yml
│       ├── application.yml
│       ├── mannaSchema.sql
│       └── sidoDump.sql
└── test
    └── java
        └── com
            └── ssafy
                └── manna
                    ├── MannaApplicationTests.java
                    ├── global
                    │   ├── auth
                    │   │   └── repository
                    │   │       └── RefreshTokenRepositoryTest.java
                    │   ├── common
                    │   │   └── repository
                    │   │       └── RedisSessionRepositoryTest.java
                    │   ├── handler
                    │   │   └── StompHandlerTest.java
                    │   └── util
                    │       └── SessionServiceTest.java
                    ├── member
                    │   ├── repository
                    │   │   └── MemberRepositoryTest.java
                    │   └── service
                    │       └── MemberServiceImplTest.java
                    ├── messenger
                    │   └── service
                    │       └── ChatRoomServiceTest.java
                    ├── mission
                    │   └── service
                    │       └── MissionServiceImplTest.java
                    └── sogaeting
                        ├── repository
                        │   └── CustomSogaetingRepositoryTest.java
                        └── service
                            └── SogaetingServiceImplTest.java


시스템 구성도






🗂 ERD



📚 프로젝트 기능

1. 회원가입 / 로그인



  • 카카오 연동을 이용하여 회원가입을 진행합니다.


  • 회원가입 시 간단한 설문을 진행합니다.

2. 소개팅 인연 찾기







  • 필터링을 통해 나에게 맞는 인연을 소개해줍니다.
  • 호감이 생길 경우 소개팅 신청 버튼을 통해 소개팅 신청을 할 수 있습니다.
  • 소개팅 신청 시 상대방에게 쪽지를 보낼 수 있습니다.

3. 소개팅 시작



  • 예약된 스케줄이 달력에 하트모양으로 표시되고 입장 버튼을 누르면 소개팅에 입장 할 수 있습니다.


  • 소개팅 방에 입장할 경우 자신이 화면에 보여지는 모습을 미리 확인할 수 있고 입장 버튼 클릭 시 소개팅 방으로 입장됩니다.


  • 소개팅이 시작되면 서로의 화면이 블러처리 된 상태로 소개팅이 진행되게 됩니다.


  • 블러 해제 버튼을 누르면 블러처리가 조금씩 해제됩니다
  • 채팅창에서 대화주제 추천 버튼을 클릭 시 밸런스 게임을 진행할 수 있는 대화를 추천해줍니다.

4. 매칭 성공



  • 서로 호감을 나타낼 경우 오프라인 만남을 할 수 있는 예약 장소를 추천해줍니다.


  • 오프라인 예약 성공 시 스케줄 달력에 예약날짜가 추가되고 클릭 시 상세정보를 확인할 수 있습니다.

5. 미션 및 쪽지





  • 미션 진행 시 랜덤한 주제를 추천해주고 서로의 미션이 완료될 경우 CLEAR 표시를 해줍니다


  • 쪽지를 통해 상대방과의 소개팅 일정을 잡을 수 있고 쪽찌를 통해 소개팅 이전의 소통을 제공합니다.


  • 소개팅 신청을 받을 경우 쪽지를 통해 수락 / 거절 할 수 있습니다.

👥 협업 관리


About

비대면 화상 소개팅 서비스 "맞나만나"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages