Skip to content

mimo626/danew_be

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

157 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DANEW (다뉴) 📰 맞춤형 뉴스 추천 및 동기부여 앱

📱 앱 소개 DANEW (다뉴) 는 바쁜 현대 사회의 청년들에게 세상의 흐름을 빠르고 정확하게 전달하여, 사회적 관심도를 높이고 건강한 동기부여를 제공하기 위해 개발된 맞춤형 뉴스 추천 애플리케이션입니다. AI가 요약해주는 트렌드 뉴스를 통해 사용자는 시간을 절약하며 핵심 정보를 얻을 수 있으며, 사용자가 직접 관심사를 설정하고 관리하는 기능을 통해 개인에게 꼭 필요한 맞춤형 콘텐츠를 제공받습니다.

🎯 핵심 타겟

  • 세상의 흐름과 트렌드를 빠르게 파악하고 싶은 청년
  • 시사 상식과 사회 이슈에 대한 관심으로 성장의 동기를 얻고 싶은 학생 및 취준생

✨ 주요 기능

  1. 맞춤형 뉴스 피드: 사용자가 설정한 관심 키워드를 기반으로 관련 뉴스를 추천합니다.

  2. AI 뉴스 요약: 바쁜 사용자를 위해 AI가 뉴스의 핵심 내용을 요약하여 제공합니다.

  3. 관심 키워드 직접 생성: 제한된 선택지에서 벗어나, 사용자가 원하는 키워드를 직접 생성하고 관리할 수 있습니다.

  4. 트렌드에 맞는 뉴스 스크롤: 스크롤하며 편리하게 새 뉴스를 볼 수 있습니다.

  5. 일기 기록: 매일 루틴처럼 뉴스를 보고 느낀 점, 일기를 작성해 동기부여를 얻을 수 있습니다.

  6. 원본 기사 보기 및 공유: 요약된 내용뿐만 아니라 원본 보기 버튼을 통해 기사 전문을 확인할 수 있으며, 공유하기 기능으로 타인과 소통할 수 있습니다.

  7. 토큰 기반 로그인: 간편한 로그인 및 자동 로그인 유지를 통해 사용자 편의성을 높였습니다.

🛠️ 적용 기술 및 라이브러리 Language: Java

Framework: Spring Boot

Database: MySQL

ORM: JPA

Authentication: Spring Security + JWT

API: RESTful API

Deployment: AWS

Version Control: Github

Design: Figma

🔧 기술적 문제 해결 및 성장 (Technical Challenges) 프로젝트를 진행하며 마주쳤던 기술적 문제와 이를 해결하며 배운 점입니다.

  1. 뉴스 피드 무한 스크롤 시 API 과부하 문제 문제 상황: 단순 스크롤 감지 로직으로 인해, 사용자가 스크롤을 내릴 때 목록의 끝에 도달하는 동안 여러 번의 API 호출이 중복으로 발생했습니다. 이는 서버에 불필요한 과부하를 초래하고 앱 성능을 저하했습니다.

해결 방안: Paging3 라이브러리를 도입했습니다. 한 번에 모든 데이터를 가져오는 것이 아닌, 페이지 단위로 데이터를 분할하여 로드하도록 설계했습니다. Paging3의 내장된 로직을 활용하여 사용자가 목록의 끝에 도달했을 때만 다음 페이지 데이터를 자동으로 요청하도록 구현, 불필요한 네트워크 트래픽을 제거하고 부드러운 스크롤 경험을 제공했습니다.

  1. 로그인 유지 및 세션 관리 효율화 문제 상황: 앱 실행 시마다 서버에 로그인 세션 정보를 요청하여 로그인 상태를 확인하는 방식은, 불필요한 로딩 시간을 발생시켰습니다. 또한 백엔드와 앱 중 어디서 이 상태를 관리해야 할지 책임이 모호했습니다.

해결 방안: 서버로부터 로그인 시 발급받은 Access/Refresh Token을 앱 내부(Room DB) 에 저장하는 방식을 채택했습니다. 앱 실행 시, 로컬에 저장된 토큰의 유효성을 먼저 검사하여 로그인/비로그인 상태를 즉각적으로 구분했습니다. 이를 통해 불필요한 서버 요청을 줄여 로딩 속도를 단축시켰고, 클라이언트 단에서 상태를 명확하게 관리할 수 있게 되었습니다.

  1. 기능 중심의 재사용 가능한 UI 설계 학습한 점: '화면'이 아닌 '기능'을 기준으로 설계하는 것의 중요성을 배웠습니다.

적용: 예를 들어, '메인 화면의 추천 뉴스 리스트'와 '검색 결과 뉴스 리스트'는 UI가 노출되는 화면은 다르지만, '뉴스 목록을 보여준다'는 핵심 기능은 동일했습니다. Jetpack Compose의 장점을 살려, 이 '뉴스 목록' 기능을 하나의 재사용 가능한 컴포저블(Composable) 로 모듈화했습니다. 그 결과, 유사한 기능을 다른 화면에서 구현할 때도 해당 컴포저블을 재사용함으로써 코드 중복을 획기적으로 줄이고, 유지보수성을 크게 향상시킬 수 있었습니다.

About

다뉴: 맞춤형 뉴스 추천 및 동기부여 제공 어플의 서버(백엔드)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages