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