diff --git a/feature-home/.gitignore b/feature-home/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/feature-home/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/feature-home/build.gradle b/feature-home/build.gradle
new file mode 100644
index 00000000..1f6ce558
--- /dev/null
+++ b/feature-home/build.gradle
@@ -0,0 +1,67 @@
+plugins {
+ id 'com.android.library'
+ id 'kotlin-android'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.2"
+
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles "consumer-rules.pro"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ buildFeatures {
+ viewBinding true
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.core:core-ktx:1.3.2'
+ implementation 'androidx.fragment:fragment-ktx:1.2.5'
+ implementation 'androidx.lifecycle:lifecycle-livedata-core-ktx:2.2.0'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
+ implementation 'com.google.android.material:material:1.3.0-alpha03'
+
+
+ implementation 'com.squareup.retrofit2:retrofit:2.9.0'
+
+ implementation"com.squareup.moshi:moshi-kotlin:1.11.0"
+ implementation "com.squareup.moshi:moshi-kotlin-codegen:1.11.0"
+ implementation "com.squareup.moshi:moshi-adapters:1.11.0"
+
+ implementation "com.squareup.okhttp3:logging-interceptor:4.9.0"
+
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1"
+
+ implementation "org.koin:koin-android:2.2.1"
+ implementation "org.koin:koin-android-viewmodel:2.2.1"
+ implementation "org.koin:koin-android-ext:2.2.1"
+
+ testImplementation 'junit:junit:4.13.1'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+}
\ No newline at end of file
diff --git a/feature-home/src/androidTest/java/com/vanced/manager/feature/home/ExampleInstrumentedTest.kt b/feature-home/src/androidTest/java/com/vanced/manager/feature/home/ExampleInstrumentedTest.kt
new file mode 100644
index 00000000..8646390a
--- /dev/null
+++ b/feature-home/src/androidTest/java/com/vanced/manager/feature/home/ExampleInstrumentedTest.kt
@@ -0,0 +1,23 @@
+package com.vanced.manager.feature.home
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import org.junit.Assert.assertEquals
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * 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.vanced.manager.feature.home.test", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/feature-home/src/main/AndroidManifest.xml b/feature-home/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..714a235e
--- /dev/null
+++ b/feature-home/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/data/api/GetAppInformationApi.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/data/api/GetAppInformationApi.kt
new file mode 100644
index 00000000..4f29031a
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/data/api/GetAppInformationApi.kt
@@ -0,0 +1,14 @@
+package com.vanced.manager.feature.home.data.api
+
+import com.vanced.manager.feature.home.data.dto.VancedAppsDto
+import retrofit2.http.GET
+
+interface GetAppInformationApi {
+
+ companion object {
+ const val URL = "/api/v1/latest.json"
+ }
+
+ @GET(URL)
+ suspend fun getAppInformation(): VancedAppsDto
+}
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/data/datasource/AppInformationDataSource.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/data/datasource/AppInformationDataSource.kt
new file mode 100644
index 00000000..048e8da3
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/data/datasource/AppInformationDataSource.kt
@@ -0,0 +1,22 @@
+package com.vanced.manager.feature.home.data.datasource
+
+import com.vanced.manager.feature.home.data.api.GetAppInformationApi
+import com.vanced.manager.feature.home.data.dto.toEntity
+import com.vanced.manager.feature.home.domain.entity.VancedApps
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+
+interface AppInformationDataSource {
+
+ suspend fun getAppInformation(): VancedApps
+}
+
+class AppInformationDataSourceImpl(
+ private val api: GetAppInformationApi
+) : AppInformationDataSource {
+
+ override suspend fun getAppInformation(): VancedApps =
+ withContext(Dispatchers.IO) {
+ api.getAppInformation().toEntity()
+ }
+}
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/MicroGDto.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/MicroGDto.kt
new file mode 100644
index 00000000..8e127d69
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/MicroGDto.kt
@@ -0,0 +1,19 @@
+package com.vanced.manager.feature.home.data.dto
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+import com.vanced.manager.feature.home.domain.entity.MicroG
+
+@JsonClass(generateAdapter = true)
+data class MicroGDto(
+ @Json(name = "version") val version: String,
+ @Json(name = "versionCode") val versionCode: Long,
+ @Json(name = "url") val baseUrl: String,
+ @Json(name = "changelog") val changeLog: String
+)
+
+fun MicroGDto.toEntity() =
+ MicroG(version, versionCode, baseUrl, changeLog)
+
+fun MicroG.toDto() =
+ MicroGDto(version, versionCode, baseUrl, changeLog)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/VancedAppsDto.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/VancedAppsDto.kt
new file mode 100644
index 00000000..876c61a9
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/VancedAppsDto.kt
@@ -0,0 +1,30 @@
+package com.vanced.manager.feature.home.data.dto
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+import com.vanced.manager.feature.home.domain.entity.VancedApps
+
+@JsonClass(generateAdapter = true)
+data class VancedAppsDto(
+ @Json(name = "manager") val vancedManager: VancedManagerDto,
+ @Json(name = "vanced") val youTubeVanced: YouTubeVancedDto,
+ @Json(name = "music") val youTubeMusicVanced: YouTubeMusicVancedDto,
+ @Json(name = "microg") val microG: MicroGDto
+)
+
+
+fun VancedAppsDto.toEntity() =
+ VancedApps(
+ vancedManager = vancedManager.toEntity(),
+ youTubeVanced = youTubeVanced.toEntity(),
+ youTubeMusicVanced = youTubeMusicVanced.toEntity(),
+ microG = microG.toEntity()
+ )
+
+fun VancedApps.toDto() =
+ VancedAppsDto(
+ vancedManager = vancedManager.toDto(),
+ youTubeVanced = youTubeVanced.toDto(),
+ youTubeMusicVanced = youTubeMusicVanced.toDto(),
+ microG = microG.toDto()
+ )
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/VancedManagerDto.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/VancedManagerDto.kt
new file mode 100644
index 00000000..d5bf1949
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/VancedManagerDto.kt
@@ -0,0 +1,19 @@
+package com.vanced.manager.feature.home.data.dto
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+import com.vanced.manager.feature.home.domain.entity.VancedManager
+
+@JsonClass(generateAdapter = true)
+data class VancedManagerDto(
+ @Json(name = "version") val version: String,
+ @Json(name = "versionCode") val versionCode: Long,
+ @Json(name = "url") val baseUrl: String,
+ @Json(name = "changelog") val changeLog: String
+)
+
+fun VancedManagerDto.toEntity() =
+ VancedManager(version, versionCode, baseUrl, changeLog)
+
+fun VancedManager.toDto() =
+ VancedManagerDto(version, versionCode, baseUrl, changeLog)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/YouTubeMusicVancedDto.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/YouTubeMusicVancedDto.kt
new file mode 100644
index 00000000..b3ad5299
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/YouTubeMusicVancedDto.kt
@@ -0,0 +1,19 @@
+package com.vanced.manager.feature.home.data.dto
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+import com.vanced.manager.feature.home.domain.entity.YouTubeMusicVanced
+
+@JsonClass(generateAdapter = true)
+data class YouTubeMusicVancedDto(
+ @Json(name = "version") val version: String,
+ @Json(name = "versionCode") val versionCode: Long,
+ @Json(name = "url") val baseUrl: String,
+ @Json(name = "changelog") val changeLog: String
+)
+
+fun YouTubeMusicVancedDto.toEntity() =
+ YouTubeMusicVanced(version, versionCode, baseUrl, changeLog)
+
+fun YouTubeMusicVanced.toDto() =
+ YouTubeMusicVancedDto(version, versionCode, baseUrl, changeLog)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/YouTubeVancedDto.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/YouTubeVancedDto.kt
new file mode 100644
index 00000000..c5eeb931
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/data/dto/YouTubeVancedDto.kt
@@ -0,0 +1,22 @@
+package com.vanced.manager.feature.home.data.dto
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+import com.vanced.manager.feature.home.domain.entity.YouTubeVanced
+
+@JsonClass(generateAdapter = true)
+data class YouTubeVancedDto(
+ @Json(name = "version") val version: String,
+ @Json(name = "versionCode") val versionCode: Long,
+ @Json(name = "url") val baseUrl: String,
+ @Json(name = "changelog") val changeLog: String,
+ @Json(name = "themes") val themes: List,
+ @Json(name = "langs") val langs: List
+)
+
+
+fun YouTubeVancedDto.toEntity() =
+ YouTubeVanced(version, versionCode, baseUrl, changeLog, themes, langs)
+
+fun YouTubeVanced.toDto() =
+ YouTubeVancedDto(version, versionCode, baseUrl, changeLog, themes, langs)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/data/repository/AppInformationRepositoryImpl.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/data/repository/AppInformationRepositoryImpl.kt
new file mode 100644
index 00000000..e747b0c8
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/data/repository/AppInformationRepositoryImpl.kt
@@ -0,0 +1,25 @@
+package com.vanced.manager.feature.home.data.repository
+
+import com.vanced.manager.feature.home.data.datasource.AppInformationDataSource
+import com.vanced.manager.feature.home.domain.entity.*
+import com.vanced.manager.feature.home.domain.repository.AppInformationRepository
+
+class AppInformationRepositoryImpl(
+ private val dataSource: AppInformationDataSource
+) : AppInformationRepository {
+
+ override suspend fun getAppInformation(): VancedApps =
+ dataSource.getAppInformation()
+
+ override suspend fun getMicroGInformation(): MicroG =
+ dataSource.getAppInformation().microG
+
+ override suspend fun getVancedManagerInformation(): VancedManager =
+ dataSource.getAppInformation().vancedManager
+
+ override suspend fun getYouTubeMusicVancedInformation(): YouTubeMusicVanced =
+ dataSource.getAppInformation().youTubeMusicVanced
+
+ override suspend fun getYouTubeVancedInformation(): YouTubeVanced =
+ dataSource.getAppInformation().youTubeVanced
+}
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/di/FeatureHomeModules.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/di/FeatureHomeModules.kt
new file mode 100644
index 00000000..91e9e204
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/di/FeatureHomeModules.kt
@@ -0,0 +1,52 @@
+package com.vanced.manager.feature.home.di
+
+import com.vanced.manager.feature.home.data.api.GetAppInformationApi
+import com.vanced.manager.feature.home.data.datasource.AppInformationDataSource
+import com.vanced.manager.feature.home.data.datasource.AppInformationDataSourceImpl
+import com.vanced.manager.feature.home.data.repository.AppInformationRepositoryImpl
+import com.vanced.manager.feature.home.domain.repository.AppInformationRepository
+import com.vanced.manager.feature.home.domain.usecase.*
+import com.vanced.manager.feature.home.presentation.HomeViewModel
+import org.koin.android.viewmodel.dsl.viewModel
+import org.koin.dsl.module
+
+internal val retrofitModule = module {
+ single { null }
+}
+
+internal val dataSourceModule = module {
+ single { AppInformationDataSourceImpl(api = get()) }
+}
+
+internal val repositoryModule = module {
+ single { AppInformationRepositoryImpl(dataSource = get()) }
+}
+
+internal val useCaseModule = module {
+ single { GetAppInformationUseCase(repository = get()) }
+
+ single { GetMicroGInformationUseCase(repository = get()) }
+ single { GetVancedManagerInformationUseCase(repository = get()) }
+ single { GetYouTubeMusicVancedInformationUseCase(repository = get()) }
+ single { GetYouTubeVancedInformationUseCase(repository = get()) }
+}
+
+internal val viewModelModule = module {
+ viewModel {
+ HomeViewModel(
+ getAppInformationUseCase = get(),
+ getMicroGInformationUseCase = get(),
+ getVancedManagerInformationUseCase = get(),
+ getYouTubeVancedInformationUseCase = get(),
+ getYouTubeMusicVancedInformationUseCase = get()
+ )
+ }
+}
+
+val FeatureHomeModules = listOf(
+ retrofitModule,
+ dataSourceModule,
+ repositoryModule,
+ useCaseModule,
+ viewModelModule
+)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/MicroG.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/MicroG.kt
new file mode 100644
index 00000000..1601a10b
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/MicroG.kt
@@ -0,0 +1,8 @@
+package com.vanced.manager.feature.home.domain.entity
+
+data class MicroG(
+ val version: String,
+ val versionCode: Long,
+ val baseUrl: String,
+ val changeLog: String
+)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/VancedApps.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/VancedApps.kt
new file mode 100644
index 00000000..d61f0ac2
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/VancedApps.kt
@@ -0,0 +1,8 @@
+package com.vanced.manager.feature.home.domain.entity
+
+data class VancedApps(
+ val vancedManager: VancedManager,
+ val youTubeVanced: YouTubeVanced,
+ val youTubeMusicVanced: YouTubeMusicVanced,
+ val microG: MicroG
+)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/VancedManager.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/VancedManager.kt
new file mode 100644
index 00000000..7678da4d
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/VancedManager.kt
@@ -0,0 +1,8 @@
+package com.vanced.manager.feature.home.domain.entity
+
+data class VancedManager(
+ val version: String,
+ val versionCode: Long,
+ val baseUrl: String,
+ val changeLog: String
+)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/YouTubeMusicVanced.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/YouTubeMusicVanced.kt
new file mode 100644
index 00000000..2b8cd691
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/YouTubeMusicVanced.kt
@@ -0,0 +1,8 @@
+package com.vanced.manager.feature.home.domain.entity
+
+data class YouTubeMusicVanced(
+ val version: String,
+ val versionCode: Long,
+ val baseUrl: String,
+ val changeLog: String
+)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/YouTubeVanced.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/YouTubeVanced.kt
new file mode 100644
index 00000000..0600ca9b
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/entity/YouTubeVanced.kt
@@ -0,0 +1,10 @@
+package com.vanced.manager.feature.home.domain.entity
+
+data class YouTubeVanced(
+ val version: String,
+ val versionCode: Long,
+ val baseUrl: String,
+ val changeLog: String,
+ val themes: List,
+ val langs: List
+)
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/repository/AppInformationRepository.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/repository/AppInformationRepository.kt
new file mode 100644
index 00000000..005ac3b5
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/repository/AppInformationRepository.kt
@@ -0,0 +1,16 @@
+package com.vanced.manager.feature.home.domain.repository
+
+import com.vanced.manager.feature.home.domain.entity.*
+
+interface AppInformationRepository {
+
+ suspend fun getAppInformation(): VancedApps
+
+ suspend fun getMicroGInformation(): MicroG
+
+ suspend fun getVancedManagerInformation(): VancedManager
+
+ suspend fun getYouTubeMusicVancedInformation(): YouTubeMusicVanced
+
+ suspend fun getYouTubeVancedInformation(): YouTubeVanced
+}
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetAppInformationUseCase.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetAppInformationUseCase.kt
new file mode 100644
index 00000000..72a9ffb1
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetAppInformationUseCase.kt
@@ -0,0 +1,12 @@
+package com.vanced.manager.feature.home.domain.usecase
+
+import com.vanced.manager.feature.home.domain.entity.VancedApps
+import com.vanced.manager.feature.home.domain.repository.AppInformationRepository
+
+class GetAppInformationUseCase(
+ private val repository: AppInformationRepository
+) {
+
+ suspend operator fun invoke(): VancedApps =
+ repository.getAppInformation()
+}
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetMicroGInformationUseCase.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetMicroGInformationUseCase.kt
new file mode 100644
index 00000000..6979cd3d
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetMicroGInformationUseCase.kt
@@ -0,0 +1,12 @@
+package com.vanced.manager.feature.home.domain.usecase
+
+import com.vanced.manager.feature.home.domain.entity.MicroG
+import com.vanced.manager.feature.home.domain.repository.AppInformationRepository
+
+class GetMicroGInformationUseCase(
+ private val repository: AppInformationRepository
+) {
+
+ suspend operator fun invoke(): MicroG =
+ repository.getMicroGInformation()
+}
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetVancedManagerInformationUseCase.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetVancedManagerInformationUseCase.kt
new file mode 100644
index 00000000..f174af24
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetVancedManagerInformationUseCase.kt
@@ -0,0 +1,12 @@
+package com.vanced.manager.feature.home.domain.usecase
+
+import com.vanced.manager.feature.home.domain.entity.VancedManager
+import com.vanced.manager.feature.home.domain.repository.AppInformationRepository
+
+class GetVancedManagerInformationUseCase(
+ private val repository: AppInformationRepository
+) {
+
+ suspend operator fun invoke(): VancedManager =
+ repository.getVancedManagerInformation()
+}
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetYouTubeMusicVancedInformationUseCase.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetYouTubeMusicVancedInformationUseCase.kt
new file mode 100644
index 00000000..76cbcc51
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetYouTubeMusicVancedInformationUseCase.kt
@@ -0,0 +1,12 @@
+package com.vanced.manager.feature.home.domain.usecase
+
+import com.vanced.manager.feature.home.domain.entity.YouTubeMusicVanced
+import com.vanced.manager.feature.home.domain.repository.AppInformationRepository
+
+class GetYouTubeMusicVancedInformationUseCase(
+ private val repository: AppInformationRepository
+) {
+
+ suspend operator fun invoke(): YouTubeMusicVanced =
+ repository.getYouTubeMusicVancedInformation()
+}
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetYouTubeVancedInformationUseCase.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetYouTubeVancedInformationUseCase.kt
new file mode 100644
index 00000000..065697bb
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/domain/usecase/GetYouTubeVancedInformationUseCase.kt
@@ -0,0 +1,12 @@
+package com.vanced.manager.feature.home.domain.usecase
+
+import com.vanced.manager.feature.home.domain.entity.YouTubeVanced
+import com.vanced.manager.feature.home.domain.repository.AppInformationRepository
+
+class GetYouTubeVancedInformationUseCase(
+ private val repository: AppInformationRepository
+) {
+
+ suspend operator fun invoke(): YouTubeVanced =
+ repository.getYouTubeVancedInformation()
+}
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/presentation/HomeViewModel.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/presentation/HomeViewModel.kt
new file mode 100644
index 00000000..e0567b11
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/presentation/HomeViewModel.kt
@@ -0,0 +1,12 @@
+package com.vanced.manager.feature.home.presentation
+
+import androidx.lifecycle.ViewModel
+import com.vanced.manager.feature.home.domain.usecase.*
+
+class HomeViewModel(
+ private val getAppInformationUseCase: GetAppInformationUseCase,
+ private val getMicroGInformationUseCase: GetMicroGInformationUseCase,
+ private val getVancedManagerInformationUseCase: GetVancedManagerInformationUseCase,
+ private val getYouTubeVancedInformationUseCase: GetYouTubeVancedInformationUseCase,
+ private val getYouTubeMusicVancedInformationUseCase: GetYouTubeMusicVancedInformationUseCase
+) : ViewModel()
\ No newline at end of file
diff --git a/feature-home/src/main/java/com/vanced/manager/feature/home/ui/HomeFragment.kt b/feature-home/src/main/java/com/vanced/manager/feature/home/ui/HomeFragment.kt
new file mode 100644
index 00000000..7ef0eaa8
--- /dev/null
+++ b/feature-home/src/main/java/com/vanced/manager/feature/home/ui/HomeFragment.kt
@@ -0,0 +1,5 @@
+package com.vanced.manager.feature.home.ui
+
+import androidx.fragment.app.Fragment
+
+class HomeFragment : Fragment()
\ No newline at end of file
diff --git a/feature-home/src/test/java/com/vanced/manager/feature/home/ExampleUnitTest.kt b/feature-home/src/test/java/com/vanced/manager/feature/home/ExampleUnitTest.kt
new file mode 100644
index 00000000..a4dcbdc5
--- /dev/null
+++ b/feature-home/src/test/java/com/vanced/manager/feature/home/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package com.vanced.manager.feature.home
+
+import org.junit.Assert.assertEquals
+import org.junit.Test
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index c5f58a4e..fe556ab4 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,5 @@
rootProject.name='Vanced Manager'
include ':app'
-include ':core-ui'
\ No newline at end of file
+include ':core-ui'
+include ':feature-home'
\ No newline at end of file