Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
14c8bec
[refactor] #91 글 등록하기(바텀 네비게이션)버튼 배경 색상 수정
kamja0510 Jan 29, 2026
ea38e0f
[refactor] #91 DPlayChip png 파일로 사용하는 것으로 변경
kamja0510 Jan 29, 2026
768878c
[refactor] #91 상세, 홈 에서 내 프로필 누르면 마이 페이지로 이동하는 로직 추가
kamja0510 Jan 29, 2026
8c653fa
[refactor] #91 검색 empty view 문자 스타일 변경
kamja0510 Jan 29, 2026
46ee33d
[refactor] #91 글 등록 곡 정보 디자인 수정
kamja0510 Jan 29, 2026
9126e0e
[refactor] #91 커뮤니티 가이드 버튼 space 수정
kamja0510 Jan 29, 2026
cef896f
[refactor] #91 모달 라운드 값 수정
kamja0510 Jan 29, 2026
3424c4f
[refactor] #91 앱 네이밍, 앱 아이콘 수정
kamja0510 Jan 29, 2026
28b2f52
[refactor] #91 알림 문구 수정
kamja0510 Jan 29, 2026
e95d955
[feat] #91 에러 화면 구현
kamja0510 Jan 29, 2026
1661baa
[feat] #91 로딩 화면 구현
kamja0510 Jan 29, 2026
191297d
[feat] #91 로딩 상태 정의
kamja0510 Jan 29, 2026
b5754b6
[refactor] #91 errorScreen에 onBackIconClick 달기
kamja0510 Jan 29, 2026
eed0fa3
[refactor] #91 에러뷰 붙어야 될 것 같은 화면(화면 진입 시 데이터 로드 하는 api있는 화면)에 에러뷰 붙이기
kamja0510 Jan 29, 2026
724985c
[chore] #91 ktlint
kamja0510 Jan 29, 2026
b19c5fc
[feat] #93 릴리즈 설정
kamja0510 Jan 29, 2026
f0a3fd1
[fix] #93 난독화 하면서 kakao sdk 오류 수정
kamja0510 Jan 29, 2026
afb06ca
[chore] #93 릴리즈 빌드 시 생성되는 output-metadata.json, app-release.dm gitign…
kamja0510 Jan 29, 2026
0e8f612
[chore] #93 안쓰이는 recommend모듈 삭제
kamja0510 Jan 29, 2026
e2998b7
[refactor] #93 앱 버전 BuildConfig 이용해서 구현
kamja0510 Jan 29, 2026
9791f35
[fix] #93 보관함 탭에서 내 post의 상세페이지를 들어갔다가 삭제하고 나올 경우 삭제하고 refreshTrigger…
kamja0510 Jan 29, 2026
95eaa55
[chore] #93 ktlint
kamja0510 Jan 29, 2026
fe7779d
[refactor] #93 ci 환경에서 서명 인증 과정 스킵 추후에 CD 구현 시 추가
kamja0510 Jan 30, 2026
ec67248
[refactor] #93 ci 환경에서도 서명인증 정보 알 수 있도록 구현
kamja0510 Jan 30, 2026
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
11 changes: 10 additions & 1 deletion .github/workflows/dplay_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,17 @@ jobs:
echo "base.url=$BASE_URL" >> local.properties
echo "kakao.app.key=$KAKAO_APP_KEY" >> local.properties

- name: Decode Keystore
run : |
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > ./keystore.jks

- name: Run Ktlint Check
run: ./gradlew ktlintCheck

- name: Build with Gradle
run: ./gradlew build
run: ./gradlew build
env:
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
STORE_FILE: ./keystore.jks
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -181,4 +181,7 @@ fabric.properties

!/gradle/wrapper/gradle-wrapper.jar

# End of https://www.toptal.com/developers/gitignore/api/android,androidstudio,kotlin
# End of https://www.toptal.com/developers/gitignore/api/android,androidstudio,kotlin

output-metadata.json
app-release.dm
24 changes: 3 additions & 21 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,21 +1,3 @@
# 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
# 카카오 sdk 내부에 모델이 이름이 바뀌어 NoSuchFieldException 발생 방지
-keep class com.kakao.sdk.auth.model.** { *; }
-keep class com.kakao.sdk.common.model.** { *; }
Binary file modified app/src/main/ic_launcher-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 4 additions & 4 deletions app/src/main/java/com/dplay/worker/DailyQuestionWorker.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ class DailyQuestionWorker(
private fun showNotification() {
val notificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val title = context.getString(R.string.notification_title)
val content = context.getString(R.string.notification_content)

// 명시적으로 버전 관리
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Expand Down Expand Up @@ -55,8 +57,8 @@ class DailyQuestionWorker(
NotificationCompat
.Builder(context, CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(NOTIFICATION_CONTENT_TITLE)
.setContentText(NOTIFICATION_CONTENT_TEXT)
.setContentTitle(title)
.setContentText(content)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent)
.setAutoCancel(true)
Expand All @@ -70,8 +72,6 @@ class DailyQuestionWorker(
const val CHANNEL_NAME = "Daily Question"
const val CHANNEL_DESCRIPTION = "Daily Question Notification"
const val NOTIFICATION_ID = 1001
const val NOTIFICATION_CONTENT_TITLE = "오늘의 질문이 도착했습니다!"
const val NOTIFICATION_CONTENT_TEXT = "지금 바로 확인해보세요."
const val WORK_NAME = "daily_question_work"
const val TAG = "DailyQuestionWorker"
}
Expand Down
Binary file modified app/src/main/res/mipmap-hdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-mdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xhdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<resources>
<string name="app_name">DPlay</string>
<string name="app_name">Dplay</string>
<string name="notification_title">디플레이</string>
<string name="notification_content">오늘의 질문이 도착했어요</string>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import java.io.FileInputStream
import java.util.Properties

class AndroidApplicationConventionPlugin: Plugin<Project> {
Expand All @@ -21,6 +22,13 @@ class AndroidApplicationConventionPlugin: Plugin<Project> {
apply("org.jlleitschuh.gradle.ktlint")
}

val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("local.properties")
val isLocalPropertiesExists = keystorePropertiesFile.exists()
if (isLocalPropertiesExists) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}

extensions.configure<ApplicationExtension> {
configureKotlinAndroid(this)
configureComposeAndroid(this)
Expand All @@ -31,8 +39,42 @@ class AndroidApplicationConventionPlugin: Plugin<Project> {
versionName = libs.getVersion("versionName").requiredVersion
}

dependencies{
add("implementation",libs.getLibrary("timber"))
signingConfigs {
create("release") {
keyAlias = (keystoreProperties["keyAlias"] as? String)
?: System.getenv("KEY_ALIAS")

keyPassword = (keystoreProperties["keyPassword"] as? String)
?: System.getenv("KEY_PASSWORD")

storePassword = (keystoreProperties["storePassword"] as? String)
?: System.getenv("STORE_PASSWORD")

val keyStoreFile = (keystoreProperties["storeFile"] as? String)
?: System.getenv("STORE_FILE")

if (keyStoreFile != null) {
storeFile = rootProject.file(keyStoreFile)
}
}
}

buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
)
if (keystoreProperties.getProperty("storeFile") != null || System.getenv("STORE_FILE") != null) {
signingConfig = signingConfigs.getByName("release")
}
}
}

dependencies {
add("implementation", libs.getLibrary("timber"))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.example.designsystem.component

import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.dplay.designsystem.R
import com.example.designsystem.theme.DPlayTheme

@Composable
fun DPlayErrorScreen(
modifier: Modifier = Modifier,
onBackIconClick: () -> Unit = {},
) {
Column(
modifier = modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
DplayLeftIconTopAppBar {
onBackIconClick()
}

Spacer(modifier = Modifier.height(height = 132.dp))

Image(
painter = painterResource(id = R.drawable.img_warning),
contentDescription = null,
modifier = Modifier.size(size = 140.dp),
)

Spacer(modifier = Modifier.height(height = 12.dp))

Text(
text = stringResource(R.string.error_main_text),
style = DPlayTheme.typography.bodyBold16,
color = DPlayTheme.colors.dplayBlack,
)

Spacer(modifier = Modifier.height(height = 8.dp))

Text(
text = stringResource(R.string.error_sub_text),
style = DPlayTheme.typography.bodyMed14,
color = DPlayTheme.colors.gray400,
)
}
}

@Preview
@Composable
private fun DPlayErrorScreenPreview(modifier: Modifier = Modifier) {
DPlayTheme {
DPlayErrorScreen(modifier = modifier)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.example.designsystem.component

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.designsystem.theme.DPlayTheme

@Composable
fun DPlayLoadingScreen(
modifier: Modifier = Modifier,
) {
Box(
modifier = modifier.fillMaxSize(),
contentAlignment = Alignment.Center,
) {
CircularProgressIndicator()
}
}

@Preview
@Composable
private fun DPlayLoadingScreenPreview() {
DPlayTheme {
DPlayLoadingScreen()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.example.designsystem.theme.DPlayTheme
import com.example.designsystem.util.noRippleClickable
Expand All @@ -22,6 +24,10 @@ fun DPlayMusicGridItem(
musicArtistName: String,
modifier: Modifier = Modifier,
onClick: () -> Unit = {},
titleStyle: TextStyle = DPlayTheme.typography.bodySemi14,
artistStyle: TextStyle = DPlayTheme.typography.capMed12,
spaceBetweenCover: Dp = 5.dp,
spaceBetweenText: Dp = 1.dp,
) {
Column(modifier = modifier.noRippleClickable(onClick = onClick), horizontalAlignment = Alignment.CenterHorizontally) {
DPlayMusicDiscItem(
Expand All @@ -30,18 +36,18 @@ fun DPlayMusicGridItem(
Modifier
.fillMaxWidth(),
)
Spacer(modifier = Modifier.height(5.dp))
Spacer(modifier = Modifier.height(spaceBetweenCover))
Text(
text = musicName,
style = DPlayTheme.typography.bodySemi14,
style = titleStyle,
color = DPlayTheme.colors.dplayBlack,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
Spacer(modifier = Modifier.height(1.dp))
Spacer(modifier = Modifier.height(spaceBetweenText))
Text(
text = musicArtistName,
style = DPlayTheme.typography.capMed12,
style = artistStyle,
color = DPlayTheme.colors.gray400,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ fun DPlayGuidelineButton(
)

Spacer(
modifier = Modifier.size(8.dp),
modifier = Modifier.size(4.dp),
)

Text(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ sealed class CircleButtonType {
override val contentDescription: Int = R.string.circle_plus_button_icon_default_description,
) : CircleButtonType() {
override val containerSize = 56.dp
override val backgroundColor = defaultDPlayColors.dplayBlack
override val backgroundColor = defaultDPlayColors.gray600
override val iconRes = R.drawable.ic_plus_28
override val iconSize = 28.dp
override val iconTint = defaultDPlayColors.dplayWhite
Expand Down

This file was deleted.

Loading