- SSAFY 10기 2학기 공통 프로젝트 (WebRTC)
- 8팀 나죽나강팀
- 2024.1.3 ~ 2024.2.16
김선욱
|
김유나
|
유세진
|
윤주찬
|
장동재
|
한재현
|
Metaverse, 팀장
|
Backend 리더
|
Backend
|
Frontend
|
Frontend 리더, CI/CD
|
Backend
|
마음의 문제를 겪는 사람들이 늘어나고 있는 우리나라지만 사회적 인식과 같은 이유로 사람들은 정신과 혹은 심리 상담소 방문을 꺼려하는 추세입니다. 만약 상담소를 직접 방문하지 않아도 된다면 어떨까요? 나와 비슷한 사람들과 이야기를 나누고 싶다면, 당신도 지금 마음을 털어놓고 싶다면, 여러분의 마음 치료사 마리텔을 이용해보세요!
- 상담자 프로필 사진, 이름, 경력 등 상담자의 정보 확인
- 캠과 마이크를 이용한 비대면 상담
- 화면에 나오는 본인 얼굴을 마주하고 싶지 않은 내담자를 위한 카메라 off 기능
- 단, 내담자의 동의 하에 상담자에게는 화면 공개
- 상담가가 상담을 진행하며 바로 상담일지 작성
- 상담이 종료되면 내담자가 상담후기 작성
- 방 생성 기능을 통해 원하는 자조 모임 참여 가능
- 아바타와 마이크를 이용한 메타버스 자조 모임
- 자유로운 커스터마이징
- 중재자의 진행을 위한 퀘스트 전체 공지 기능
- 채팅, 음성 채팅 등 다양한 소통 방법
- 다회차 자조모임을 위한 그림그리기 게임
- 매주 바뀌는 주제를 제공
- 익명으로 게시글을 작성
- Intellij
- Visual Studio Code
- Spring Boot
3.2.1
- Spring Security
6.2.1
- Spring Data JPA
3.2.1
- OAuth2
- JWT
0.12.3
- Stomp WebSocket
2.3.3-1
- Node.js
20.11.0
- npm
10.2.4
- React
18.2.0
- Redux-toolkit
2.1.0
- type-script
4.9.5
- openvidu-browser
2.29.1
- Unity
2021.3.33f1
- Photon Pun2
2.45
- Photon Voice2
2.45
- MySQL
8.3.0
- Redis
3.2.1
- AWS EC2
- Docker
24.0.5
- Jenkins
2.440
- Nginx
1.18.0 (Ubuntu)
- SSL
- GitLab
- Jira
- Notion
- Mattermost
Backend
\---src
\---main
+---java
| \---com
| \---ssafy
| \---malitell
| | Initializer.java
| | MalitellApplication.java
| |
| +---config
| | RedisCacheConfig.java
| | RedisConfig.java
| | SecurityConfig.java
| | WebSocketConfig.java
| |
| +---controller
| | AuthController.java
| | CapsuleController.java
| | ChatController.java
| | CommentController.java
| | CommunityController.java
| | CounselingController.java
| | GatheringController.java
| | MessageController.java
| | MindLetGoController.java
| | OverComingController.java
| | ScrapController.java
| | SelfHelpGroupController.java
| | UserController.java
| |
| +---domain
| | +---auth
| | | CustomOAuth2User.java
| | | emailAuth.java
| | |
| | +---board
| | | | Community.java
| | | | Gathering.java
| | | | OverComing.java
| | | |
| | | \---comment
| | | CommunityComment.java
| | | GatheringComment.java
| | | OverComingComment.java
| | |
| | +---capsule
| | | Capsule.java
| | |
| | +---chat
| | | ChatMessage.java
| | | ChatRoom.java
| | |
| | +---counseling
| | | Counseling.java
| | | CounselingLog.java
| | | CounselingReview.java
| | |
| | +---mindletgo
| | | MindLetGo.java
| | | MindLetGoTopic.java
| | |
| | +---scrap
| | | Scrap.java
| | |
| | +---selfhelpgroup
| | | SelfHelpGroup.java
| | | SelfHelpGroupUser.java
| | | SelfHelpType.java
| | |
| | +---tag
| | | StatusTag.java
| | | WorryTag.java
| | | WorryTagConverter.java
| | |
| | \---user
| | User.java
| |
| +---dto
| | +---request
| | | +---auth
| | | | CheckCertificationRequestDto.java
| | | | EmailCertificationRequestDto.java
| | | | FindIdRequestDto.java
| | | | IdCheckRequestDto.java
| | | | PasswordRequestDto.java
| | | | SignUpRequestDto.java
| | | |
| | | +---board
| | | | +---comment
| | | | | CommentRequestDto.java
| | | | |
| | | | +---community
| | | | | CommunityRequestDto.java
| | | | | CommunityUpdateRequestDto.java
| | | | |
| | | | +---gathering
| | | | | GatheringCreateRequestDto.java
| | | | | GatheringUpdateRequestDto.java
| | | | |
| | | | \---overcoming
| | | | OverComingRequestDto.java
| | | | OverComingUpdateRequestDto.java
| | | |
| | | +---chat
| | | | ChatMessageDto.java
| | | | ChatMessageRequestDto.java
| | | | ChatRequestDto.java
| | | | ChatRoomDto.java
| | | |
| | | +---counseling
| | | | CounselingLogRequestDto.java
| | | | CounselingReviewRequestDto.java
| | | | ReserveRequestDto.java
| | | |
| | | +---mindletgo
| | | | MindLetGoRequestDto.java
| | | |
| | | +---scrap
| | | | ScrapRequestDto.java
| | | |
| | | +---tag
| | | | TagRequestDto.java
| | | |
| | | \---user
| | | ClientJoinRequestDto.java
| | | ClientUpdateRequestDto.java
| | | CounselorJoinRequestDto.java
| | | CounselorUpdateRequestDto.java
| | |
| | \---response
| | | ResponseDto.java
| | |
| | +---auth
| | | CheckCertificationResponseDto.java
| | | EmailCertificationResponseDto.java
| | | FindIdResponseDto.java
| | | IdCheckResponseDto.java
| | | SignUpResponseDto.java
| | |
| | +---board
| | | | MyBoardListResponseDto.java
| | | |
| | | +---comment
| | | | CommentResponseDto.java
| | | |
| | | +---community
| | | | CommunityListResponseDto.java
| | | | CommunityResponseDto.java
| | | |
| | | +---gathering
| | | | BoardResponseDto.java
| | | | GatheringListResponseDto.java
| | | | GatheringResponseDto.java
| | | | GatheringScrapResponseDto.java
| | | |
| | | \---overcoming
| | | OverComingListResponseDto.java
| | | OverComingResponseDto.java
| | |
| | +---capsule
| | | CapsuleResponseDto.java
| | |
| | +---chat
| | | ChatMessageResponseDto.java
| | | ChatRoomResponseDto.java
| | |
| | +---counseling
| | | CounselingLogOrderByDateResponseDto1.java
| | | CounselingLogOrderByDateResponseDto2.java
| | | CounselingLogResponseDto.java
| | | CounselorResponseDto.java
| | | CounselorReviewResponseDto.java
| | | MyCounselingLogResponseDto.java
| | | MyCounselingReviewResponseDto.java
| | | ReservationInfoResponseDto.java
| | | ReservationListResponseDto.java
| | |
| | +---mindletgo
| | | MindLetGoListDto.java
| | | MindLetGoTopicResponseDto.java
| | |
| | +---selfhelpgroup
| | | SelfHelpGroupResponseDto.java
| | |
| | \---user
| | ClientResponseDto.java
| | CounselorResponseDto.java
| | CustomUserDetails.java
| | UserResponseDto.java
| |
| +---handler
| | OAuth2SuccessHandler.java
| | StompHandler.java
| |
| +---jwt
| | JWTFilter.java
| | JWTUtil.java
| | LoginFilter.java
| |
| +---repository
| | +---board
| | | +---community
| | | | CommunityCommentRepository.java
| | | | CommunityRepository.java
| | | |
| | | +---gathering
| | | | GatheringCommentRepository.java
| | | | GatheringRepository.java
| | | |
| | | \---overcoming
| | | OverComingCommentRepository.java
| | | OverComingRepository.java
| | |
| | +---capsule
| | | CapsuleRepository.java
| | |
| | +---chat
| | | ChatMessageMongoRepository.java
| | | ChatMessageRepository.java
| | | ChatRoomRepository.java
| | |
| | +---counseling
| | | | CounselingRepository.java
| | | | CounselingRepositoryCustom.java
| | | | CounselingRepositoryImpl.java
| | | |
| | | +---log
| | | | CounselingLogRepository.java
| | | |
| | | \---review
| | | CounselingReviewRepository.java
| | | CounselingReviewRepositoryCustom.java
| | | CounselingReviewRepositoryImpl.java
| | |
| | +---mindletgo
| | | MindLetGoRepository.java
| | | MindLetGoTopicRepositoryImpl.java
| | |
| | +---scrap
| | | ScrapRepository.java
| | | ScrapRepositoryImpl.java
| | |
| | +---selfhelpgroup
| | | SelfHelpGroupRepository.java
| | | SelfHelpGroupUserRepository.java
| | |
| | \---user
| | CertificationRepository.java
| | UserRepository.java
| | UserRepositoryCustom.java
| | UserRepositoryImpl.java
| |
| +---service
| | | AuthService.java
| | | CapsuleService.java
| | | CommunityCommentService.java
| | | CommunityService.java
| | | CounselingService.java
| | | CustomUserDetailsService.java
| | | GatheringCommentService.java
| | | GatheringService.java
| | | MindLetGoService.java
| | | OverComingCommentService.java
| | | OverComingService.java
| | | ScrapService.java
| | | SelfHelpGroupService.java
| | | UserService.java
| | |
| | +---chat
| | | ChatService.java
| | | RedisPublisher.java
| | | RedisSubscriber.java
| | |
| | \---implement
| | AuthServiceImplement.java
| | OAuth2UserServiceImplement.java
| |
| \---util
| AESUtil.java
| CertificationNumber.java
| EmailUtil.java
| ResponseCode.java
| ResponseMessage.java
| Scheduler.java
|
\---resources
application.properties
Frontend
src
├─ App.tsx
├─ assets
│ ├─ fonts
│ │ ├─ Font.css
│ │ └─ NanumSquareNeo-Variable.woff
│ └─ images
│ ├─ auth
│ │ ├─ login
│ │ │ ├─ kakao.png
│ │ │ └─ naver.png
│ │ └─ signup
│ │ ├─ client.png
│ │ └─ counselor.png
│ ├─ banner
│ │ ├─ bamboo.png
│ │ ├─ counsel.png
│ │ ├─ metaverse.png
│ │ └─ worry.png
│ ├─ favicon.png
│ ├─ malitell.png
│ ├─ nav
│ │ └─ logo.png
│ ├─ star.png
│ └─ vendingMachine
│ ├─ cardBack.png
│ ├─ cardFront.png
│ ├─ explosion.gif
│ ├─ fast.gif
│ ├─ lastFrame.png
│ └─ normal.gif
├─ components
│ ├─ article
│ │ ├─ articleCreate
│ │ │ ├─ createArticleForm.tsx
│ │ │ ├─ createGatherForm.tsx
│ │ │ └─ createOvercomeForm.tsx
│ │ ├─ articleDetail
│ │ │ ├─ comment.tsx
│ │ │ ├─ commentList.tsx
│ │ │ ├─ communityContent.tsx
│ │ │ ├─ createComment.tsx
│ │ │ ├─ gatherContent.tsx
│ │ │ ├─ overcomeContent.tsx
│ │ │ ├─ search.tsx
│ │ │ ├─ title.tsx
│ │ │ ├─ titleGather.tsx
│ │ │ ├─ titleOvercome.tsx
│ │ │ └─ types.ts
│ │ ├─ articleList
│ │ │ ├─ article.tsx
│ │ │ ├─ articleList.tsx
│ │ │ ├─ articleMenu.tsx
│ │ │ ├─ filter.tsx
│ │ │ └─ searchBox.tsx
│ │ ├─ components.md
│ │ └─ recommendedArticle.tsx
│ ├─ auth
│ │ ├─ login
│ │ │ ├─ login.tsx
│ │ │ └─ loginEmail.tsx
│ │ ├─ profile
│ │ │ ├─ current.tsx
│ │ │ ├─ currentMenu.tsx
│ │ │ ├─ menu.tsx
│ │ │ ├─ myArticle.tsx
│ │ │ ├─ myCounselClient.tsx
│ │ │ ├─ myCounselCounselor.tsx
│ │ │ ├─ myGathering.tsx
│ │ │ ├─ myInfoClient.tsx
│ │ │ ├─ myReservation.tsx
│ │ │ ├─ myReview.tsx
│ │ │ ├─ myScrab.tsx
│ │ │ └─ passwordChange.tsx
│ │ └─ signup
│ │ ├─ certification.tsx
│ │ ├─ client
│ │ │ └─ clientForm.tsx
│ │ ├─ complete.tsx
│ │ ├─ counselor
│ │ │ └─ counselorForm.tsx
│ │ ├─ regex.ts
│ │ ├─ selection
│ │ │ └─ selection.tsx
│ │ └─ signup.tsx
│ ├─ bamboo
│ │ ├─ filter.tsx
│ │ ├─ message.tsx
│ │ ├─ messageCreate.tsx
│ │ ├─ messageList.tsx
│ │ ├─ modal.tsx
│ │ └─ subject.tsx
│ ├─ chat
│ │ ├─ chatting.tsx
│ │ └─ list.tsx
│ ├─ common
│ │ ├─ banners
│ │ │ ├─ bamboo.tsx
│ │ │ └─ metaverse.tsx
│ │ ├─ nav.tsx
│ │ ├─ notification.tsx
│ │ ├─ vendingMachine
│ │ │ ├─ card.tsx
│ │ │ ├─ content.tsx
│ │ │ └─ modal.tsx
│ │ └─ vendingmachine.tsx
│ ├─ counsel
│ │ ├─ components.md
│ │ ├─ counselorDetail
│ │ │ ├─ buttonBox.tsx
│ │ │ ├─ counselorInfo.tsx
│ │ │ ├─ createChat.tsx
│ │ │ ├─ profileBox.tsx
│ │ │ ├─ review.tsx
│ │ │ └─ reviewList.tsx
│ │ └─ counselorList
│ │ ├─ counselor.tsx
│ │ ├─ counselors.tsx
│ │ ├─ createChat.tsx
│ │ ├─ filter.tsx
│ │ └─ searchBox.tsx
│ ├─ counselling
│ │ ├─ Chat.tsx
│ │ ├─ Controls.tsx
│ │ ├─ Form.tsx
│ │ ├─ Session.tsx
│ │ └─ Video.tsx
│ ├─ home
│ │ ├─ articles.tsx
│ │ ├─ banners
│ │ │ ├─ bamboo.tsx
│ │ │ └─ metaverse.tsx
│ │ ├─ carousel.tsx
│ │ ├─ components.md
│ │ ├─ counsel.tsx
│ │ └─ nav.tsx
│ └─ reservation
│ └─ reservationFirst
│ └─ buttonBox.tsx
├─ custom.d.ts
├─ index.tsx
├─ routes
│ ├─ article
│ │ ├─ articleCreate.tsx
│ │ ├─ articleDetail.tsx
│ │ ├─ articleList.tsx
│ │ └─ articleUpdate.tsx
│ ├─ auth
│ │ └─ profile.tsx
│ ├─ bamboo
│ │ └─ bamboo.tsx
│ ├─ counsel
│ │ ├─ counselEvaluation.tsx
│ │ ├─ counselingClient.tsx
│ │ ├─ counselingCounselor.tsx
│ │ ├─ counselingNotice.tsx
│ │ ├─ counselorDetail.tsx
│ │ ├─ counselorList.tsx
│ │ └─ reservation
│ │ ├─ reservationConfirm.tsx
│ │ ├─ reservationFirst.tsx
│ │ └─ reservationSecond.tsx
│ ├─ counselling
│ │ ├─ counselling.tsx
│ │ └─ review.tsx
│ ├─ etc
│ │ ├─ calendar.tsx
│ │ ├─ loading.tsx
│ │ ├─ notFound.tsx
│ │ └─ selfTest.tsx
│ ├─ home
│ │ └─ home.tsx
│ └─ test.tsx
├─ store
│ ├─ article
│ │ ├─ boardSlice.ts
│ │ ├─ communitySlice.ts
│ │ ├─ gatherSlice.ts
│ │ └─ overcomingSlice.ts
│ ├─ auth
│ │ ├─ authTypes.ts
│ │ ├─ profileSlice.ts
│ │ ├─ signupFocusSlice.ts
│ │ ├─ signupFormDataSlice.ts
│ │ ├─ signupProcedure.ts
│ │ └─ userSlice.ts
│ ├─ axiosInstance.ts
│ ├─ chat
│ │ └─ chatSlice.ts
│ ├─ common
│ │ └─ loginModalSlice.ts
│ ├─ counsel
│ │ ├─ counselSlice.ts
│ │ ├─ counselorFilter.ts
│ │ └─ reserveSlice.ts
│ ├─ etc
│ │ ├─ capsuleSlice.ts
│ │ └─ maletgoSlice.ts
│ ├─ sessionStorage.ts
│ └─ store.ts
└─ styles
├─ article
│ ├─ article.ts
│ ├─ articleDetail
│ │ ├─ comment.ts
│ │ ├─ commentList.ts
│ │ ├─ content.ts
│ │ ├─ createComment.ts
│ │ ├─ search.ts
│ │ └─ title.ts
│ ├─ articleList.ts
│ ├─ articleMenu.ts
│ ├─ createForm.ts
│ ├─ filter.ts
│ ├─ grid.ts
│ ├─ recommendedArticle.ts
│ └─ searchBox.ts
├─ auth
│ ├─ login.tsx
│ ├─ loginEmail.tsx
│ ├─ profile
│ │ ├─ currentMenu.ts
│ │ ├─ grid.ts
│ │ ├─ menu.ts
│ │ ├─ myArticle.ts
│ │ ├─ myCounsel.ts
│ │ ├─ myGathering.ts
│ │ ├─ myInfo.ts
│ │ ├─ myReservation.ts
│ │ ├─ myReview.ts
│ │ ├─ myScrab.ts
│ │ └─ passwordChage.ts
│ └─ signup
│ ├─ certification.ts
│ ├─ client
│ │ └─ clientForm.ts
│ ├─ complete.tsx
│ ├─ counselor
│ │ └─ counselorForm.ts
│ ├─ emailCertification.ts
│ ├─ selection
│ │ ├─ selection.tsx
│ │ └─ selectionText.tsx
│ └─ signup.tsx
├─ bamboo
│ ├─ filter.ts
│ ├─ grid.ts
│ ├─ message.ts
│ ├─ messageList.ts
│ ├─ modal.ts
│ └─ subject.ts
├─ chat
│ ├─ chatting.ts
│ └─ list.ts
├─ common
│ ├─ banner.ts
│ ├─ nav.tsx
│ ├─ notification.tsx
│ ├─ vendingMachine
│ │ ├─ card.ts
│ │ ├─ content.ts
│ │ └─ modal.ts
│ └─ vendingmachine.tsx
├─ counsel
│ ├─ buttonBox.ts
│ ├─ counselor.ts
│ ├─ counselorInfo.ts
│ ├─ counselors.ts
│ ├─ filterBox.ts
│ ├─ grid.ts
│ ├─ profileBox.ts
│ ├─ review.ts
│ ├─ reviewList.ts
│ └─ searchBox.ts
├─ counselling
│ ├─ Chat.ts
│ ├─ Controls.ts
│ ├─ Counselling.ts
│ ├─ Form.ts
│ ├─ Session.ts
│ ├─ Video.ts
│ └─ review.ts
├─ etc
│ ├─ calendar.ts
│ ├─ loading.tsx
│ └─ notFound.ts
├─ grid.ts
├─ grid.tsx
├─ home
│ ├─ articles.ts
│ ├─ articles.tsx
│ ├─ banner.ts
│ ├─ banner.tsx
│ ├─ carousel.ts
│ ├─ carousel.tsx
│ ├─ counsel.ts
│ ├─ counsel.tsx
│ ├─ grid.ts
│ ├─ nav.ts
│ └─ nav.tsx
└─ index.css