Skip to content

Commit

Permalink
Merge branch 'refs/heads/develop'
Browse files Browse the repository at this point in the history
# Conflicts:
#	README.md
  • Loading branch information
chanubc committed Sep 24, 2024
2 parents fc047e1 + 331e226 commit bc85e26
Show file tree
Hide file tree
Showing 412 changed files with 19,973 additions and 28 deletions.
22 changes: 22 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
root = true

[*]
insert_final_newline = true

[*.{kt,kts}]
ktlint_code_style = intelli_idea
ktlint_standard_class-signature = disabled
ktlint_standard_parameter-list-wrapping = disabled
ktlint_standard_function-signature = disabled
ktlint_standard_function-expression-body = disabled
ktlint_standard_function-literal = disabled
ktlint_standard_multiline-if-else = disabled
ktlint_standard_if-else-wrapping = disabled
ktlint_standard_argument-list-wrapping = disabled
ktlint_standard_binary-expression-wrapping = disabled
ktlint_standard_max-line-length = disabled
ktlint_standard_function-naming = disabled
ktlint_standard_chain-method-continuation = disabled
ktlint_standard_multiline-expression-wrapping = disabled
ktlint_standard_annotation = disabled
ktlint_function_naming_ignore_when_annotated_with = Composable
98 changes: 70 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,70 @@
# ANDROID
# 꾸물꿈 ANDROID

<br>

## 🛠 𝙏𝙚𝙘𝙝 𝙎𝙩𝙖𝙘𝙠
![image](https://github.com/user-attachments/assets/4bd78378-3597-4f9b-9414-cff7db1e7b35)

## 꾸물이들의 정시 도착 꿈을 이룰 수 있는 서비스, 꾸물꿈

꾸물꿈은 모든 지각 꾸물이들의 정시 도착 꿈을 이뤄주기 위한 서비스입니다.
체계적으로 약속을 위한 시간을 관리하고, 친구들과 재미있고 확실한 지각 문제를 해결해 줄 수 있습니다.

꾸물꿈을 사용하면 자주 만나는 친구들과 함께 모임을 생성하고, 모임 내에 약속을 추가하고 약속에 관한 정보들을 공유할 수 있습니다.
약속에 관한 정보들에는 약속 이름, 위치, 날짜 및 시간, 꾸레벨, 벌칙이 있습니다.

더 나아가 꾸물꿈에서는 친구들과 서로의 준비 현황 및 이동 현황을 공유함으로써, 함께 정시 도착을 꿈꿀 수 있습니다.
준비 및 이동 정보를 설정함으로써, 사용자 본인의 알림과 약속에 함께 하는 친구들의 현황에 관한 푸시 알림을 받을 수도 있습니다.

꾸물꿈에서 친구들과 모임 및 약속을 생성하고, 지각 없는 정시 도착을 꿈꿔보세요 !



<br>
🛠 𝙏𝙚𝙘𝙝 𝙎𝙩𝙖𝙘𝙠
<br>

<br>

+ ***`Google Recommended Architecture`***
+ `𝙈𝙑𝙑𝙈`
+ `𝙆𝙤𝙩𝙡𝙞𝙣`
+ `𝘾𝙤𝙧𝙤𝙪𝙩𝙞𝙣𝙚`
+ `𝙐𝙞𝙎𝙩𝙖𝙩𝙚`
+ `𝙎𝙩𝙖𝙩𝙚𝙁𝙡𝙤𝙬 & 𝙎𝙝𝙖𝙧𝙚𝙙𝙁𝙡𝙤𝙬`
+ `𝙃𝙞𝙡𝙩`
+ `Google Recommended 𝘼𝙧𝙘𝙝𝙞𝙩𝙚𝙘𝙩𝙪𝙧𝙚`
+ `𝙅𝙚𝙩𝙥𝙖𝙘𝙠𝙉𝙖𝙫𝙞𝙜𝙖𝙩𝙞𝙤𝙣`
+ `𝙈𝙪𝙡𝙩𝙞 𝙈𝙤𝙙𝙪𝙡𝙚`
+ ***`Multi Part`***
+ ***`FCM`***
+ ***`Social Login (Auto Login)`***
+ `𝙑𝙚𝙧𝙨𝙞𝙤𝙣 𝘾𝙖𝙩𝙖𝙡𝙤𝙜`
+ ***`Repository Pattern`***
+ ***`ViewPager2`***
+ ***`Data Binding`***
+ ***`Timber`***
+ ***`KtLint Plugin`***
+ ***`Other Tools: Slack, Notion, Figma`***

<br>

<br>

## 💚 𝘾𝙤𝙣𝙩𝙧𝙞𝙗𝙪𝙩𝙤𝙧𝙨

| SOPT 34th 안드로이드 | [Chanwoo Bae](https://github.com/chanubc) | [Yoonseo Kim](https://github.com/yskim6772) | [Hyoeun Joo](https://github.com/hyoeunjoo) |
|:------------------------------------:|:------------------------------------:|:-------------------------:|:------------------------------:|
| ![image](https://github.com/OMZigak/ANDROID/assets/137873124/38a4a51d-20a4-44a8-bd99-1c83fa306b44)|![image](https://github.com/OMZigak/ANDROID/assets/137873124/dec9de40-9db6-41cc-8079-04e2d149e203)|![image](https://github.com/OMZigak/ANDROID/assets/137873124/7ef723fe-58c4-4923-afd8-a8567996be13)|![image](https://github.com/OMZigak/ANDROID/assets/137873124/186b193b-d3bf-45c0-bac6-0ef8b2063d03)


| SOPT 34th 안드로이드 | [Chanwoo Bae](https://github.com/chanubc) | [Yoonseo Kim](https://github.com/yskim6772) | [Hyoeun Joo](https://github.com/hyoeunjoo) |
|:--------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------:|
| ![image](https://github.com/OMZigak/ANDROID/assets/137873124/38a4a51d-20a4-44a8-bd99-1c83fa306b44) | ![image](https://github.com/OMZigak/ANDROID/assets/137873124/dec9de40-9db6-41cc-8079-04e2d149e203) | ![image](https://github.com/OMZigak/ANDROID/assets/137873124/7ef723fe-58c4-4923-afd8-a8567996be13) | ![image](https://github.com/OMZigak/ANDROID/assets/137873124/186b193b-d3bf-45c0-bac6-0ef8b2063d03) |
| 솝트 34기 안드 꾸물꿈 | FCM, 로컬 알람, 홈화면 구현 | 온보딩, 모임 추가화면 |약속추가, 모임 상세 화면


<br>


<br>


## 💟 𝘾𝙤𝙣𝙫𝙚𝙣𝙩𝙞𝙤𝙣
+ [Coding Convention](https://arrow-frog-4b9.notion.site/7069ef71f6364b19af85c9001aeda525?v=3e730a462e5c47c6a461c7d20703db9f&pvs=4)
+ [Branch Convention](https://arrow-frog-4b9.notion.site/Branch-Convention-f8823e2d14eb40a5bcf845b1124198b1?pvs=4)
Expand All @@ -35,35 +74,38 @@
<br>

## 💟 𝙆𝙖𝙣𝙗𝙖𝙣 𝘽𝙤𝙖𝙧𝙙
+
+ [Github Project](https://github.com/orgs/OMZigak/projects/1)

<br>

## 📁 Module Structure
<p align="center"><img src="https://github.com/OMZigak/ANDROID/assets/106955456/50a349f4-e2ad-4450-8a86-9f739ba1c9c4" width = 70% ></p>
<br>


## 📁 𝙁𝙤𝙡𝙙𝙚𝙧𝙞𝙣𝙜
```
📂 DontBe
┣ 📂 build-logic
📂 Kkumul
┣ 📂 app
┃ ┣ 📂 di
┣ 📂 core-ui
┃ ┣ 📂 base
┃ ┣ 📂 util
┃ ┣ 📂 view
┣ 📂 data-local
┣ 📂 data-remote
┃ ┣ 📂 api
┃ ┣ 📂 datasourceimpl
┣ 📂 data
┃ ┣ 📂 datasource
┃ ┣ 📂 repositoryimpl
┃ ┣ 📂 dto
┣ 📂 domain
┃ ┣ 📂 datasource
┃ ┣ 📂 entity
┣ 📂 core
┃ ┣ 📂 data
┃ ┃ ┣ 📂 di
┃ ┃ ┣ 📂 mapper
┃ ┃ ┣ 📂 repository
┃ ┃ ┣ 📂 repositoryimpl
┃ ┣ 📂 datastore
┃ ┣ 📂 designsystem
┃ ┣ 📂 model
┃ ┣ 📂 network
┃ ┃ ┣ 📂 api
┃ ┃ ┣ 📂 di
┃ ┃ ┣ 📂 dto
┃ ┃ ┣ 📂 interceptor
┃ ┣ 📂 ui
┣ 📂 feature
┃ ┣ 📂 home
┃ ┣ 📂 posting
┃ ┣ 📂 mypage
┃ ┣ 📂 notification
┃ ┣ 📂 group
┃ ┣ 📂 meetup
┃ ┣ 📂 mypage
┃ ┣ 📂 util
```
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
76 changes: 76 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import java.util.Properties

plugins {
alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsKotlinAndroid)
alias(libs.plugins.kotlin.kapt)
alias(libs.plugins.dagger.hilt)
alias(libs.plugins.google.services)
}

val properties = Properties()
properties.load(rootProject.file("local.properties").inputStream())

fun String.removeQuotes(): String {
return this.replace("\"", "")
}

android {
namespace = "com.teamkkumul.kkumul"
compileSdk = 34

defaultConfig {
applicationId = "com.teamkkumul.kkumul"
minSdk = 28
targetSdk = 34
versionCode = 1
versionName = "1.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

val kakaoAppKey = properties["kakao.app.key"].toString().removeQuotes()

buildConfigField("String", "KAKAO_APP_KEY", "\"$kakaoAppKey\"")
manifestPlaceholders["kakaoAppkey"] = kakaoAppKey
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
buildFeatures {
dataBinding = true
buildConfig = true
}
}

dependencies {
implementation(project(":core:network"))
implementation(project(":feature"))

implementation(platform(libs.firebase.bom))
implementation(libs.bundles.firebase)

implementation(libs.kakao.login)
implementation(libs.timber)

implementation(libs.dagger.hilt)
implementation(libs.androidx.appcompat)
kapt(libs.dagger.hilt.compiler)

testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
}
31 changes: 31 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# 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

##---------------Begin: Kakao SDK ----------
-keep class com.kakao.sdk.**.model.* { <fields>; }
-keep class * extends com.google.gson.TypeAdapter
-keep interface com.kakao.sdk.**.*Api
##---------------END: Kakao SDK ----------

## Firebase Cloud Messaging (FCM)
-keep class com.google.android.gms.** { *; }
-keep class com.google.firebase.** { *; }
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.teamkkumul.kkumul

import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4

import org.junit.Test
import org.junit.runner.RunWith

import org.junit.Assert.*

/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.teamkkumul.kkumul", appContext.packageName)
}
}
68 changes: 68 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.USE_EXACT_ALARM" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />

<application
android:name=".KkumulApp"
android:allowBackup="false"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Kkumul"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<activity
android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data
android:host="oauth"
android:scheme="kakao${kakaoAppkey}" />
</intent-filter>
</activity>

<receiver
android:name="com.teamkkumul.feature.meetup.readystatus.readyinfoinput.alarm.AlarmReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED" />
</intent-filter>
</receiver>

<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/img_kum_logo" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/white0" />

<service
android:name=".KkumulFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
Loading

0 comments on commit bc85e26

Please sign in to comment.