의약품 정보를 검색하고 복용 기록을 관리할 수 있는 Android 애플리케이션입니다.
이 프로젝트는 공공데이터 API를 활용하여 의약품 정보를 조회하고, 사용자의 복용 기록을 캘린더로 관리할 수 있는 앱입니다. Firebase를 통한 사용자 인증 및 데이터 저장, Room Database를 통한 로컬 데이터 관리 기능을 제공합니다.
- Firebase Authentication을 통한 회원가입 및 로그인
- 회원가입 프로세스 (4단계)
- 공공데이터 API를 통한 의약품 정보 검색
- 키워드 기반 검색 기능
- 검색 결과 상세 정보 조회
- 의약품 이미지 표시 (Coil 라이브러리 사용)
- 의약품 즐겨찾기 추가/제거
- Room Database를 통한 로컬 저장
- Firebase Firestore를 통한 클라우드 동기화
- 캘린더를 통한 복용 기록 시각화
- 일별 복용 여부 기록
- 캘린더 상세 화면에서 의약품별 복용 상태 확인
- 주요 기능 접근
- 사용자 정보 표시
- 언어: Kotlin
- UI: Jetpack Compose
- 아키텍처: MVVM (Model-View-ViewModel)
- 비동기 처리: Kotlin Coroutines
- 의존성 주입: KSP (Kotlin Symbol Processing)
- Retrofit 2.9.0: REST API 통신
- Gson: JSON 직렬화/역직렬화
- OkHttp Logging Interceptor: 네트워크 요청 로깅
- Room Database 2.6.1: 로컬 데이터 저장 (즐겨찾기 등)
- Firebase Firestore: 클라우드 데이터 저장 (사용자 정보, 복용 기록 등)
- Firebase Authentication: 사용자 인증
- Coil 2.7.0: 이미지 로딩 및 캐싱
- Material 3: Material Design 3 컴포넌트
- Calendar View 2.7.0: 캘린더 UI
- Navigation Compose: 화면 전환 관리
app/src/main/java/com/example/oop/
├── data/
│ ├── api/ # API 관련
│ │ ├── MedicineApiClient.kt
│ │ ├── MedicineApiDataSource.kt
│ │ ├── MedicineApiResponse.kt
│ │ ├── MedicineApiService.kt
│ │ └── FirebaseDataSource.kt
│ ├── model/ # 데이터 모델
│ │ ├── Medicine.kt
│ │ ├── User.kt
│ │ ├── Favorite.kt
│ │ └── DailyLog.kt
│ ├── repository/ # 데이터 저장소
│ │ ├── SearchRepository.kt
│ │ └── CalendarDetailRepository.kt
│ └── MedicineDatabase.kt # Room Database
├── ui/
│ ├── onBoarding/ # 온보딩 화면
│ │ ├── LoginScreen.kt
│ │ ├── JoinScreen.kt
│ │ └── LoadingScreen.kt
│ ├── home/ # 홈 화면
│ ├── Search/ # 검색 화면
│ ├── searchResult/ # 검색 결과 화면
│ ├── medicineDetail/ # 의약품 상세 화면
│ ├── calendar/ # 캘린더 화면
│ ├── calendarDetail/ # 캘린더 상세 화면
│ └── theme/ # 테마 설정
└── MainActivity.kt # 메인 액티비티
- Android Studio Hedgehog 이상
- JDK 11 이상
- Android SDK 26 이상 (minSdk: 26, targetSdk: 36)
- Firebase 프로젝트 설정
- 저장소 클론
git clone [repository-url]
cd OOP-
Firebase 설정
- Firebase Console에서 프로젝트 생성
google-services.json파일을app/디렉토리에 추가
-
API 키 설정
- 프로젝트 루트에
local.properties파일 생성 - 공공데이터 API 키 추가:
API_KEY=your_api_key_here - 프로젝트 루트에
-
프로젝트 빌드
./gradlew build- 앱 실행
- Android Studio에서 프로젝트 열기
- 에뮬레이터 또는 실제 기기에서 실행
프로젝트 루트에 local.properties 파일을 생성하고 다음 내용을 추가하세요:
API_KEY=your_public_data_api_keyAPI 키는 build.gradle.kts에서 자동으로 읽어와 BuildConfig.API_KEY로 사용됩니다.
- Firebase Console에서 Android 앱 등록
google-services.json파일 다운로드app/google-services.json에 파일 복사
이 프로젝트는 MVVM (Model-View-ViewModel) 아키텍처 패턴을 따릅니다:
- Model: 데이터 모델 및 데이터 소스 (API, Database)
- View: Jetpack Compose UI 컴포넌트
- ViewModel: UI 상태 관리 및 비즈니스 로직
- View에서 사용자 액션 발생
- ViewModel이 Repository를 통해 데이터 요청
- Repository가 API 또는 Database에서 데이터 조회
- 데이터가 ViewModel의 State로 변환
- View가 State를 관찰하여 UI 업데이트
이 프로젝트는 교육 목적으로 개발되었습니다.
프로젝트에 기여해주신 모든 분들께 감사드립니다.
- taerimiiii
- ryudonghee
- flashbomb625
- leehy-1839