Shelfly is a minimal Android application designed to help you keep track of expiration dates for various items on your shelves, including groceries, medicines, and cosmetics. It aims to prevent waste and ensure you use items before they expire by providing timely reminders. A key differentiator of Shelfly is its integration with Android AppFunctions, allowing AI agents like Gemini to interact with the app's data through natural language commands. You can add, list, update, and delete items simply by speaking to the AI, eliminating the need for manual input.
Core Features: Add items with details like category, expiry date, quantity, and notes. The home screen visually indicates item status (Fresh, Expiring Soon, Expired, Consumed). Users can filter and sort items by various criteria. Detailed item views allow for consumption marking, editing, or deletion.
Notifications: The app performs daily background checks via WorkManager to notify you when items are nearing their expiration date. Configurable reminder windows (1-14 days) and custom notifications with category badges are supported. Users can choose between grouped or individual notifications and set quiet hours.
AI / AppFunctions Integration: Shelfly exposes nine AppFunctions that can be called by AI agents. These functions include adding items (with different methods for specifying expiry), listing expiring or expired items, filtering by category, retrieving item details, marking items as consumed, updating expiry dates, and deleting items.
Onboarding & Settings: The app features an onboarding wizard for initial setup, including optional notification permissions. It supports dynamic color theming (Material You) and provides a live notification preview in the settings.
Tech Stack: Developed using Kotlin (2.1.0) with Jetpack Compose and Material 3 for the UI. It employs a ViewModel architecture with StateFlow and Unidirectional data flow. Data persistence is handled by Room (2.6.1) and DataStore Preferences. Dependency injection is managed by Hilt (2.52), and background tasks are handled by WorkManager (2.9.1). Navigation is implemented using Navigation Compose. The AppFunctions utilize androidx.appfunctions:1.0.0-alpha08. The minimum SDK is 33 (Android 13), with a target/compile SDK of 36 (Android 16).
Built with