A grocery list application built with Kotlin and Jetpack Compose that allows users to manage their shopping items.
shopping-list-demo.mp4
- Add items with a name and category (Milk, Vegetables, Fruits, Breads, Meats)
- Mark items as purchased/completed with visual strikethrough
- Edit and delete items
- Filter items by category
- Sort items alphabetically, by category, or by purchase status
- Data persistence between app launches using Room database
- Empty state when no items have been added
- Error handling with snackbar notifications
- Download the latest
app-release.apkfrom the Releases page - Transfer it to your Android device
- On your device, enable Settings > Security > Install from Unknown Sources (if not already enabled)
- Open the APK file and tap Install
- Requires Android 7.0 (API 24) or higher
- Android Studio Ladybug or later
- JDK 11+
- Android SDK with API 36 (compile) and API 24+ device/emulator
- Clone the repository
git clone https://github.com/shuja1497/shopping-list.git
- Open the
Shoppingfolder in Android Studio - Let Gradle sync complete
- Connect an Android device or start an emulator (API 24+)
- Click Run or press
Shift+F10
Debug (no signing setup needed):
cd Shopping
./gradlew assembleDebugThe APK will be at app/build/outputs/apk/debug/app-debug.apk.
Release (requires signing keystore — see keystore.properties.template):
cd Shopping
./gradlew assembleReleaseThe APK will be at app/build/outputs/apk/release/app-release.apk.
The app follows the MVVM pattern with clear separation of concerns:
Shopping/app/src/main/java/com/droid/shopping/
├── data/
│ ├── local/ # Room entity, DAO, database, type converters
│ └── repository/ # Repository interface & implementation
├── presentation/
│ ├── components/ # Reusable Compose UI components
│ ├── ShoppingListScreen.kt # Screen composables
│ ├── ShoppingListViewModel.kt # State management & event handling
│ ├── ShoppingListUiState.kt # UI state
│ └── ShoppingListUiEvent.kt # UI events
├── di/ # Hilt dependency injection modules
└── ui/theme/ # Theme, colors, typography
| Category | Library |
|---|---|
| Language | Kotlin |
| UI | Jetpack Compose, Material Design 3 |
| Architecture | MVVM, Clean Architecture |
| DI | Hilt |
| Database | Room |
| Async | Kotlin Coroutines & Flow |
| Testing | JUnit, MockK, Turbine, Truth |
Run all unit tests:
cd Shopping
./gradlew test