Skip to content

paleobyleo/ShoppingList

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Shoppinglist App

A comprehensive Android shopping list application built with Jetpack Compose, Room database, and modern Android architecture components.

Latest Release: v1.0.3 - Enhanced Share Code Readability

πŸŽ‰ 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.

Features

πŸ“‹ Multiple Lists

  • 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

πŸ›’ Smart Shopping List

  • 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

🎀 Voice Input

  • Speech-to-text for hands-free item entry
  • Quick voice commands for adding items
  • Supports multiple languages
  • Perfect for when your hands are full

🧠 Smart Suggestions

  • 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

πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦ Family Sharing

  • 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

πŸ’° Advanced Expense Tracking

  • 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

πŸ“Š Comprehensive History

  • Complete purchase history across all lists
  • View all previously purchased items
  • See purchase dates and amounts
  • Clear history functionality
  • Export purchase data

πŸŒ™ Dark Mode

  • Beautiful dark theme support
  • Automatic system theme detection
  • Manual theme switching
  • Easy on the eyes for night shopping

🌍 Multi-Language Support

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.

Technical Architecture

Built With

  • 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

Architecture Components

  • MVVM Pattern - Separation of concerns
  • Repository Pattern - Data abstraction layer
  • Dependency Injection - Manual DI with ViewModelFactory
  • Single Activity Architecture - Navigation with Compose

Database Schema

@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
)

Project Structure

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

Key Features Implementation

Real-time Search

  • Implemented using Flow operators
  • Filters items by name (case-insensitive)
  • Updates UI automatically as user types

Multi-language Support

  • String resources in multiple languages
  • Automatic language detection
  • Proper currency symbol handling per locale

Expense Tracking

  • Automatic calculation of total expenses
  • Monthly expense filtering using Calendar API
  • Real-time updates when items are purchased

Data Persistence

  • Room database for offline storage
  • Type converters for Date objects
  • Coroutines for asynchronous database operations

Installation & Setup

  1. Clone the repository
  2. Open in Android Studio
  3. Sync Gradle files
  4. Run the app on device/emulator

Requirements

  • Android Studio Arctic Fox or later
  • Android SDK 24 (Android 7.0) or higher
  • Kotlin 1.9.0 or later

Usage

  1. Adding Items: Tap the + button to add new shopping items
  2. Editing Items: Tap the edit icon on any item to modify it
  3. Purchasing: Check the checkbox to mark items as purchased
  4. Searching: Use the search bar to find specific items
  5. Viewing Expenses: Navigate to the Expenses tab to see spending
  6. History: Check the History tab for all past purchases

Localization

To add a new language:

  1. Create a new values folder: app/src/main/res/values-[language_code]/
  2. Add strings.xml with translated strings
  3. Update currency symbols if needed
  4. Test with device language settings

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add appropriate tests
  5. Submit a pull request

Changelog

v1.0.3 (Latest) - December 2025

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

v1.0.2 - November 2025

  • Real-time sync for shared lists
  • Firebase Timestamp compatibility fixes
  • Join dialog feedback improvements
  • Lowercase input support in share code fields

v1.0.1 - October 2025

  • Initial release with core features

License

Β© 2025 Paleo by Leo

This project is open source and available under the MIT License.

Future Enhancements

  • Categories for items
  • Barcode scanning
  • Price comparison
  • Budget tracking
  • Export data functionality
  • Widget support
  • Cloud synchronization
  • Offline maps integration
  • Recipe integration
  • Meal planning features

About

Shopping List v1.0.2

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors