Android Native project

FreddyFridge icon

FreddyFridge

A smart household utility for tracking food, managing expiration dates, and making daily kitchen organization easier.

AndroidProductivityUtility app
FreddyFridge

Overview

FreddyFridge

FreddyFridge is an Android app designed to help users reduce food waste by tracking food items stored at home, monitoring expiration dates, and sending timely reminders before products expire.
Users can add food manually or through speech input, organize items by status, and quickly review what is expiring soon, already expired, or already consumed.
The app focuses on a lightweight, friendly experience while solving a practical everyday problem with local persistence and scheduled notifications.

From an engineering perspective, the project is built as a modern native Android application with a feature-oriented structure and a clean presentation/domain/data separation.
The UI is implemented with Jetpack Compose, navigation is handled through Compose Navigation, dependency injection is managed with Hilt, and local persistence is powered by Room.
Business logic is expressed through repository and use-case layers, while state is exposed to the UI through ViewModels and reactive UI state models.
The app also integrates Android alarm and notification APIs for reminder scheduling, in-app review APIs, AdMob, runtime permission handling, and multilingual resources.

Architecture

  • Native Android app in Kotlin.
  • Feature-based package organization.
  • Layered architecture: presentation, domain, data.
  • MVVM for screen state management.
  • Repository pattern for data access abstraction.
  • Use-case classes for domain operations.
  • Single-activity Compose navigation setup.
  • Local-first/offline-capable data model using Room.

Project Strategies

  • Separation of UI, business logic, and persistence concerns.
  • Reusable Compose components for consistent screens and interactions.
  • Strong emphasis on maintainability through feature grouping and shared core modules.
  • User-focused notification strategy with exact alarm permission handling and deep links into relevant screens.
  • Preference-driven customization for reminder frequency and lead time.
  • Internationalization support through localized resources.
  • Incremental refactoring toward cleaner navigation and shared UI component ownership.

Core Technologies

  • Kotlin
  • Jetpack Compose
  • Android ViewModel
  • Hilt
  • Room
  • Coroutines
  • Compose Navigation
  • Material 3
  • AlarmManager and Notification APIs
  • Runtime permissions
  • Google Play In-App Review
  • AdMob / UMP consent flow