Skip to content

settle54/EveryMoment

 
 

Repository files navigation

Every Moment ⏰

하루를 자동으로 기록하고 공유하는 위치 기반 소셜 다이어리 📝

image


📌 프로젝트 소개

바쁜 일상 속에서 하루를 되짚으며 일기를 꾸준히 쓰는 것은 쉽지 않은 일입니다.
Every Moment는 위치 데이터를 기반으로 사용자의 하루를 자동으로 기록하고 친구들과 공유할 수 있는 소셜 다이어리 서비스입니다.

핵심 기능

  • 📍 위치 기반 자동 기록: 15분 이상 머문 장소 자동 감지 및 일기로 기록
  • 🤝 소셜 다이어리: 친구들과 일기 공유 및 소통
  • 🔍 스마트 검색: 다양한 필터링 옵션으로 원하는 일기 빠른 검색
  • 🔔 실시간 알림: 친구와의 상호작용(좋아요, 댓글, 친구 요청 등)과 새로운 장소 감지를 실시간으로 알림

🎥 시연 영상

default.mp4

📌 페이지별 기능 소개

일기 관련 기능

홈화면-
자동 일기 기록1
홈화면-
자동 일기 기록2
홈화면-
수동 일기 기록
홈화면-
일기 편집 · 읽기
15분동안 머문 장소를
자동으로 기록
알림을 통해 사용자에게
일기 상기시키고
간단한 이모지로 감정표현
사용자 수기 일기 작성 초안 일기를 바탕으로
사진 · 카테고리 · 상세일기
추가가능
  • 홈화면의 편집 버튼을 통해 해당 일기의 장소명을 가장 가까운 장소 외 다른 후보 장소로 변경할 수 있습니다.
  • 홈화면의 북마크 버튼을 사용해 특별히 보관할 수 있으며, 홈화면의 공유 버튼을 통해 친구와 공유하거나 삭제 버튼으로 쉽게 삭제할 수 있습니다.
  • 우측 하단 버튼을 통해 사용자는 수기로 일기를 추가할 수 있습니다.
  • 특정 일기를 클릭하면 상세 보기 화면으로 이동하며, 편집 화면에서 사진, 카테고리, 일기 내용을 추가할 수 있습니다.

세부 기능

로그인화면 온보딩화면 검색화면-
다양한 검색 필터링
피드화면-
친구와의 일기 공유
① 카카오로그인
② 비회원로그인
처음 설치한 사용자들을 위한
가이드 화면
다양한 검색 조건으로
손쉬운 일기 찾기
원하는 일기를 공유하여
친구와 소통
  • 로그인 화면: 카카오 로그인과 비회원 로그인을 통해 간편하게 접근할 수 있습니다.
  • 온보딩 화면: 처음 설치한 사용자에게 안내하는 가이드 화면입니다.
  • 검색 화면 - 다양한 검색 필터링: 다양한 검색 조건(날짜, 북마크여부, 카테고리별, 이모지별)을 통해 원하는 일기를 빠르고 손쉽게 찾을 수 있습니다.
  • 피드 화면 - 친구와의 일기 공유: 원하는 일기를 공유하여 친구들과 소통하고 댓글로 상호작용할 수 있습니다.

🔍 개발 주안점

아키텍처 부분

  • MVVM 패턴 적용
    project-root
     ├── ...
     ├── REPOSITORY # 데이터 처리 및 비즈니스 로직 계층, API 상호작용
     └── presentation
       ├── ...
       ├── VIEW # Activity와 Fragment 클래스
       └── VIEWMODEL # UI 관련 데이터를 관리하는 ViewModel 클래스
    
  • Hilt 적용
  • 기능 테스트 부분 적용

기능 부분

  • 자동 일기 기록
    • Google Places API를 통해 GPS 좌표를 전달해 장소명을 도출
    • 백그라운 상태에서 GPS 위치추적을 위해 android.permission.ACCESS_BACKGROUND_LOCATION 권한추가
    • 백그라운드 위치 토글 동작에서의 지연 · 오류를 최소화하는 데 기여하기 위한 설정추가
      Priority.PRIORITY_BALANCED_POWER_ACCURACY
      # 정확도를 어느 정도 확보하면서도, 배터리 소모를 최적화해 토글 동작에서의 지연을 방지
      
      setMinUpdateIntervalMillis(LOCATION_UPDATE_INTERVAL)
      # 앱이 위치 업데이트 요청을 너무 자주 하지 않도록 제어
      
      setMaxUpdateDelayMillis(LOCATION_UPDATE_INTERVAL):
      # 위치 업데이트가 일정 시간 이상 지연되지 않도록 보장
      
      setWaitForAccurateLocation(false):
      # 정확한 위치를 기다리지 않고, 가능한 범위 내에서 가장 빠르게 받을 수 있는 위치 업데이트를 허용
      
    • 불필요한 서버 전송 예방을 위해 isFirstLocationUpdateAfterChange 플래그 추가
    • GPS 오차범위로 인한 장소명 매칭 에러를 해결하기 위해 팝업메뉴에 장소명 후보지 나열하여 사용자가 편집할 수 있도록 함
    • FCM을 통해 새로운 장소 기록 시, 사용자에게 알림을 보내어 현재 감정상태를 이모지로 손쉽게 표현할 수 있음

🔍 프로젝트 정보

개발 기간

  • 2024.09 ~ 2024.11 (3개월)

협업 툴

  • Discord Notion

서비스 링크

프로젝트 관리


👥 팀원 소개

저희 팀은 백엔드 2명, 안드로이드 3명으로 구성되어 있습니다.

최준형 전혜지 이아림 윤채원 권새일

Backend

Backend

Android

Android

Android

🛠 기술 스택

💻 Language & Framework

  • Kotlin
  • Android Studio

📱 Communication

  • Firebase

🔧 Development Tools

  • GitHub Actions

🎨 Design Tools

  • Figma

🗄️ ERD

erd

About

[카카오 테크 캠퍼스_2기] 바쁜 하루를 자동으로 기록하는 다이어리 앱📝

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 100.0%