파리지옥 템플릿에 사용될 Rss Reader를 만드는 저장소입니다.
- 배포 URL :
- 진행기간 : 2023. 11 ~ 진행 중
- Postman Publish Link
- 팀 블로그
RSS-Reader는 사용자가 여러 블로그 플랫폼을 구독하여 원하는 Feed를 볼 수 있고 서로 반응을 나눌 수 있는 플랫폼 서비스입니다. 실제로 굉장히 잘 구축되어있는 웹서비스 feedly 를 레퍼런스로 우리가 직접 쓰기 위한 작은 서비스를 구현하고 싶어 여러 기능을 구현 했습니다. 프로젝트 소개 글
- 깃허브 로그인을 통해 로그인할 수 있습니다.
- 회원은 폴더 만들고, 삭제, 수정, 조회할 수 있습니다.
- 회원은 폴더에 블로그를 구독 할 수 있습니다.
- 개인 폴더, 공유 폴더 두 가지가 있습니다.
- 사용자는 북마크를 추가, 삭제, 수정, 조회할 수 있습니다.
- 사용자는 공유 폴더 안에 있는 포스트만 리액션을 추가, 삭제할 수 있습니다.
- 사용자가 구독한 폴더에 새 글이 올라오면 알림을 받을 수 있습니다.
- Rss-Reader는 Scheduler을 통한 구독을 기준으로 포스트 크롤링 작업을 합니다.
요구사항 애플리케이션을 구축하고 실행하려면 다음이 필요합니다.
- Java 17
- Spring Boot 3.0.0 이상
설치
$ git clone https://github.com/FlytrapHub/RSS-Reader.git
$ cd rss-reader
- 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
- 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: 응답
jinny-l | new-pow | crtEvent | leegyeongwhan | jaea-kim |