1. 프로젝트 개요
- 흩어진 뉴스를 한 곳에, 관심 있는 주제만 모아볼 수 있는 플랫폼
- **모뉴(MoNew)**는 다양한 뉴스 출처를 통합하여 관심사 기반으로 뉴스를 저장하는 뉴스 통합 관리 플랫폼으로, 관심 있는 주제의 기사가 등록되면 실시간 알림을 받고, 댓글과 좋아요를 통해 다른 사용자와 의견을 나눌 수 있는 소셜 기능도 함께 제공된다.
2. 담당한 작업
- 관심사를 이름과 키워드를 입력하여 등록하는 기능을 구현했다.
- 관심사의 이름이 80% 이상 유사하면 등록할 수 없도록 설계했다.
- 관심사 이름의 유사도 기준을 확립했다.
- Levenshtein 알고리즘을 사용하여 유사도 계산을 했다.
- 관심사의 키워드가 없으면 등록할 수 없도록 로직을 설계했다.
- 키워드는 여러개 등록이 가능하도록 구현했다.
- 관심사 목록 조회 기능을 구현했다.
- 관심사 목록을 이름/구독자수 기준으로 오름차순/내림차순 정렬이 가능하도록 커서 페이지네이션을 도입하여 구현했다.
- 관심사의 키워드를 수정할 수 있는 기능을 구현했다.
- 관심사의 이름은 수정할 수 없도록 로직을 설계했다.
- 관심사의 id값을 받아와 특정 관심사의 키워드를 수정할 수 있도록 구현했다.
- 특정 관심사를 물리 삭제할 수 있는 기능을 구현했다.
- 관심사의 id값을 받아와 특정 관심사를 물리적으로 삭제할 수 있도록 구현했다.
- 사용자가 관심사를 구독할 수 있는 기능을 구현했다.
- 사용자의 id값과 관심사의 id값을 통해 특정 관심사를 구독/구독취소할 수 있도록 설계했다.
3. 기술적 성과
Backend
- Java 17
- Spring Boot
- Spring Data JPA
- Spring Batch
- WebClient
- QueryDSL
- MapStruct
- Swagger