A Kotlin Multiplatform Mobile Project that demonstrates code sharing between iOS and Android apps.
- Android Specific Components: Jetpack Compose, Coil, Hilt, Accompanist Plugins
- Shared: Ktor, SQL Delight
- iOS Specific Components: SwiftUI
- Create an API Key from The Movie Database web site https://www.themoviedb.org/documentation/api.
- Set your api key in before making any api call, very important
- Kotlin
- Clean Architecture
- Jetpack Compose
- SwiftUi (Proposed)
- Hilt Dependency Injection
- Ktor (Networking)
- Database Caching with SqlDelight (Proposed)
- MutableState (Might Change to StateFlow Later, If Neccessary)
- Theming for both Android & Ios (Proposed)
- Animations(Proposed)
- Usecases/Interactors
- MVI (Perfect for declarative UI) (Proposed)
- Light Theme (Not Necessary But Might Consider Adding in Future Release)
- Shimmer Loading Animation (Proposed)
- Modularization for code reusablity (Test)
- Online & Offline Video Streaming with Exo Player2 (Proposed)
- Background Services, notification Services and Broadcast receiver (Proposed)
- Video and Audio Download (Proposed)
- Unit Testing, Ui Testing, Hilt Testing
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME}
#end #parse("File Header.java")
import androidx.lifecycle.SavedStateHandle import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import androidx.lifecycle.ViewModel
@HiltViewModel #set($capitalizedFilename = $NAME.substring(0,1).toUpperCase() + $NAME.substring(1)) class $capitalizedFilename @Inject constructor( private val savedStateHandle: SavedStateHandle ):ViewModel() {
}
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME}
#end #parse("File Header.java")
import androidx.compose.runtime.Composable
@Composable #set($capitalizedFilename = $NAME.substring(0,1).toUpperCase() + $NAME.substring(1)) fun $capitalizedFilename() {
}