Skip to content

FalconeGiuseppe/avanzo-compose-multiplatform

Repository files navigation

🍽️ Avanzo

A Kotlin Multiplatform app to track your food leftovers — so nothing goes to waste.

Avanzo (Italian for leftover) lets you log what's sitting in your fridge, set reminders before food expires, and reduce waste — on both Android and iOS, from a single shared codebase.


📱 Screenshots

Coming soon


🏗️ Architecture

Avanzo is built with MVI (Model–View–Intent), keeping the UI fully driven by a unidirectional data flow:

User Intent → ViewModel → StateFlow → Composable UI
  • State is a single immutable data class exposed as a StateFlow
  • Intents are sealed classes representing every possible user action
  • Side effects are handled via a separate SharedFlow channel
  • The UI never mutates state directly — it only emits intents

This makes the app highly predictable and easy to test.


⚛️ Reactive Programming

State management is built entirely on Kotlin Flow:

Concept Implementation
UI state StateFlow<ScreenState> in the ViewModel
One-off events SharedFlow<SideEffect>
Collecting in UI collectAsState() in Compose
Async operations viewModelScope + coroutines

🛠️ Tech Stack

Layer Technology
UI Compose Multiplatform
State management Kotlin Flow / StateFlow
Architecture MVI
Shared logic Kotlin Multiplatform (KMP)
Platforms Android, iOS

📂 Project Structure

avanzo-compose-multiplatform/
├── composeApp/
│   └── src/
│       ├── commonMain/       # Shared UI, ViewModels, business logic
│       ├── androidMain/      # Android-specific entry points
│       └── iosMain/          # iOS-specific entry points
└── iosApp/                   # iOS app shell (SwiftUI entry point)

🚀 Getting Started

Prerequisites

  • Android Studio Hedgehog or later
  • Xcode 15+ (for iOS)
  • JDK 17+

Run on Android

./gradlew :composeApp:installDebug

Run on iOS

Open iosApp/iosApp.xcodeproj in Xcode and run on a simulator or device.


👤 Author

Giuseppe Falcone — Freelance Mobile Developer
LinkedIn · Milan, Italy

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors