Skip to content

파리지옥 템플릿에 사용될 Rss Reader를 만드는 저장소입니다.

Notifications You must be signed in to change notification settings

FlytrapHub/RSS-Reader

Repository files navigation

RSS-Reader

파리지옥 템플릿에 사용될 Rss Reader를 만드는 저장소입니다.


프로젝트 소개

RSS-Reader는 사용자가 여러 블로그 플랫폼을 구독하여 원하는 Feed를 볼 수 있고 서로 반응을 나눌 수 있는 플랫폼 서비스입니다. 실제로 굉장히 잘 구축되어있는 웹서비스 feedly 를 레퍼런스로 우리가 직접 쓰기 위한 작은 서비스를 구현하고 싶어 여러 기능을 구현 했습니다. 프로젝트 소개 글

사용법

스크린 샷

게시글 보기

게시글 보기

폴더 추가

폴더 추가

RSS 문서 및 멤버 추가

블로그추가멤버추가

로그인, 로그아웃

로그인로그아웃


기술스택, 및 개발환경

JavaSpringBootSpringDataJPA MySQL
AWS EC2AWS S3AWS RDS DockerDocker Compose NginX Github Action


프로젝트 주요 기능

  • 깃허브 로그인을 통해 로그인할 수 있습니다.
  • 회원은 폴더 만들고, 삭제, 수정, 조회할 수 있습니다.
  • 회원은 폴더에 블로그를 구독 할 수 있습니다.
    • 개인 폴더, 공유 폴더 두 가지가 있습니다.
  • 사용자는 북마크를 추가, 삭제, 수정, 조회할 수 있습니다.
  • 사용자는 공유 폴더 안에 있는 포스트만 리액션을 추가, 삭제할 수 있습니다.
  • 사용자가 구독한 폴더에 새 글이 올라오면 알림을 받을 수 있습니다.
  • Rss-Reader는 Scheduler을 통한 구독을 기준으로 포스트 크롤링 작업을 합니다.

인프라 구조

Image from f3e8d6dfc18c3bd2, page 21


프로젝트 설치 및 실행 방법

요구사항 애플리케이션을 구축하고 실행하려면 다음이 필요합니다.

  • Java 17
  • Spring Boot 3.0.0 이상

설치

$ git clone https://github.com/FlytrapHub/RSS-Reader.git
$ cd rss-reader

프로젝트 구조

ERD 다이어 그램

img


주요 서비스 시퀀스 다이어 그램

  • Post 수집 서비스 시퀀스 다이어그램
sequenceDiagram
  participant Schedule
  participant PostCollectService
  participant RssPostParser
  participant RssItemResource
  participant PostEntity
  participant PostEntityJpaRepository

  Schedule ->> PostCollectService: collectPosts(): 10분마다 게시글 수집
  activate PostCollectService
  loop 저장된 구독 블로그 수 만큼 반복
    PostCollectService ->>+ RssPostParser: parseRssDocument(): RSS XML 문서 파싱
    loop 파싱한 블로그 포스트 수 만큼 반복
      RssPostParser ->>+ RssItemResource: <<create>>
      RssItemResource -->>- RssPostParser: 파싱 결과 생성: RssItemResource
    end
    RssPostParser -->>- PostCollectService: 파싱 결과 리스트 생성: List<RssItemResource>
    loop 파싱한 블로그 포스트 수 만큼 반복
      PostCollectService ->>+ PostEntity: <<create>>
      PostEntity -->>- PostCollectService: DB 저장을 위한 엔티티 생성: PostEntity
      PostCollectService ->>+ PostEntityJpaRepository: existsByGuidAndSubscribe(): 파싱한 게시글이 존재하는지 확인
      PostEntityJpaRepository -->>- PostCollectService: true/false 반환
      alt 게시글이 존재하지 않으면
        PostCollectService ->> PostEntityJpaRepository: save(): DB에 저장
      end
    end
  end
  deactivate PostCollectService
Loading
  • Login 서비스 시퀀스 다이어그램
sequenceDiagram
    autonumber
    actor A as client
    participant B as 서버 A,B,C
    participant C as 세션 서버(redis)
    A->>B: 요청
		B->>C: 세션 아이디 요청
		C->>C: 세션 아이디 발행
		C->>B: 세션 정보 응답(Member DTO)
		B->>A: 응답
Loading

팀원 소개

jinny-l new-pow crtEvent leegyeongwhan jaea-kim


기타


About

파리지옥 템플릿에 사용될 Rss Reader를 만드는 저장소입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages