This is just a fun app to learn about KMM and Jetpack Compose, and play with WooCommerce's StoreApi, it acts as a front for the store to offer a mobile shopping experience.
The project is a work-in-progress.
Android | iOS |
---|---|
The platforms didn't reach feature parity yet, and the design is not the same, but the business logic is the same.
- KMM (Ongoing, the iOS app is missing a lot of features, but the presentation layer is shared)
- List all products with pagination
- Price formatting
- Fetch price formatting settings from the store
- Offline support
- Search and filtering
- Check basic details about products
- Check more details about products: stock, sale, reviews...
- Cart
- Shipping Addresses: save and list saved addresses.
- Edit/Delete addresses
- Address form validation
- Billing Address
- Select Payment Method
- Complete Checkout flow
Most of the features (even the ones marked as done) still require improvements and refinements.
The app's goal is to learn about Compose, and experiment on unidirectional reactive architecture patterns, it uses the following technologies/patterns:
- KMM
- Jetpack Compose
- MVVM using Jetpack's ViewModel for the Android part.
- Kotlin coroutines with an extensive use of Flow APIs.
- Gradle's version catalogues
- Navigation Component
- Koin for dependency injection
- Ktor for API calls
- Coil for image's loading
- Kotlin Serialization
- SQLDelight
- ...
- Clone the project
$ git clone https://github.com/hichamboushaba/WCStoreApp.git
$ cd WCStoreApp
- Generate the local.properties file for this app:
$ cp ./local.properties-example ./local.properties
- Open and modify the file
local.properties
using your site's URL. - Open the project using Android Studio