A comprehensive Android shopping list application built with Jetpack Compose, Room database, and modern Android architecture components.
π New in v1.0.3: Share codes are now much easier to read and enter! We've eliminated confusion between similar-looking characters (O/0, I/1/l) and added visual separators for better readability.
- Create unlimited shopping lists
- Organize by store, category, or purpose
- Color-coded lists for easy identification
- Share lists with family and friends
- Join shared lists with simple codes
- Switch between lists seamlessly
- Add, edit, and delete shopping items
- Set item name, price, and quantity
- Mark items as purchased/unpurchased
- Search functionality to find items quickly
- Real-time total price calculation
- Clean, intuitive interface
- Speech-to-text for hands-free item entry
- Quick voice commands for adding items
- Supports multiple languages
- Perfect for when your hands are full
- AI-powered item suggestions based on frequency
- Auto-complete with previously used items
- Smart price suggestions from purchase history
- Learn your shopping patterns over time
- Share lists with family members
- Real-time synchronization across devices
- Enhanced share codes (v1.0.3) - Clearer, easier-to-read codes
- Unique share codes for easy joining
- Collaborative shopping experience
- Track total expenses across all purchases
- View current month vs all-time expenses
- Per-list expense tracking
- Automatic calculation from purchased items
- Detailed spending analytics
- Complete purchase history across all lists
- View all previously purchased items
- See purchase dates and amounts
- Clear history functionality
- Export purchase data
- Beautiful dark theme support
- Automatic system theme detection
- Manual theme switching
- Easy on the eyes for night shopping
The app supports multiple languages:
- English (default)
- Spanish (EspaΓ±ol)
- French (FranΓ§ais)
- German (Deutsch)
- Italian (Italiano)
- Dutch (Nederlands)
The app automatically adapts to your device's language settings.
- Kotlin - Primary programming language
- Jetpack Compose - Modern UI toolkit
- Room Database - Local data persistence
- Navigation Component - Screen navigation
- ViewModel & LiveData - MVVM architecture
- Coroutines & Flow - Asynchronous programming
- MVVM Pattern - Separation of concerns
- Repository Pattern - Data abstraction layer
- Dependency Injection - Manual DI with ViewModelFactory
- Single Activity Architecture - Navigation with Compose
@Entity(tableName = "shopping_items")
data class ShoppingItem(
@PrimaryKey(autoGenerate = true)
val id: Long = 0,
val name: String,
val price: Double,
val quantity: Int = 1,
val isPurchased: Boolean = false,
val createdAt: Date = Date(),
val purchasedAt: Date? = null
)app/src/main/java/com/leo/shoppinglist/
βββ data/
β βββ ShoppingItem.kt # Entity model
β βββ ShoppingItemDao.kt # Database access object
β βββ ShoppingDatabase.kt # Room database
β βββ Converters.kt # Type converters
βββ repository/
β βββ ShoppingRepository.kt # Data repository
βββ viewmodel/
β βββ ShoppingListViewModel.kt # My List screen logic
β βββ ExpensesViewModel.kt # Expenses screen logic
β βββ HistoryViewModel.kt # History screen logic
β βββ ViewModelFactory.kt # ViewModel factory
βββ ui/
β βββ components/
β β βββ AddItemDialog.kt # Add/Edit item dialog
β β βββ ShoppingItemCard.kt # Item display card
β βββ screens/
β βββ MyListScreen.kt # Main shopping list
β βββ ExpensesScreen.kt # Expenses overview
β βββ HistoryScreen.kt # Purchase history
βββ navigation/
β βββ Screen.kt # Navigation routes
βββ utils/
β βββ FormatUtils.kt # Formatting utilities
βββ MainActivity.kt # Main activity
βββ ShoppingListApplication.kt # Application class
- Implemented using Flow operators
- Filters items by name (case-insensitive)
- Updates UI automatically as user types
- String resources in multiple languages
- Automatic language detection
- Proper currency symbol handling per locale
- Automatic calculation of total expenses
- Monthly expense filtering using Calendar API
- Real-time updates when items are purchased
- Room database for offline storage
- Type converters for Date objects
- Coroutines for asynchronous database operations
- Clone the repository
- Open in Android Studio
- Sync Gradle files
- Run the app on device/emulator
- Android Studio Arctic Fox or later
- Android SDK 24 (Android 7.0) or higher
- Kotlin 1.9.0 or later
- Adding Items: Tap the + button to add new shopping items
- Editing Items: Tap the edit icon on any item to modify it
- Purchasing: Check the checkbox to mark items as purchased
- Searching: Use the search bar to find specific items
- Viewing Expenses: Navigate to the Expenses tab to see spending
- History: Check the History tab for all past purchases
To add a new language:
- Create a new values folder:
app/src/main/res/values-[language_code]/ - Add
strings.xmlwith translated strings - Update currency symbols if needed
- Test with device language settings
- Fork the repository
- Create a feature branch
- Make your changes
- Add appropriate tests
- Submit a pull request
Share Code Readability Improvements:
- Removed confusing characters (O, 0, I, 1, l) from share code generation
- Added visual separators (ABC-234 format) for better readability
- Improved input flexibility - accepts codes with or without separators
- Enhanced validation and error messaging
- Real-time sync for shared lists
- Firebase Timestamp compatibility fixes
- Join dialog feedback improvements
- Lowercase input support in share code fields
- Initial release with core features
Β© 2025 Paleo by Leo
This project is open source and available under the MIT License.
- Categories for items
- Barcode scanning
- Price comparison
- Budget tracking
- Export data functionality
- Widget support
- Cloud synchronization
- Offline maps integration
- Recipe integration
- Meal planning features