Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Release] 1.0.0 배포 - master #86

Merged
merged 53 commits into from
Feb 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
4bf8888
[init] : .toml dependency build-logic module (#1)
murjune Jan 21, 2024
cb11eb2
Init ktlint, github 환경설정 (#7)
murjune Jan 22, 2024
12aafc7
init design system (#9)
murjune Jan 22, 2024
ff8c1f2
[Init] Create Home Module (#11)
ham2174 Jan 22, 2024
fd6b25c
[Feature] 디자인 시스템 - Icon Button (#13)
ham2174 Jan 22, 2024
f90f430
designsystem module (Background, Gradient 추가) (#14)
murjune Jan 22, 2024
07cbd6a
[Feature] 디자인 시스템 - TextField, ErrorCaption (#16)
ham2174 Jan 25, 2024
41f5502
[feat/Design system] Button 컴포넌트 , neonSign, singleClickable Modif…
murjune Jan 25, 2024
fe51dae
[Refactor, Chore] 디자인 시스템 내부 파일 이동 및 수정, 모듈명 변경 (#17)
ham2174 Jan 25, 2024
405a245
Feature/init test module (#19)
murjune Jan 28, 2024
e1fdcd2
[feat/designSystem] funch chip, toolbar (#18)
murjune Jan 28, 2024
a5adb0f
[feat] refactor build-logic, init network module (#21)
murjune Jan 28, 2024
c6255b5
[feat] dataStore 모듈 초기 세팅 (#23)
murjune Jan 29, 2024
dfbbfd1
[Feature] 홈 UI 제작 (#24)
ham2174 Jan 31, 2024
62bb831
[Feat] network 기초 세팅, RetrofitModule, ServiceModule 구현 (#25)
murjune Jan 31, 2024
7a1ff40
[feat] UserCodeDataStore - userId 추가 (#30)
murjune Feb 3, 2024
7eee4ac
[Feature] 홈 모듈 생성 및 홈-프로필 네비게이션 연결 (#29)
ham2174 Feb 3, 2024
12bb868
[Feat] FunchChip matched 시 border 및 neonSign 효과 구현 (#31)
murjune Feb 4, 2024
89f5ee7
[fix] profileResponse DTO 변경 - 별자리 out, 혈액형 on (#32)
murjune Feb 4, 2024
4ecd6d1
[Feature] data module 초기 세팅 (#38)
murjune Feb 6, 2024
d3d1068
[feat] domain module 세팅, matching profile entity 설정 (#33)
murjune Feb 6, 2024
c32eb24
[fix] ktlint 설정 변경 (#42)
murjune Feb 6, 2024
c24ad47
[feat] Match 모듈 생성, Home에서 Match Navigation 로직, Match presentation 로직…
murjune Feb 8, 2024
f16b0dd
[Feat] Matching UI 구현 (Profile 부분 제외), statusBar Color 설정, Throttle 증…
murjune Feb 8, 2024
9c38b17
[Feature] FunchDropDown 제작 (#45)
ham2174 Feb 9, 2024
37cdb33
[Feature] 내 프로필 UI 제작 (#47)
ham2174 Feb 9, 2024
55772bb
[Feat] Match, Member datastore, network, data, domain 쪽 구현 (#48)
murjune Feb 10, 2024
ec5bf20
Feature/matching data (#52)
murjune Feb 10, 2024
dd879d8
Feature/home data domain logic (#54)
murjune Feb 10, 2024
fa9dd8c
[fix] data모듈 Result.map() -> Result.mapCatching으로 수정, dataStore Devic…
murjune Feb 11, 2024
24709b3
[feature] Home - UI, Presentation 로직, App - MatchingModule, MemberMod…
murjune Feb 11, 2024
f173fb5
[Feature] OnBoarding UI 구현, APP Icon 추가 (#57)
murjune Feb 12, 2024
7df65ec
[Feat] match 화면 icon 적용, Usecase 적용 (#59)
murjune Feb 12, 2024
dc9eae0
[Feat] 프로필 생성 UI 제작 (#58)
ham2174 Feb 13, 2024
40fbcf3
[Feature] 프로필 생성 기능 제작 (#62)
ham2174 Feb 13, 2024
aedea13
[Feature] onboarding lottie -> Icon 으로 바꾸기, dummyId -> dataStore.id로…
murjune Feb 15, 2024
2e7f2d6
[Feature] 매칭시 발생되는 로딩 UI 구현 및 적용 (#70)
ham2174 Feb 15, 2024
01992a7
[fix] 앱 로고 수정 (#71)
murjune Feb 17, 2024
3467022
[Feat] 내 프로필 기능 구현 (#68)
ham2174 Feb 17, 2024
942ef0f
[feat] 피드백 버튼에 구글 폼 연동 (#74)
murjune Feb 18, 2024
8faf5a2
[Feat] 지하철 검색 기능 Data, Domain, Network 구현 (#72)
ham2174 Feb 18, 2024
b5ee851
[Feat] 지하철 검색 UI 제작 및 기능 구현 (#75)
ham2174 Feb 19, 2024
78718e0
[Feat] splash screen (#77)
murjune Feb 19, 2024
8a48fc4
[feat] Match Recommend, profile UI 구현 (#73)
murjune Feb 19, 2024
67d912d
[Feat] Home - viewCount 업데이트 (#81)
murjune Feb 20, 2024
afa21ba
[Refactor] 내 프로필 지하철 이름에 '역' 추가 (#78)
ham2174 Feb 20, 2024
2511d21
[Feat] 온보딩 화면 연결 및 UX 개선 (#83)
ham2174 Feb 20, 2024
dffdf23
[feat] : 키스토어 설정
ham2174 Feb 20, 2024
034aa22
[chore] : reformat
ham2174 Feb 20, 2024
f2dbe88
build : PR_BUILDER $STORE_PASSWORD
murjune Feb 20, 2024
94b6975
build : master로 수정
murjune Feb 20, 2024
4526299
build : 파일 위치 수정
murjune Feb 20, 2024
733ed01
[CI] : 워크플로우 키스토어 파일 추가
ham2174 Feb 20, 2024
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
22 changes: 18 additions & 4 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
# https://editorconfig.org/
# This configuration is used by ktlint when spotless invokes it
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = unset
indent_style = space
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120
tab_width = unset

[*.{yaml,yml}]
tab_width = 2
indent_size = 2

[*.{kt,kts}]
ij_kotlin_allow_trailing_comma=true
ij_kotlin_allow_trailing_comma_on_call_site=true
indent_size = 4
tab_width = 4
ktlint_code_style = android_studio
ktlint_function_naming_ignore_when_annotated_with=Composable, Test
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/issue-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
name: Issue Template
about: 이슈 템플릿
title: "[Type] 이슈 내용"
labels: ''
assignees: ''

---

## ISSUE
-

## To-Do
- [ ] 작업할 내용
10 changes: 10 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## 관련 이슈
- closed #이슈넘버

## 작업한 내용
-

## PR 포인트
-

## 🚀Next Feature
72 changes: 72 additions & 0 deletions .github/workflows/PR_Builder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Hous PR Builder

on:
pull_request:
branches: [ develop, master ]

jobs:
build:
name: PR Checker
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Gradle cache
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-

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

# - name: Create Google-Services.json
# env:
# GOOGLE_SERVICES: ${{ secrets.GOOGLE_SERVICES }}
# run: |
# touch ./app/google-services.json
# echo $GOOGLE_SERVICES >> ./app/google-services.json
# cat ./app/google-services.json
#
- name: Create Local Properties
run: touch local.properties

- name: Access Local Properties
env:
FUNCH_DEBUG_BASE_URL: ${{ secrets.FUNCH_DEBUG_BASE_URL }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
STORE_FILE: ${{ secrets.STORE_FILE }}
run: |
echo FUNCH_DEBUG_BASE_URL=\"FUNCH_DEBUG_BASE_URL\" >> local.properties
echo STORE_PASSWORD= $STORE_PASSWORD >> local.properties
echo KEY_PASSWORD= $KEY_PASSWORD >> local.properties
echo KEY_ALIAS= $KEY_ALIAS >> local.properties
echo STORE_FILE= $STORE_FILE >> local.properties

- name: Create Key Store
env:
KEY_STORE_BASE_64: ${{secrets.KEY_STORE_BASE_64}}
run: |
echo "$KEY_STORE_BASE_64" | base64 -d > ./funch_key_store.jks

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Lint Check
run: ./gradlew ktlintCheck

- name: run rest
run: ./gradlew test

- name: Build with Gradle
run: ./gradlew build
91 changes: 66 additions & 25 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,21 +1,37 @@
@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
import java.io.FileInputStream
import org.jetbrains.kotlin.konan.properties.Properties

plugins {
alias(libs.plugins.androidApplication)
alias(libs.plugins.kotlinAndroid)
alias(libs.plugins.funch.application)
alias(libs.plugins.funch.compose)
// alias(libs.plugins.google.services)
// alias(libs.plugins.app.distribution)
// alias(libs.plugins.crashlytics)
}

android {
namespace = "com.moya.punch"
compileSdk = 34
namespace = "com.moya.funch"

packaging {
resources.excludes.add("META-INF/LICENSE*")
}

defaultConfig {
applicationId = "com.moya.punch"
minSdk = 28
targetSdk = 34
versionCode = 1
versionName = "1.0"
applicationId = "com.moya.funch"
versionCode = libs.versions.versionCode.get().toInt()
versionName = libs.versions.appVersion.get()
}

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
signingConfigs {
create("release") {
Properties().apply {
load(FileInputStream(rootProject.file("local.properties")))
storeFile = rootProject.file(this["STORE_FILE"] as String)
keyAlias = this["KEY_ALIAS"] as String
keyPassword = this["KEY_PASSWORD"] as String
storePassword = this["STORE_PASSWORD"] as String
}
}
}

buildTypes {
Expand All @@ -25,23 +41,48 @@ android {
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
signingConfig = signingConfigs.getByName("release")
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}

dependencies {
// core
implementation(projects.core.designsystem)
implementation(projects.core.domain)
implementation(projects.core.data)
implementation(projects.core.datastore)
// feature
implementation(projects.feature.profile)
implementation(projects.feature.home)
implementation(projects.feature.match)
implementation(projects.feature.onboarding)
// implementation(libs.coil.core)
implementation(libs.startup)
// implementation(libs.security)
implementation(libs.splash.screen)

// Google
// implementation(libs.google.android.gms)

implementation(libs.core.ktx)
implementation(libs.appcompat)
implementation(libs.material)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.test.ext.junit)
androidTestImplementation(libs.espresso.core)
}
// Third Party
implementation(libs.compose.lottie)
implementation(libs.coil.core)
// implementation(libs.kakao.login)
implementation(libs.bundles.retrofit)
implementation(libs.lifecycle)
implementation(libs.activity.compose)
implementation(platform(libs.compose.bom))
implementation(libs.ui)
implementation(libs.ui.graphics)
implementation(libs.ui.tooling.preview)
implementation(libs.material3.compose)
androidTestImplementation(platform(libs.compose.bom))
androidTestImplementation(libs.ui.test.junit4)
debugImplementation(libs.ui.tooling)
debugImplementation(libs.ui.test.manifest)

// Firebase
// implementation(platform(libs.firebase))
// implementation(libs.bundles.firebase)
}
26 changes: 21 additions & 5 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,31 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

<application
android:name=".FunchApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/ic_funch_logo"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:roundIcon="@mipmap/ic_funch_logo_round"
android:supportsRtl="true"
android:theme="@style/Theme.PunchAOS"
tools:targetApi="31" />
android:theme="@style/Theme.FunchAOS.Splash"
android:usesCleartextTraffic="true"
tools:targetApi="34">
<activity
android:name=".MainActivity"
android:exported="true"
android:windowSoftInputMode="adjustResize"
android:theme="@style/Theme.FunchAOS.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
</manifest>
Binary file added app/src/main/ic_funch_logo-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions app/src/main/java/com/moya/funch/FunchApplication.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.moya.funch

import android.app.Application
import dagger.hilt.android.HiltAndroidApp
import timber.log.Timber

@HiltAndroidApp
class FunchApplication : Application() {
override fun onCreate() {
super.onCreate()
initTimber()
}

private fun initTimber() {
if (BuildConfig.DEBUG) {
Timber.plant(
object : Timber.DebugTree() {
override fun createStackElementTag(element: StackTraceElement): String {
return "${element.fileName} : ${element.lineNumber} - ${element.methodName}"
}
}
)
}
}
}
46 changes: 46 additions & 0 deletions app/src/main/java/com/moya/funch/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.moya.funch

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import com.moya.funch.datastore.UserDataStore
import com.moya.funch.splash.LoadingScreen
import com.moya.funch.theme.FunchTheme
import com.moya.funch.ui.FunchApp
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import kotlinx.coroutines.delay

@AndroidEntryPoint
class MainActivity : ComponentActivity() {

@Inject
lateinit var dataStore: UserDataStore

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen()
setContent {
FunchTheme {
var showLoading by remember { mutableStateOf(true) }

LaunchedEffect(Unit) {
delay(1500)
showLoading = false
}

if (showLoading) {
LoadingScreen()
} else {
FunchApp(dataStore = dataStore)
}
}
}
}
}
38 changes: 38 additions & 0 deletions app/src/main/java/com/moya/funch/di/MatchModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.moya.funch.di

import com.moya.funch.repository.MatchingRepository
import com.moya.funch.repository.MatchingRepositoryImpl
import com.moya.funch.usecase.CanMatchProfileUseCase
import com.moya.funch.usecase.CanMatchProfileUseCaseImpl
import com.moya.funch.usecase.MatchProfileUseCase
import com.moya.funch.usecase.MatchProfileUseCaseImpl
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object MatchModule {

@Module
@InstallIn(SingletonComponent::class)
interface UseCaseBinder {
@Binds
@Singleton
fun bindCanMatchUseCase(useCase: CanMatchProfileUseCaseImpl): CanMatchProfileUseCase

@Binds
@Singleton
fun bindMatchProfileUseCase(useCase: MatchProfileUseCaseImpl): MatchProfileUseCase
}

@Module
@InstallIn(SingletonComponent::class)
interface RepositoryBinder {
@Binds
@Singleton
fun bindMatchingRepository(repository: MatchingRepositoryImpl): MatchingRepository
}
}
Loading
Loading