feat: feature 多模块骨架

This commit is contained in:
AndyChen1024
2026-09-03 19:03:35 +08:00
parent 3a5f1ed679
commit 5ae53cd86d
28 changed files with 245 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
plugins {
alias(libs.plugins.mcl.android.feature)
}
android {
namespace = "com.mingyuan.android_client.feature.auth"
}

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest />

View File

@@ -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")
}
}

View File

@@ -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()

View File

@@ -0,0 +1,7 @@
plugins {
alias(libs.plugins.mcl.android.feature)
}
android {
namespace = "com.mingyuan.android_client.feature.checkin"
}

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest />

View File

@@ -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")
}
}

View File

@@ -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()

View File

@@ -0,0 +1,7 @@
plugins {
alias(libs.plugins.mcl.android.feature)
}
android {
namespace = "com.mingyuan.android_client.feature.course"
}

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest />

View File

@@ -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")
}
}

View File

@@ -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()

View File

@@ -0,0 +1,7 @@
plugins {
alias(libs.plugins.mcl.android.feature)
}
android {
namespace = "com.mingyuan.android_client.feature.feedback"
}

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest />

View File

@@ -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")
}
}

View File

@@ -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()

View File

@@ -0,0 +1,7 @@
plugins {
alias(libs.plugins.mcl.android.feature)
}
android {
namespace = "com.mingyuan.android_client.feature.plan"
}

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest />

View File

@@ -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")
}
}

View File

@@ -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()

View File

@@ -0,0 +1,7 @@
plugins {
alias(libs.plugins.mcl.android.feature)
}
android {
namespace = "com.mingyuan.android_client.feature.profile"
}

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest />

View File

@@ -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")
}
}

View File

@@ -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()

View File

@@ -0,0 +1,7 @@
plugins {
alias(libs.plugins.mcl.android.feature)
}
android {
namespace = "com.mingyuan.android_client.feature.survey"
}

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest />

View File

@@ -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")
}
}

View File

@@ -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()