/foodies_app

Compose Multiplatform app that displays a list of food recipes.

Primary LanguageKotlin

Food Recipes app

This is a Kotlin Multi-Platform Mobile application made using Room, Koin, Ktor, Coil, and Datastore and Material Design and follows a multi-module MVVM Architecture. It shows a list of recipes, and there are plans to add more functionality.

API

https://www.themealdb.com/api.php

Artchitecture

The application follows Google’s Layered architecture design guideline. The app's overall architecture comprises of three layers: the UI, Domain Layer, and Data layers. Each of these has different responsibilities.

Screenshot 2024-01-16 at 13 05 06

The solution makes use of a Unidirectional Flow of data between each of the layers, the UI Layer components send events to the Domain Layer, which in turn sends data requests to the Data Layer. In return, the Data Layers send data to the Domain Layer, which sends UI events to the UI layer.

On the UI Layer, we make use of StateFlow for reactive state management. The views (composables) send events and observe data updates on the view model, and the view model responds by updating the state variables in question.

Screenshot 2024-01-16 at 13 10 37

Illustraton