diff --git a/feature/auth/build.gradle.kts b/feature/auth/build.gradle.kts new file mode 100644 index 0000000..a0e3907 --- /dev/null +++ b/feature/auth/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + alias(libs.plugins.mcl.android.feature) +} + +android { + namespace = "com.mingyuan.android_client.feature.auth" +} diff --git a/feature/auth/src/main/AndroidManifest.xml b/feature/auth/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/feature/auth/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/feature/auth/src/main/kotlin/com/mingyuan/android_client/feature/auth/AuthScreen.kt b/feature/auth/src/main/kotlin/com/mingyuan/android_client/feature/auth/AuthScreen.kt new file mode 100644 index 0000000..f4e5b5f --- /dev/null +++ b/feature/auth/src/main/kotlin/com/mingyuan/android_client/feature/auth/AuthScreen.kt @@ -0,0 +1,18 @@ +package com.mingyuan.android_client.feature.auth + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier + +/** Navigation route for this feature, referenced by the app-level NavHost. */ +const val AUTH_ROUTE = "auth" + +@Composable +fun AuthScreen(modifier: Modifier = Modifier) { + Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + Text(text = "Auth") + } +} diff --git a/feature/auth/src/main/kotlin/com/mingyuan/android_client/feature/auth/AuthViewModel.kt b/feature/auth/src/main/kotlin/com/mingyuan/android_client/feature/auth/AuthViewModel.kt new file mode 100644 index 0000000..a229a6a --- /dev/null +++ b/feature/auth/src/main/kotlin/com/mingyuan/android_client/feature/auth/AuthViewModel.kt @@ -0,0 +1,8 @@ +package com.mingyuan.android_client.feature.auth + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class AuthViewModel @Inject constructor() : ViewModel() diff --git a/feature/checkin/build.gradle.kts b/feature/checkin/build.gradle.kts new file mode 100644 index 0000000..6a4620a --- /dev/null +++ b/feature/checkin/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + alias(libs.plugins.mcl.android.feature) +} + +android { + namespace = "com.mingyuan.android_client.feature.checkin" +} diff --git a/feature/checkin/src/main/AndroidManifest.xml b/feature/checkin/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/feature/checkin/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/feature/checkin/src/main/kotlin/com/mingyuan/android_client/feature/checkin/CheckinScreen.kt b/feature/checkin/src/main/kotlin/com/mingyuan/android_client/feature/checkin/CheckinScreen.kt new file mode 100644 index 0000000..43e26b7 --- /dev/null +++ b/feature/checkin/src/main/kotlin/com/mingyuan/android_client/feature/checkin/CheckinScreen.kt @@ -0,0 +1,18 @@ +package com.mingyuan.android_client.feature.checkin + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier + +/** Navigation route for this feature, referenced by the app-level NavHost. */ +const val CHECKIN_ROUTE = "checkin" + +@Composable +fun CheckinScreen(modifier: Modifier = Modifier) { + Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + Text(text = "Check-in") + } +} diff --git a/feature/checkin/src/main/kotlin/com/mingyuan/android_client/feature/checkin/CheckinViewModel.kt b/feature/checkin/src/main/kotlin/com/mingyuan/android_client/feature/checkin/CheckinViewModel.kt new file mode 100644 index 0000000..ec6ab51 --- /dev/null +++ b/feature/checkin/src/main/kotlin/com/mingyuan/android_client/feature/checkin/CheckinViewModel.kt @@ -0,0 +1,8 @@ +package com.mingyuan.android_client.feature.checkin + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class CheckinViewModel @Inject constructor() : ViewModel() diff --git a/feature/course/build.gradle.kts b/feature/course/build.gradle.kts new file mode 100644 index 0000000..0e53b29 --- /dev/null +++ b/feature/course/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + alias(libs.plugins.mcl.android.feature) +} + +android { + namespace = "com.mingyuan.android_client.feature.course" +} diff --git a/feature/course/src/main/AndroidManifest.xml b/feature/course/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/feature/course/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/feature/course/src/main/kotlin/com/mingyuan/android_client/feature/course/CourseScreen.kt b/feature/course/src/main/kotlin/com/mingyuan/android_client/feature/course/CourseScreen.kt new file mode 100644 index 0000000..3b99c88 --- /dev/null +++ b/feature/course/src/main/kotlin/com/mingyuan/android_client/feature/course/CourseScreen.kt @@ -0,0 +1,18 @@ +package com.mingyuan.android_client.feature.course + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier + +/** Navigation route for this feature, referenced by the app-level NavHost. */ +const val COURSE_ROUTE = "course" + +@Composable +fun CourseScreen(modifier: Modifier = Modifier) { + Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + Text(text = "Course") + } +} diff --git a/feature/course/src/main/kotlin/com/mingyuan/android_client/feature/course/CourseViewModel.kt b/feature/course/src/main/kotlin/com/mingyuan/android_client/feature/course/CourseViewModel.kt new file mode 100644 index 0000000..e3f3a98 --- /dev/null +++ b/feature/course/src/main/kotlin/com/mingyuan/android_client/feature/course/CourseViewModel.kt @@ -0,0 +1,8 @@ +package com.mingyuan.android_client.feature.course + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class CourseViewModel @Inject constructor() : ViewModel() diff --git a/feature/feedback/build.gradle.kts b/feature/feedback/build.gradle.kts new file mode 100644 index 0000000..ab0baab --- /dev/null +++ b/feature/feedback/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + alias(libs.plugins.mcl.android.feature) +} + +android { + namespace = "com.mingyuan.android_client.feature.feedback" +} diff --git a/feature/feedback/src/main/AndroidManifest.xml b/feature/feedback/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/feature/feedback/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/feature/feedback/src/main/kotlin/com/mingyuan/android_client/feature/feedback/FeedbackScreen.kt b/feature/feedback/src/main/kotlin/com/mingyuan/android_client/feature/feedback/FeedbackScreen.kt new file mode 100644 index 0000000..1360896 --- /dev/null +++ b/feature/feedback/src/main/kotlin/com/mingyuan/android_client/feature/feedback/FeedbackScreen.kt @@ -0,0 +1,18 @@ +package com.mingyuan.android_client.feature.feedback + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier + +/** Navigation route for this feature, referenced by the app-level NavHost. */ +const val FEEDBACK_ROUTE = "feedback" + +@Composable +fun FeedbackScreen(modifier: Modifier = Modifier) { + Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + Text(text = "Feedback") + } +} diff --git a/feature/feedback/src/main/kotlin/com/mingyuan/android_client/feature/feedback/FeedbackViewModel.kt b/feature/feedback/src/main/kotlin/com/mingyuan/android_client/feature/feedback/FeedbackViewModel.kt new file mode 100644 index 0000000..23f3fd0 --- /dev/null +++ b/feature/feedback/src/main/kotlin/com/mingyuan/android_client/feature/feedback/FeedbackViewModel.kt @@ -0,0 +1,8 @@ +package com.mingyuan.android_client.feature.feedback + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class FeedbackViewModel @Inject constructor() : ViewModel() diff --git a/feature/plan/build.gradle.kts b/feature/plan/build.gradle.kts new file mode 100644 index 0000000..7d8af3c --- /dev/null +++ b/feature/plan/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + alias(libs.plugins.mcl.android.feature) +} + +android { + namespace = "com.mingyuan.android_client.feature.plan" +} diff --git a/feature/plan/src/main/AndroidManifest.xml b/feature/plan/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/feature/plan/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/feature/plan/src/main/kotlin/com/mingyuan/android_client/feature/plan/PlanScreen.kt b/feature/plan/src/main/kotlin/com/mingyuan/android_client/feature/plan/PlanScreen.kt new file mode 100644 index 0000000..e1e92cf --- /dev/null +++ b/feature/plan/src/main/kotlin/com/mingyuan/android_client/feature/plan/PlanScreen.kt @@ -0,0 +1,18 @@ +package com.mingyuan.android_client.feature.plan + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier + +/** Navigation route for this feature, referenced by the app-level NavHost. */ +const val PLAN_ROUTE = "plan" + +@Composable +fun PlanScreen(modifier: Modifier = Modifier) { + Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + Text(text = "Plan") + } +} diff --git a/feature/plan/src/main/kotlin/com/mingyuan/android_client/feature/plan/PlanViewModel.kt b/feature/plan/src/main/kotlin/com/mingyuan/android_client/feature/plan/PlanViewModel.kt new file mode 100644 index 0000000..5a6ad24 --- /dev/null +++ b/feature/plan/src/main/kotlin/com/mingyuan/android_client/feature/plan/PlanViewModel.kt @@ -0,0 +1,8 @@ +package com.mingyuan.android_client.feature.plan + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class PlanViewModel @Inject constructor() : ViewModel() diff --git a/feature/profile/build.gradle.kts b/feature/profile/build.gradle.kts new file mode 100644 index 0000000..d1123e0 --- /dev/null +++ b/feature/profile/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + alias(libs.plugins.mcl.android.feature) +} + +android { + namespace = "com.mingyuan.android_client.feature.profile" +} diff --git a/feature/profile/src/main/AndroidManifest.xml b/feature/profile/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/feature/profile/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/feature/profile/src/main/kotlin/com/mingyuan/android_client/feature/profile/ProfileScreen.kt b/feature/profile/src/main/kotlin/com/mingyuan/android_client/feature/profile/ProfileScreen.kt new file mode 100644 index 0000000..262ffb0 --- /dev/null +++ b/feature/profile/src/main/kotlin/com/mingyuan/android_client/feature/profile/ProfileScreen.kt @@ -0,0 +1,18 @@ +package com.mingyuan.android_client.feature.profile + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier + +/** Navigation route for this feature, referenced by the app-level NavHost. */ +const val PROFILE_ROUTE = "profile" + +@Composable +fun ProfileScreen(modifier: Modifier = Modifier) { + Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + Text(text = "Profile") + } +} diff --git a/feature/profile/src/main/kotlin/com/mingyuan/android_client/feature/profile/ProfileViewModel.kt b/feature/profile/src/main/kotlin/com/mingyuan/android_client/feature/profile/ProfileViewModel.kt new file mode 100644 index 0000000..a755662 --- /dev/null +++ b/feature/profile/src/main/kotlin/com/mingyuan/android_client/feature/profile/ProfileViewModel.kt @@ -0,0 +1,8 @@ +package com.mingyuan.android_client.feature.profile + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class ProfileViewModel @Inject constructor() : ViewModel() diff --git a/feature/survey/build.gradle.kts b/feature/survey/build.gradle.kts new file mode 100644 index 0000000..f4e21f8 --- /dev/null +++ b/feature/survey/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + alias(libs.plugins.mcl.android.feature) +} + +android { + namespace = "com.mingyuan.android_client.feature.survey" +} diff --git a/feature/survey/src/main/AndroidManifest.xml b/feature/survey/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/feature/survey/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/feature/survey/src/main/kotlin/com/mingyuan/android_client/feature/survey/SurveyScreen.kt b/feature/survey/src/main/kotlin/com/mingyuan/android_client/feature/survey/SurveyScreen.kt new file mode 100644 index 0000000..4985db6 --- /dev/null +++ b/feature/survey/src/main/kotlin/com/mingyuan/android_client/feature/survey/SurveyScreen.kt @@ -0,0 +1,18 @@ +package com.mingyuan.android_client.feature.survey + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier + +/** Navigation route for this feature, referenced by the app-level NavHost. */ +const val SURVEY_ROUTE = "survey" + +@Composable +fun SurveyScreen(modifier: Modifier = Modifier) { + Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + Text(text = "Survey") + } +} diff --git a/feature/survey/src/main/kotlin/com/mingyuan/android_client/feature/survey/SurveyViewModel.kt b/feature/survey/src/main/kotlin/com/mingyuan/android_client/feature/survey/SurveyViewModel.kt new file mode 100644 index 0000000..78f4333 --- /dev/null +++ b/feature/survey/src/main/kotlin/com/mingyuan/android_client/feature/survey/SurveyViewModel.kt @@ -0,0 +1,8 @@ +package com.mingyuan.android_client.feature.survey + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class SurveyViewModel @Inject constructor() : ViewModel()