Skip to content

modern-agile-team/Menbosha-back

Repository files navigation

"멘보샤처럼 맛있게, 당신만의 멘토링”

멘보샤는 누구나 자유롭게 멘토링을 하거나 받을 수 있는 커뮤니티 입니다.

1대1 실시간 채팅과 리뷰 시스템을 기반으로 쾌적한 멘토링 서비스를 제공합니다 😀

멘보샤 로고

페이지 소개

메인 로그인(소셜) 멘토 찾기 멘토 프로필
image image image image
멘보샤 홈페이지 소셜 로그인 모달 멘토들의 목록 페이지 멘토의 프로필을 열람하는 페이지
멘토 게시판 멘토 게시글 도와주세요 게시판 도와주세요 게시글
image image image image
멘토들의 정보 공유 페이지 멘토들이 쓴 게시글 멘티들의 도와주세요 게시글 리스트 도움이 필요한 사람의 게시글
게시글 작성 신고하기 리뷰하기 채팅페이지
image image image image
멘토 게시글과 도와주세요 게시글을 작성 가능 유저 신고를 위한 모달 채팅 후 후기 작성 모달, 1:1 채팅 페이지
나의 프로필 나의 랭크 나의 후기 나의 기록
image image image image
본인 프로필 확인과 편집 페이지 본인의 랭크와 뱃지 확인 페이지 본인이 받은 후기 확인 페이지 본인이 쓴 게시글 확인 페이지
마이 페이지 고객지원 자주하는 질문 회원탈퇴
image image image image
마이페이지를 한 눈에 보는 페이지 웹사이트 고객지원 페이지 웹 사이트의 궁금한 점을 보는 페이지 회원탈퇴 페이지

🗓️ 개발 기간

  • 23.12.01 ~ 24.03.17 - 개발
  • 24.03.18 ~ 24.01.01 - 베타테스트
  • 24.01.01 ~ 현재 베포중
  • 멘보샤 홈페이지


🧑‍💻 멤버구성




🕹️ Technology Stack

Frontend

Backend

Library



Database

CI/CD

Infrastructure


Cooperation





📝 개발 논의 문서 및 컨벤션

커밋 전략

커밋 메시지 설명
feat 새로운 기능 추가
modify 기능 수정
fix 버그 수정
docs 문서 수정
style 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
refactor 코드 리팩토링
test 테스트 코드, 리팩토링 테스트 코드 추가
chore 빌드 업무 수정, 패키지 매니저 수정
conflict 충돌 해결
publisher 페이지 퍼블리싱

ex ) feat(#이슈번호): 커밋 내용


git flow

  • main : Production 서버 배포 브랜치
  • develop : Development 서버 배포 브랜치
  • feat/#(이슈번호)/기능이름 : 새로운 기능 개발 브랜치


🖼️ ERD (Entity Relationship Diagram)

ERD



🛠️ 프로젝트 아키텍처

아키텍처

📋 API 명세서

swagger

swagger

팀 협업방식

스크럼

  • 매일 아침 10시에 스크럼을 진행하여 어제 한 일, 오늘 할 일, 이슈사항 등을 공유합니다.



스프린트

  • 금요일 격주로 스프린트를 통해 현재까지의 팀 진행도를 파악하고 앞으로 2주동안의 계획을 세웁니다.



회고

  • 스프린트가 끝난 후 팀원들과 함께 회고를 진행합니다.
    3L (Liked, Learned, Lacked) 방식으로 회고를 진행하며 스프린트 기간동안 좋았던 점, 배운 점, 부족했던 점을 기록하고 공유합니다.



테크톡

  • 2주에 한번, 각자 공부했던 내용을 팀원들과 공유합니다.

기여

정비호
  • RDBMS 에 비해 Scale-out이 용이한 NoSQL(MongoDB)을 채팅 데이터 저장을 위한 DB로 도입
  • Socket.io를 이용한 1:1 실시간 채팅 기능 구현
  • SSE를 이용한 실시간 채팅 알람 구현
  • 기존의 RESTful 하지 못한 Pagination 형식의 리소스 전체 조회 API들 수정
  • MySQLFullText Search를 이용한 검색 기능 구현
  • TypeORM을 이용한 DB Migration 시스템화
  • development 환경 서버 인프라 구성
  • Admin 전용 API 개발
  • 멘토 리뷰 엔티티 설계 및 API 개발
  • Event 패턴을 이용한 TypeORMSubscriber 기능을 적용해 기존에 서비스 레이어에서 처리하던 API에 대한 추가 로직들을 분리 시켜서 코드의 가독성 상승
  • 기존 jsonwebtoken 라이브러리만을 이용하여 처리하던 authorization 로직을 NestJS에서 제공하는 @nestjs/passport, @nestjs/passport 라이브러리를 도입 시켜 코드 길이 감소
  • 게시글 좋아요 API 및 좋아요를 이용한 인기 게시글 기능 구현
이승우
  • 회원 뱃지 설계 및 획득 API 개발
  • 멘토게시판, 멘티게시판 API 개발
  • 게시판 별 댓글 API 개발
  • 웹 서버 베포 및 DockerGitHub Action을 이용한 CI/CD 구현
  • hostingKR 을 통한 도메인 구매, NginxCertbot, AWS Route 53을 이용한 https 적용
  • AWS S3를 이용한 이미지 저장,처리. 다중 이미지 업로드와 단일 이미지 업로드, 수정 기능 구현
  • 게시판 API와 댓글 API에 Pagenation을 이용하여 정렬
  • 개발 소스코드 이미지 Docker를 통한 이미지화, Docker-compose를 이용한 소스코드 이미지, nginx-certbot이미지, Redis이미지 등 컨테이너 관리
박준혁
  • 간편한 회원가입 및 로그인을 위해 OAuth를 이용한 소셜 로그인 구현 (Naver, Kakao, Google)
  • 사용자 인증/인가를 위한 JWT 토큰 발급 및 검증 로직 구현
  • 사용자 인증/인가 처리를 간단하게 하기 위해 Passport 라이브러리를 이용하여 Custom AuthGuard 구현
  • 유저 관련 API 개발 (회원가입, 로그인, 회원정보 수정, 회원탈퇴)
  • 토큰에서 유저의 userId를 추출하여 유저 정보를 가져오는 커스텀 데코레이터 구현
  • Refresh Token을 Cookie에 담아 보안성을 높이고 클라이언트에서 받은 쿠키를 파싱하여 Access Token을 재발급하는 로직 구현
  • 유저 JWT 토큰의 인증/인가 처리 속도 향상을 위해 Redis 사용
  • Redis를 Docker에서 실행하기 때문에 Docker가 종료되면 데이터가 사라지는 문제를 해결하기 위해 RDB (snapshot)방식을 이용해 데이터 영속성을 확보
  • count API를 통해 유저의 사이트 내 기여도를 측정하고, 1주일마다 인기 멘토를 선정하는 기능 구현 (@nestjs/schedule 라이브러리를 이용해 자동화)

About

모던애자일 6기 멘보샤 백엔드입니다

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages