Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
f73ba6e
안드로이드 프로젝트 생성
min486 Aug 24, 2025
9afbb27
chore: Firebase 연동
min486 Aug 24, 2025
3b7a21b
feat: Kakao login 초기 세팅
min486 Aug 25, 2025
0912f44
fix: Kakao login 리다이렉트 URI 설정
min486 Aug 25, 2025
3faf536
feat: Firebase auth 연동 (kakao login)
min486 Aug 25, 2025
e06d10f
Merge pull request #1 from min486/feature/kakao-login
min486 Aug 25, 2025
b8c2b27
refactor: 패키지명 변경
min486 Sep 8, 2025
414bdcf
Merge pull request #2 from min486/feature/rename-package
min486 Sep 8, 2025
ba780c2
build: Compose Navigation 의존성 추가
min486 Sep 22, 2025
c209f98
feat: Hilt 추가 및 초기 설정
min486 Sep 22, 2025
6deef6f
Merge pull request #3 from min486/feature/hilt-setup
min486 Sep 22, 2025
5243b70
feat: MVVM 아키텍처 구성 및 fake data 연결
min486 Sep 22, 2025
e5d28ab
Merge pull request #4 from min486/feature/mvvm-architecture
min486 Sep 22, 2025
e676e52
feat: 카카오 로그인 구현 및 firebase 연동
min486 Sep 24, 2025
62284ef
Merge pull request #5 from min486/feature/kakao-login
min486 Sep 24, 2025
8def3b3
feat: 카카오 로그아웃 구현 및 firebase 연동 해제
min486 Sep 25, 2025
400fd57
feat: 카카오 회원탈퇴 구현 및 사용자 데이터 삭제
min486 Sep 25, 2025
9c4cd70
Merge pull request #6 from min486/feature/kakao-login
min486 Sep 25, 2025
b0246de
feat: 커스텀 typography 구성
min486 Oct 4, 2025
26871e2
feat: 커스텀 color palette 구성
min486 Oct 4, 2025
e71f871
Merge pull request #7 from min486/feature/design-system
min486 Oct 4, 2025
f86d521
design: 로그인 화면 UI 구현
min486 Oct 6, 2025
918d923
Merge pull request #8 from min486/feature/login-ui
min486 Oct 6, 2025
8f8eec7
feat: 스플래시 화면 구현
min486 Oct 7, 2025
539103d
Merge pull request #9 from min486/feature/splash
min486 Oct 7, 2025
5c9b5bc
design: 온보딩 화면 UI 구현
min486 Oct 7, 2025
c976e7c
Merge pull request #10 from min486/feature/onboarding
min486 Oct 7, 2025
351058a
design: 프로필 설정 화면 UI 구현
min486 Oct 7, 2025
439f9d4
Merge pull request #11 from min486/feature/profile-setup
min486 Oct 7, 2025
556554a
design: 마이페이지 UI 구현
min486 Oct 8, 2025
d49ca02
feat: MypageScreen - 프로필이미지 수정 모달 구현
min486 Oct 8, 2025
b7d2563
design: 설정 화면 UI 구현
min486 Oct 8, 2025
a116b97
Merge pull request #12 from min486/feature/mypage
min486 Oct 8, 2025
a9d3c38
design: 기록 작성 화면 UI 구현
min486 Oct 12, 2025
c0e4334
design: 작성 완료 화면 UI 구현
min486 Oct 12, 2025
b274e3b
feat: WriteFinishScreen - 스탬프 지급 Dialog 구현
min486 Oct 12, 2025
7981f4a
feat: RecordWriteScreen - 감정 선택 bottomSheet 구현
min486 Oct 12, 2025
ce81f2d
feat: RecordWriteScreen - 날씨 선택 bottomSheet 구현
min486 Oct 12, 2025
952a4b9
Merge pull request #13 from min486/feature/record-write
min486 Oct 12, 2025
6634279
design: 발견 화면 UI 구현
min486 Oct 13, 2025
e88e978
design: 발견 상세 화면 UI 구현
min486 Oct 13, 2025
a0d07d7
Merge pull request #14 from min486/feature/find-ui
min486 Oct 13, 2025
808af11
design: 홈 화면 UI 구현
min486 Oct 16, 2025
a41a765
Merge pull request #15 from min486/feature/home-ui
min486 Oct 16, 2025
ea1bab2
design: 알림 화면 UI 구현
min486 Oct 16, 2025
35636c3
Merge pull request #16 from min486/feature/bell-ui
min486 Oct 16, 2025
8676c61
251017
min486 Oct 16, 2025
fef5bbf
feat: BottomBar 구성 및 navigation 연결
min486 Oct 17, 2025
b2608a7
feat: 화면별 navigation 설정
min486 Oct 17, 2025
ae512ed
Merge pull request #17 from min486/feature/bottom-nav
min486 Oct 17, 2025
220a00b
chore: 앱 이름 및 아이콘 설정
min486 Oct 17, 2025
f3739ba
Merge pull request #18 from min486/feature/app-setup
min486 Oct 17, 2025
fced1e0
README
min486 Oct 18, 2025
afc39ce
feat: 여행 날짜 선택 구현 (DateRangePicker 활용)
min486 Oct 20, 2025
1f0f5ff
feat: Naver 지역 검색 API 연동
min486 Oct 21, 2025
e25fef7
feat: Naver 지역 검색 구현 및 테스트
min486 Oct 23, 2025
c1963e9
fix: ModalBottomSheet 검색 플로우 사용성 개선
min486 Oct 24, 2025
00baa80
feat: 여행지 국내/해외 선택 구현
min486 Oct 25, 2025
be7f64a
feat: 제목 및 내용 입력 구현
min486 Oct 25, 2025
d44a4e7
feat: 감정 및 날씨 선택 구현
min486 Oct 25, 2025
029fd71
feat: 공유여부 설정 구현
min486 Oct 25, 2025
35d78fd
Merge pull request #19 from min486/feature/record-write
min486 Oct 25, 2025
502fd67
feat: 커스텀 floatingActionButton 구현
min486 Oct 27, 2025
2d29c4c
design: BottomBar 상단에 구분선 추가
min486 Oct 27, 2025
54d32aa
Merge pull request #20 from min486/feature/home
min486 Oct 27, 2025
3f57bde
refactor: RecordWriteViewModel - 상태 업데이트 방식 개선 (단일 StateFlow 통합)
min486 Oct 28, 2025
0d1423e
feat: Single Image 선택 구현
min486 Oct 28, 2025
41fbe9b
build: Coil 의존성 추가 및 선택된 Image 표시
min486 Oct 28, 2025
7c648c8
feat: Firebase에 여행기록 저장
min486 Oct 29, 2025
544fe6d
feat: 기록 저장 완료 후 화면 이동
min486 Oct 29, 2025
f424952
Merge pull request #21 from min486/feature/record-write
min486 Oct 29, 2025
ad8af1f
feat: 회원가입 시 Firestore에 사용자 정보 저장
min486 Oct 30, 2025
a56be50
feat: LoginScreen - 로딩 인디케이터 표시
min486 Oct 30, 2025
e4e5ddd
feat: 로그아웃 및 회원탈퇴 기능 완성
min486 Oct 30, 2025
fb52dde
Merge pull request #22 from min486/feature/auth
min486 Oct 30, 2025
8e7c4c8
feat: 사용자 정보 조회 및 표시
min486 Oct 31, 2025
04f997c
feat: 여행기록 리스트 조회 및 표시
min486 Nov 1, 2025
92f9884
feat: 여행기록 최신순 정렬 적용
min486 Nov 1, 2025
b0d14cc
Merge pull request #23 from min486/feature/home
min486 Nov 1, 2025
579bc2d
feat: 필수 항목 미입력 시 snackbar 표시
min486 Nov 1, 2025
6a8abf4
feat: 기록 작성 완료 시 기록/스탬프 수 증가
min486 Nov 1, 2025
8e2fdbb
feat: 공유 안내 말풍선 구현
min486 Nov 1, 2025
e0f892d
feat: 기록 등록 진행 시 로딩 인디케이터 표시
min486 Nov 1, 2025
12bee4d
feat: WriteFinishScreen - 스탬프 지급 Dialog를 delay 후 표시
min486 Nov 1, 2025
67363ac
Merge pull request #24 from min486/feature/record-write
min486 Nov 2, 2025
bcbd766
feat: 여행기록 저장 시 UserData 결합 (TripRecord + UserData)
min486 Nov 2, 2025
d44bc86
feat: 공유기록 리스트 조회 및 표시
min486 Nov 3, 2025
1a63665
feat: 날씨/감정 텍스트를 이미지 리소스로 매핑
min486 Nov 3, 2025
c982ada
feat: 공유기록 경과 시간 계산 및 표시
min486 Nov 3, 2025
84c65bd
Merge pull request #25 from min486/feature/discover
min486 Nov 3, 2025
3e9c939
feat: MypageScreen - 사용자 정보 조회 및 표시
min486 Nov 3, 2025
ca3d4de
feat: 프로필 이미지 선택 구현
min486 Nov 3, 2025
22d9a59
feat: 프로필 이미지 변경 구현
min486 Nov 3, 2025
a207d25
feat: 내 기록 모아보기 구성
min486 Nov 3, 2025
e6b187a
feat: 탈퇴 확인, 탈퇴 완료 Dialog 구현
min486 Nov 3, 2025
767f68b
Merge pull request #26 from min486/feature/mypage
min486 Nov 3, 2025
6681c9f
chore: BottomBar 발견 탭 텍스트 변경
min486 Nov 4, 2025
9d1e9ec
feat: Navigation 추가 연결
min486 Nov 4, 2025
039806b
fix: EdgeToEdge 설정 및 API 35 이상 시스템바 대응
min486 Nov 4, 2025
c29876e
chore: 버전 업데이트 1.6 (6)
min486 Nov 4, 2025
afa47af
Merge pull request #27 from min486/feature/app-setup
min486 Nov 4, 2025
3364829
README
min486 Nov 4, 2025
a7586f2
README
min486 Nov 4, 2025
c5c62f2
design: 카드형 아이템 텍스트 Center 정렬
min486 Nov 8, 2025
2ab0d79
fix: 타임라인형 아이템 endDate 없는 경우, 표시 안되게 수정
min486 Nov 8, 2025
0849071
Merge pull request #28 from min486/feature/home
min486 Nov 8, 2025
7c71e28
feat: 닉네임 변경 Dialog 구현
min486 Nov 8, 2025
5ae0717
feat: 닉네임 유효성 검사 및 에러메시지 표시
min486 Nov 9, 2025
f99d14b
feat: 닉네임 변경 기능 완성
min486 Nov 10, 2025
b836b86
Merge pull request #29 from min486/feature/mypage
min486 Nov 10, 2025
203d2c0
feat: 국내 여행지 검색 진행 시 로딩 인디케이터 표시
min486 Nov 11, 2025
2dd860b
fix: 국내/해외 여행지 중복 저장 안되게 수정 및 경고 처리
min486 Nov 11, 2025
d980a66
feat: 선택된 이미지 삭제 구현
min486 Nov 11, 2025
ace48e8
Merge pull request #30 from min486/feature/record-write
min486 Nov 11, 2025
bd9a5bc
design: 내 기록 모아보기 화면 UI 수정
min486 Nov 12, 2025
54a811f
Merge pull request #31 from min486/feature/my-record
min486 Nov 12, 2025
0c87f33
feat: 누적 스탬프 수에 따른 뱃지 등급 결정 구현
min486 Nov 12, 2025
f494bc6
feat: 새로운 뱃지 달성 시, 뱃지 정보 업데이트
min486 Nov 12, 2025
157d921
feat: LevelUpDialog - 로티 애니메이션 적용
min486 Nov 12, 2025
b6f89ba
Merge pull request #32 from min486/feature/badge
min486 Nov 12, 2025
8ad3670
design: 프로필 설정 화면 UI 구현
min486 Nov 13, 2025
7ff8b0d
feat: 앱 초기 식별 로직 구현 (DataStore 활용)
min486 Nov 13, 2025
0c8dae0
feat: 앱 초기 실행 시, 온보딩/프로필설정 화면 표시
min486 Nov 13, 2025
46ead07
feat: 사용자가 선택한 프로필 저장 구현
min486 Nov 14, 2025
2af8c0d
Merge pull request #33 from min486/feature/app-init
min486 Nov 14, 2025
1b40270
feat: Firebase Crashlytics 추가 및 설정
min486 Nov 14, 2025
1e7d75b
Merge pull request #34 from min486/feature/firebase-crashlytics
min486 Nov 14, 2025
e36818f
feat: 프로젝트 Java 17로 업그레이드
min486 Nov 15, 2025
57b8bf8
feat: CI/CD 설정 파일 추가 및 release 서명 설정
min486 Nov 15, 2025
11054c9
fix: CI 빌드 실패 수정 (local.properties에 키 값 주입)
min486 Nov 16, 2025
1aced58
fix: Firebase 설정 파일 디코딩
min486 Nov 16, 2025
4ea24d5
Merge pull request #35 from min486/feature/ci-cd-setup
min486 Nov 16, 2025
a436bcc
chore: 버전 업데이트 2.0 (10)
min486 Nov 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/cd_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Android CD Release

on:
push:
branches:
- master # master 브랜치에 push 될 때 실행

jobs:
release:
runs-on: ubuntu-latest

# Secrets를 환경 변수로 정의하여 run 스크립트에서 $변수 형태로 사용 가능
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Make gradlew executable
run: chmod +x ./gradlew

# Secrets에서 Base64 문자열을 디코딩하여 app/keystore.jks 파일로 저장
- name: Decode Keystore File
# base64 -d 명령어를 사용하여 복호화
run: echo "$KEYSTORE_BASE64" | base64 -d > app/keystore.jks

# 서명에 필요한 비밀번호와 별칭 정보를 signing.properties 파일로 생성
- name: Set up Signing Properties
run: |
echo "storeFile=keystore.jks" > ./signing.properties
echo "storePassword=$KEYSTORE_PASSWORD" >> ./signing.properties
echo "keyAlias=$KEY_ALIAS" >> ./signing.properties
echo "keyPassword=$KEY_PASSWORD" >> ./signing.properties

# 릴리즈 AAB 빌드 실행
- name: Build Release AAB
# 프로젝트 설정을 통해 서명된다
run: ./gradlew bundleRelease

# GitHub Release 생성 및 고정 메시지 적용
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
# Git Tag가 푸시될 때만 Release를 생성 (예: v1.0.0)
if: startsWith(github.ref, 'refs/tags/')
with:
# 빌드된 AAB 파일 업로드
files: app/build/outputs/bundle/release/app-release.aab
name: Release ${{ github.ref_name }}
body: |
더 나은 모멘토를 위해 버그를 수정하고, 사용성을 개선했어요
54 changes: 54 additions & 0 deletions .github/workflows/ci_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Android CI Build

on:
push:
branches:
- develop # develop 브랜치에 push 될 때 실행
pull_request:
branches:
- develop # develop 브랜치로 PR이 열리거나 업데이트 될 때 실행


jobs:
build:
runs-on: ubuntu-latest # 워크플로우를 실행할 가상 환경

env:
GOOGLE_SERVICES_BASE64: ${{ secrets.GOOGLE_SERVICES_BASE64 }}
KAKAO_NATIVE_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }}
NAVER_CLIENT_ID: ${{ secrets.NAVER_CLIENT_ID }}
NAVER_CLIENT_SECRET: ${{ secrets.NAVER_CLIENT_SECRET }}

steps:
- name: Checkout Code
uses: actions/checkout@v4 # GitHub 저장소 코드를 워크스페이스로 가져오기

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Make gradlew executable
run: chmod +x ./gradlew # gradlew 파일에 실행 권한 부여

- name: Decode Google Services File
run: echo "$GOOGLE_SERVICES_BASE64" | base64 -d > app/google-services.json

# Secrets를 사용하여 local.properties 파일 생성
- name: Create local.properties for CI
run: |
echo "kakao.native.app.key=$KAKAO_NATIVE_APP_KEY" > local.properties
echo "naver.client.id=$NAVER_CLIENT_ID" >> local.properties
echo "naver.client.secret=$NAVER_CLIENT_SECRET" >> local.properties

- name: Build Debug APK
run: ./gradlew assembleDebug # 디버그 APK 빌드 명령어 실행

# 빌드된 APK 아티팩트 저장
- name: Upload APK Artifact
uses: actions/upload-artifact@v4
with:
name: dngo-app-debug
path: app/build/outputs/apk/debug/app-debug.apk
retention-days: 90
52 changes: 52 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Built application files
*.apk
*.aab
*.aar
*.ap_

# Files for the ART/Dalvik VM
*.dex

# Gradle files
.gradle/
build/
local.properties
.idea/caches/
.idea/libraries/
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/misc.xml
.idea/modules.xml
.idea/vcs.xml

# Kotlin files
*.kt.log
*.kt.test.log
.kotlin/

# Android Studio 4.x
.idea/runConfigurations.xml

# Local configuration files (e.g., used by third-party tools)
.env
.env.local
.DS_Store

# IDE specific files
.idea/
*.iws
*.iml
*.ipr
.idea/codeStyles/
.idea/gradle.xml
.idea/misc.xml
.idea/modules.xml
.idea/vcs.xml

# Keystore files
*.jks
*.keystore

# firebase
google-services.json
Binary file added README.assets/architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added README.assets/image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added README.assets/image2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added README.assets/image3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added README.assets/image4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added README.assets/image5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added README.assets/momento.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added README.assets/play.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 34 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,34 @@
# dngo-android
# 모멘토

<p>
<img src="./README.assets/momento.png" alt="momento"/>
&nbsp;&nbsp;
<a href="https://play.google.com/store/apps/details?id=com.min.dnapp">
<img src="./README.assets/play.png" width="200" alt="play"/>
</a>
</p>



## 🏝️ 여행을 기록하는 가장 감성적인 방법, 모멘토

- 자신의 여행 이야기를 간단하게 기록할 수 있어요
- 행복했던 순간들을 한눈에 모아 관리해보세요
- 원한다면 여행기록을 다른 사용자와 공유할 수도 있어요
- 공유된 여행은 새로운 여행지를 찾는 사람들에게 영감을 줍니다

<br>

<p align="left" style="display: flex; justify-content: space-between;">
<img src="./README.assets/image.png" width="19%" alt="image"/>
<img src="./README.assets/image2.png" width="19%" alt="image2"/>
<img src="./README.assets/image3.png" width="19%" alt="image3"/>
<img src="./README.assets/image4.png" width="19%" alt="image4"/>
<img src="./README.assets/image5.png" width="19%" alt="image5"/>
</p>

<br>

## Android 앱 아키텍처 (MVVM + Clean Architecture)

<img src="./README.assets/architecture.png" width="100%" alt="play"/>
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
144 changes: 144 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
import java.util.Properties

// Properties 객체를 생성해 key-value 쌍을 저장할 준비를 한다
val properties = Properties()
// 프로젝트의 루트 디렉토리에 있는 local.properties 파일을 가져온다
val propertiesFile = project.rootProject.file("local.properties")
// 파일이 존재하는지 확인 후 로드
if (propertiesFile.exists()) {
// 파일의 InputStream을 열어 속성값을 안전하게 불러온다
// use 함수를 사용하면 스트림이 자동으로 닫힌다
propertiesFile.inputStream().use { properties.load(it) }
}

// CI/CD 서명 설정 파일 로드
val signingProps = Properties()
val signingPropsFile = project.rootProject.file("signing.properties")
if (signingPropsFile.exists()) {
signingPropsFile.inputStream().use { signingProps.load(it) }
}

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.google.services)
alias(libs.plugins.ksp)
alias(libs.plugins.hilt)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.firebase.crashlytics)
}

android {
namespace = "com.min.dnapp"
compileSdk = 36

defaultConfig {
applicationId = "com.min.dnapp"
minSdk = 30
targetSdk = 36
versionCode = 10
versionName = "2.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

val kakaoNativeAppKey = properties.getProperty("kakao.native.app.key")
val naverClientId = properties.getProperty("naver.client.id")
val naverClientSecret = properties.getProperty("naver.client.secret")

// 네이티브 앱 키를 BuildConfig에 필드로 추가
buildConfigField("String", "KAKAO_NATIVE_APP_KEY", "\"${kakaoNativeAppKey}\"")
// AndroidManifest.xml에 전달할 플레이스홀더 정의
manifestPlaceholders["kakaoNativeAppKey"] = kakaoNativeAppKey

// 네이버
buildConfigField("String", "NAVER_CLIENT_ID", "\"${naverClientId}\"")
buildConfigField("String", "NAVER_CLIENT_SECRET", "\"${naverClientSecret}\"")
}

// CI/CD 서명 설정
signingConfigs {
create("release") {
storeFile = if (signingProps.containsKey("storeFile")) file("app/${signingProps["storeFile"] as String}") else null
storePassword = signingProps["storePassword"] as String?
keyAlias = signingProps["keyAlias"] as String?
keyPassword = signingProps["keyPassword"] as String?
}
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
// release 빌드 타입에 서명 설정 적용
signingConfig = signingConfigs.getByName("release")
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
buildFeatures {
compose = true
// BuildConfig 파일 생성을 활성화
buildConfig = true
}
}

dependencies {
val composeBom = platform(libs.androidx.compose.bom)
implementation(composeBom)
androidTestImplementation(composeBom)

implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)

// firebase
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.crashlytics)
implementation(libs.firebase.analytics)
implementation(libs.firebase.auth)
implementation(libs.firebase.firestore)
implementation(libs.firebase.storage)
// kakao
implementation(libs.kakao.sdk)
// compose navigation
implementation(libs.androidx.navigation.compose)
// hilt
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
implementation(libs.hilt.navigation.compose)
// splash screen
implementation(libs.splash)
// retrofit2 & kotlin serialization
implementation(libs.retrofit)
implementation(libs.retrofit.converter.kotlinx.serialization)
implementation(libs.kotlinx.serialization.json)
// okhttp (logging interceptor)
implementation(libs.okhttp.logging)
// coil
implementation(libs.coil)
implementation(libs.coil.okhttp)
// lottie compose
implementation(libs.lottie.compose)
// preferences datastore
implementation(libs.datastore.preferences)

testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
}
21 changes: 21 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
Loading