Skip to content

Repository files navigation

Menteetor

English Version

  • 프로젝트 기간 : 24.01 ~ 24.08
  • 프로젝트 인원 : 4명
    • Back-End : 2명
    • Front-End
      • Android : 1명
      • Web : 1명

프로젝트 기획의도

대학교에 다니면서 학업에 관련하여 모르는 부분이나 궁금한 점이 있을 때 도움을 받을 사람을 찾기 어려운 경우가 많았고 이로 인해 같은 단과 내에서 멘토를 구할 수 있으면 학교생활을 하는데에 있어서 많은 도움을 받을 수 있을 것이라 생각했습니다. 현재 캠퍼스 내에서 소통하는 커뮤니티 앱은 존재하지만, 학업과 관련된 전문적인 정보를 얻는데는 한계점이 존재한다고 판단하였습니다. 간편하고 신속하게 글을 올려 도움을 받을 수 있는 전문적인 커뮤니티가 필요하다고 느꼈고, 선배나 졸업생이 자신이 알고 있는 지식을 후배들과 소통하는 플랫폼이 있었으면 좋겠다는 생각도 들었습니다. 또한, 본인이 다니는 학교에 국한되지 않고 같은 전공을 가진 다른 학교의 학생들과도 교류할 수 있다면 성장 과정에 큰 도움이 될 것 같아 해당 프로젝트를 기획하게 되었습니다.


사용 기술

  • Spring Boot, Spring security, JPA, MySQL, Redis, Elastic Search, WebSocket
  • AWS(EC2, RDS, S3), Docker, Nginx, FCM

프로젝트 기능

  • 이용자는 모든 학교별 / 자신의 학교별에 따라 서비스를 이용할 수 있다.

  • 이용자가 멘토가 되길 원할 경우 멘티 모집에 대한 과목, 조건등이 포함된 글을 작성한다.

  • 이용자가 멘티 모집 글에 신청 양식을 작성하고, 멘토는 신청 요청이 온 글을 보고 매칭여부를 결정한다.

  • 매칭이 성사될 경우 실시간 채팅을 통해 멘토와 멘티간의 실시간 상담이 이어진다.

  • 이용자는 질문 게시판을 통해 질문글을 올릴수 있으며 댓글을 통해 소통을 할 수 있다.

  • 이용자는 멘티 모집 글에 신청 양식을 작성한다.

  • 멘토는 신청 요청에 대한 세부 사항을 보고 매칭여부를 결정한다.

  • 매칭이 성사될 경우 실시간 채팅을 통해 멘토와 멘티간의 실시간 상담이 이어진다.

  • 매칭이 성사된 후 채팅 진행 중 멘티는 멘토에게 상담시간 연장을 신청할 수 있다.

  • 모든 이용자는 질문 게시판을 통해 질문 글을 올릴수 있으며 댓글을 통해 소통을 할 수 있다.

  • 모든 이용자는 멘토 요청 게시판을 통해 이러한 멘토가 필요할 것 같다 라는 글을 올릴 수 있으며 댓글을 통해 소통을 할 수 있다.


세부 기능

  • 🔐 계정

    • 관리자 계정

    • 회원가입

    • 대학교 인증

    • 로그인/로그아웃

    • 유효성/토큰

    • 자동 로그인

    • 비밀번호 변경

  • 🏡 메인 게시판

    • 멘티 모집 글 양식에 맞게 작성

    • 게시글 조회 후 멘토링 신청

    • 즐겨찾기

    • 게시판 필터별로 목록 조회 (검색, 즐겨찾기, 날짜, 카테고리, 학교별)

    • 게시판 목록에서 각 게시물에 대한 대표 이미지 보기

    • 무한 스크롤

    • 인기 키워드 제공

  • 👤 프로필

    • 프로필 사진 관리

    • 개인정보 관리/수정

    • 자신이 쓴 글 목록

    • 신청/매칭 목록

    • 알림 목록

    • 요청온 멘토링에 대한 수락 및 거절 처리

  • 💬 채팅방

    • 멘토, 멘티 매칭 시 실시간 채팅

    • 채팅방 목록

    • 각 채팅방에 대한 읽지 않는 메세지 갯수 실시간 카운트 / 조회 시 초기화

    • 채팅 읽음 처리

    • 텍스트 이외에 이미지, 파일 등 전송

    • 채팅방 시간 연장 신청 (중복 연장 신청x)

    • 채팅방 시간 연장 수락/거절

  • 🏡 질문/요청 게시판

    • 글 작성

    • 좋아요

    • 댓글

    • 게시판 필터별로 목록 조회

    • 무한 스크롤

    • 주간 인기 게시글 목록

  • 🔔 알림

    • 채팅, 멘토랑 신청/수락/거절 등에 대한 푸시 알림

    • 실시간 알림 카운트 / 조회 시 초기화

  • 💸 결제(예정)

    • 코인 충전
    • 코인 교환
    • 코인 환전

개발과정

  • 각 API 응답을 통합적으로 처리할 수 있는 공통 클래스를 구현

  • 반복적이고 무분별한 try-catch 구문을 제거하고 공통 예외 처리 방식을 적용하여 코드 가독성을 향상

  • 토큰 탈취를 방지하기 위해 블랙리스트 토큰 기능을 도입

  • 백그라운드 및 양방향 통신을 지원하는 FCM을 사용해 실시간 푸시 알림

  • 사용자의 실시간 접속 여부를 확인하기 위해 ChannelInterceptor 인터페이스를 활용해 '채팅 읽음 기능'을 구현

  • 채팅 진행 시 채팅방과 사용자 정보를 웹소켓 세션을 통해 조회하여 성능을 최적화

  • 초기에는 이미지를 Base64로 직렬화하여 웹소켓으로 전송했으나, 파일 용량 제한 및 다양한 파일 형식 처리의 비효율성을 해결하기 위해 HTTP의 multipart/form-data 형식으로 전송 방식을 변경

    • 메시지는 웹소켓을, 파일은 HTTP 프로토콜을 통해 전송하도록 분리
  • Nginx 리버스 프록시 설정으로 하나의 도메인에서 사용자와 클라이언트가 사용하는 API를 분리하여 효율적인 접근성을 제공

  • 자주 조회되는 데이터를 Redis에 캐싱하여 데이터 저장 및 조회 성능을 향상

  • ElasticSearch를 도입하여 대량 데이터의 검색 속도를 최적화


Architecture

image


ERD

image


About

Service that matches mentors and mentees within a university

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages