Compose-ShoppingList icon indicating copy to clipboard operation
Compose-ShoppingList copied to clipboard

Jetpack compose shopping list app

Compose-ShoppingList

Compose-ShoppingList is a sample project that presents a way of implementing UI components with Jetpack Compose.

Screenshots

image

Used Tech

  • Kotlin
  • MVVM
  • Compose - Modern toolkit for building native UI.
  • Ambient - Compose passes data through the composition tree.
  • Coroutines - Provide sophisticated tools to handle concurrency.
  • Declarative UI Patterns
  • Koin - Runtime framework for dependency injection.
  • Lifecycles - Create a UI that automatically responds to lifecycle events.
  • LiveData - Build data objects that notify views when the underlying database changes.
  • Room - Access your app's SQLite database with in-app objects and compile-time checks.
  • Test - An Android testing framework for unit and runtime UI tests.
  • ViewModel - Store UI-related data that isn't destroyed on app rotations. Easily schedule asynchronous tasks.
  • ktlint - Enforce Kotlin coding styles.

Features

  • Handle back press
  • Handle configuration changes
  • ActionBar menu
  • Drawer menu
  • Add shopping lists/products
  • Archive/Unarchive lists
  • Delete products

Report issues

Something not working quite as expected? Do you need a feature that has not been implemented yet? Check the issue tracker and add a new one if your problem is not already listed. Please try to provide a detailed description of your problem, including the steps to reproduce it.

Contribute

Awesome! If you would like to contribute with a new feature or submit a bugfix, fork this repo and send a pull request. Please, make sure all the unit tests, integration tests & ./gradlew spotlessApply are passing before submitting and add new ones in case you introduced new features.

How to run the project in development mode

  • Clone or download repository as a zip file.
  • Open project in Android Studio.
  • Run 'app' SHIFT+F10.

Android Studio IDE setup

Compose-ShoppingList uses ktlint to enforce Kotlin coding styles. Here's how to configure it for use with Android Studio (instructions adapted from the ktlint README):

  • Close Android Studio if it's open
  • Download ktlint using these installation instructions
  • Inside the project root directory run: ./ktlint --apply-to-idea-project --android
  • Remove ktlint if desired: rm ktlint
  • Start Android Studio

License

Compose-ShoppingList is released under the MIT license. See LICENSE for details.