Skip to content

Latest commit

 

History

History
67 lines (50 loc) · 5.12 KB

File metadata and controls

67 lines (50 loc) · 5.12 KB

Gemini 분석 보고서: 앗차!

1. 프로젝트 개요

이 프로젝트는 '앗차!'라는 이름의 안드로이드 애플리케이션으로, 대중교통 막차 정보를 제공하고 놓치지 않도록 도와주는 서비스입니다. 사용자가 집과 출발지를 설정하면 막차 시간, 실시간 버스 위치, 경로 정보 등을 알려주고, 출발해야 할 시간에 알림을 보내주는 기능을 핵심으로 합니다.

  • 타겟 사용자: 대중교통, 특히 막차를 자주 이용하거나 놓치는 사용자
  • 핵심 가치: 사용자가 막차 시간 압박에서 벗어나 여유롭게 귀가할 수 있도록 돕는 것

2. 아키텍처

이 프로젝트는 현대적인 안드로이드 앱 개발 트렌드에 맞춰 MVI (Model-View-Intent) 패턴을 적용한 Clean Architecture를 채택하고 있습니다.

  • 단방향 데이터 흐름 (UDF): UI(View)에서 발생한 사용자 이벤트(Intent)는 ViewModel을 거쳐 데이터 계층으로 전달되고, 처리된 결과(State)는 다시 UI로 전달되는 단방향 구조를 가집니다. 이를 통해 데이터 흐름을 예측 가능하게 하고 상태 관리를 용이하게 합니다.
  • 계층 분리:
    • UI Layer: Jetpack Compose를 사용하여 선언적으로 UI를 구성합니다. 사용자의 상호작용을 처리하고, ViewModel로부터 UI State를 구독하여 화면을 갱신합니다.
    • Domain Layer: 특정 프레임워크에 종속되지 않는 순수한 Kotlin 코드로 작성된 비즈니스 로직을 포함합니다. UseCase를 통해 특정 기능을 캡슐화합니다.
    • Data Layer: Repository 패턴을 사용하여 데이터 소스를 추상화합니다. 원격 서버(Retrofit)나 로컬 저장소(DataStore)로부터 데이터를 가져오는 역할을 수행하며, Domain 계층은 데이터의 출처를 알 필요가 없습니다.
  • 의존성 주입 (DI): Hilt를 사용하여 계층 간의 의존성을 관리합니다. 이를 통해 각 컴포넌트의 결합도를 낮추고 테스트 용이성을 높입니다.

3. 기술 스택

프로젝트는 다음과 같은 주요 기술과 라이브러리를 사용하여 구현되었습니다.

  • 언어: Kotlin 100%
  • UI: Jetpack Compose (Android의 최신 선언형 UI 툴킷)
  • 비동기 처리: Coroutines & Flow
  • 아키텍처:
    • AAC (ViewModel, Navigation)
    • MVI (Model-View-Intent)
  • 의존성 주입: Hilt
  • 네트워킹: Retrofit & OkHttp
  • 지도/위치: TMAP SDK, Google Play Services (Location)
  • 로컬 데이터: DataStore (Key-Value 저장)
  • 인증: Kakao Login
  • 푸시 알림: Firebase Cloud Messaging (FCM)
  • 백그라운드 처리: BackgroundService, BroadcastReceiver
  • 분석: Firebase Analytics, Amplitude
  • 기타: Lottie (애니메이션), Accompanist (WebView, SystemUIController)

4. 주요 기능 (추론)

소스 코드와 리소스 파일 분석을 통해 다음과 같은 주요 기능들을 유추할 수 있습니다.

  • 경로 검색: 출발지와 목적지를 기반으로 대중교통(주로 버스) 막차 경로를 검색합니다.
  • 실시간 정보 제공: TMAP SDK를 활용하여 버스의 실시간 위치와 도착 예정 시간을 지도 위에 표시합니다.
  • 알림 기능:
    • 막차 시간에 맞춰 푸시 알림을 전송합니다.
    • 사용자가 제시간에 출발할 수 있도록 잠금화면에서 소리/진동 알람을 제공합니다.
  • 사용자 맞춤 설정: 집 주소를 저장하고, 자주 사용하는 경로를 관리하는 기능이 있을 것으로 보입니다.
  • 소셜 로그인: Kakao SDK를 통한 간편 로그인 기능을 제공합니다.

5. 빌드 및 배포

  • 빌드 시스템: Gradle (Kotlin DSL - build.gradle.kts)
  • CI/CD: GitHub Actions (.github/workflows/android_ci.yml)를 통해 CI 파이프라인이 구축되어 있어 코드 통합 및 빌드 자동화를 수행합니다.
  • 코드 품질: Kt-lint 플러그인을 사용하여 코드 스타일을 일관되게 유지합니다.
  • 보안: Proguard와 R8을 적용하여 릴리즈 빌드 시 코드를 난독화하고 최적화합니다.

6. Gemini 역할 및 활용 가이드

Gemini는 이 프로젝트의 코드 베이스에 대한 깊은 이해를 바탕으로 다음과 같은 역할을 수행합니다.

  • 코드 분석: 항상 현재 내가 위치하고 있는 git branch의 코드에 대해서 읽고 분석합니다.
  • 질문 답변: 프로젝트의 특정 코드나 기능에 대해 질문하면, 코드의 구조, 로직, 상호작용을 분석하여 답변합니다.
  • 이슈 원인 파악: 버그나 예상치 못한 동작에 대한 질문 시, 관련 코드를 추적하고 분석하여 근본적인 원인을 파악하고 설명합니다.
  • 잠재적 위험 요소 식별: 현재 코드에 존재할 수 있는 크리티컬한 문제나 실제 운영 환경에서 위험을 초래할 수 있는 잠재적 요소를 식별하고 개선 방향을 제안합니다. 단, 지엽적이거나 사소한 스타일 지적은 지양하고, 아키텍처, 성능, 안정성과 관련된 중요한 문제에 집중합니다.