Quote Wire is a simple app that allows you to save and share quotes. It is built using Kotlin Multiplatform, so it works on both Android and iOS.
- Jetpack Compose for UI design.
- SQLDelight for database management.
- Ktor for networking
- Koin dependency injection for dependency injection.
- MVVM architecture for clean separation of concerns and easy testing.
- Coroutines for asynchronous programming
- StateFlow for reactive programming
- Get quotes from the internet
- Save quotes
- Share quotes
- View a list of your saved quotes
- Search for quotes
This is a Kotlin module that contains the logic common(domain and data layers) for both Android and iOS applications, that is, the code you share between platforms.
It uses Gradle as the build system. You can add dependencies and change settings in shared/build.gradle.kts. The shared module builds into an Android library and an iOS framework.
This is a Kotlin module that builds into an Android application. This module contains the android application's UI built using Jetpack compose.
This is an Xcode project that builds into an iOS application. It depends on and uses the shared module as a CocoaPods dependency and contains iOS code that holds the iosApp UI built using Swift UI
To work with this template, you need the following:
- A machine running a recent version of macOS
- Xcode
- Android Studio
- The Kotlin Multiplatform Mobile plugin
- The CocoaPods dependency manager
Before you start, use the [KDoctor](https://github.com/Kotlin/kdoctor) tool to ensure that your development environment is configured correctly:
-
Install KDoctor with Homebrew:
brew install kdoctor
-
Run KDoctor in your terminal:
kdoctor
If everything is set up correctly, you'll see valid output:
Environment diagnose (to see all details, use -v option): [✓] Operation System [✓] Java [✓] Android Studio [✓] Xcode [✓] Cocoapods Conclusion: ✓ Your system is ready for Kotlin Multiplatform Mobile development!
Otherwise, KDoctor will highlight which parts of your setup still need to be configured and will suggest a way to fix them.
Open the project in Android Studio and switch the view from Android to Project to see all the files and targets belonging to the project:
Copyright 2023 Nada Feteiha
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.