Skip to content

BuD2023/BuDBackend

Repository files navigation

BuDBackend

프로젝트 설명

🌱 꿈꾸는 모든 개발자분들의 개발 놀이터, 커뮤니티 플랫폼

프로젝트 기획

🥜 커밋으로 하나되는 우리들의 개발 놀이터. 하루하루 커밋하며 나무를 키워보세요!

🌱 경쟁과 함께, 빠른 변화들에 적응하며 달려야 하는 우리의 현실을 잠시 벗어나, 나만의 숲을 가꾸고 친구들과 함께 공유해보세요!

🌷 요즘 핫한 개발 트렌드는 뭐야? 최신 IT뉴스와 정보도 놓치지 말고 챙기세요!

🎄 우리들의 좌충우돌 개발 이야기, 현업 이야기를 함께 나누고 공유해보아요!

프로젝트 아키텍쳐

ERD

주요 기능

  1. 검색 및 필터 기능
  • 사용자가 검색을 할 때, 보다 편하고 원하는 결과를 출력할 수 있도록 검색 기능을 제공
  • QueryDSL 사용
  1. 뉴스
  • 개발 커뮤니티의 목적에 맞게 서비스를 사용하는 유저들에게 개발 관련 정보를 쉽게 접할 수 있게 뉴스 제공
  • 네이버 검색 API
  • Jsoup을 이용한 크롤링
  1. 커뮤니티
  • 유저들이 많은 정보를 접할 수 있고 서로 궁금증을 해결할 수 있는 하나의 공간을 제공
  • 게시글 조회 , 삭제 , 팔로우 , 팔로워 , 좋아요 , 핀 등 다양한 기능 구현
  1. 유저 간 실시간 채팅
  • 실시간으로 다수의 유저가 채팅에 참여 가능하며 실시간으로 보여짐
  • Web socket : 실시간 데이터 송수신을 위해 웹소켓을 활용 커스텀 핸들러를 이용해 SUBSCRIBE, DISCONNECT 시 유저를 식별
  • Redis as Real-time data store : 인메모리 DB를 활용해 빠르게 채팅에 참여하는 유저를 저장하고 가져옴
  • Redis as Streaming & messaging : 단일 큐로 동작하는 레디스 메세지 컨테이너를 활용하여 클라이언트간 채팅을 중개합니다. 다수간 채팅 서비스에 생길 수 있는 위험을 줄이고 안정성을 보완
  • STOMP : WebSocket에 대한 불필요한 구현을 줄여, 명확하고 쉽게 구현
  1. 이미지 업로드
  • 유저 프로필과 게시글 및 답변에 필요한 이미지 업로드 시에 이미지를 편하게 관리하고 이용하면서 용량을 효율적으로 관리하기 위해 S3 스토리지 서비스 이용
  • AWS S3에 Bucket을 생성하고 각 도메인별 폴더 ㅡ 날짜별 폴더 ㅡ 이미지파일로 생성되게끔하여 관리
  • 이미지 파일의 이름은 UUID + 현재 일시(yyyyMMddHHmmssSSS)를 이용하여 중복되지 않도록 함
  1. 실시간 알림 기능
  • 누군가가 나를 팔로우 했을 때, 게시글에 답변이 달렸을 때 등의 이벤트가 발생하였을 때 실시간 알림 발
  1. Github Oauth 소셜 로그인
  • 사용자 편의성 및 보안을 위한 Github OAuth 2.0 소셜 로그인 서비스 구현
  1. JWT를 이용한 사용자 인증
  • 사용자 정보를 보안 공격(CSRF, XSS, Hijacking 등)에 대해 안전하도록 보관 및 유지하기 위해 JWT 토큰 인증을 설계
  • JWT Access Token을 생성할 시 Refresh Token을 같이 생성해 서버 측에 저장하고, API를 호출하기 전에 토큰이 만료되었는지 검사 후 만료되었으면 서버에 저장된 Refresh Token을 재차 검사해 유효할 시 Access Token을 재발급하는 로직을 구현하여 보안성을 강화하면서도 인증을 다시 하지 않아도 되도록 편의성을 갖추도록 구현
  1. Github API를 이용한 커밋 기록 조회
  • 사용자에게 한 주간의 커밋 수 , 연속 커밋 수 등을 보여주고 자신의 커밋 기록을 한 눈에 볼 수 있게 도와주고 레벨을 올리며 느낄 수 있는 즐거움을 제공
  • 깃헙 커밋 정보를 가져오는 데에는 Github API for Java 라이브러리를 사용하는 방법과 Github REST API를 사용하는 방법이 있었는데 Github API를 이용한 방법이 더 명시적이고 사 용하기 편리했기 때문에 선택
  • 깃헙 Oauth 액세스 토큰을 이용해 깃헙과 연결하고 유저의 정보를 이용해 유저의 커밋 정보를 가져옴

노션 링크

https://statuesque-room-ee4.notion.site/BuD-bc8bae4d6bfd4032b5f92c6a13aef785

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages