A program egy receptkönyv alkalmazás, ahol össze vannak gyüjtve a receptek. Nagyon szeretek főzni, és gondoltam milyen menő lenne egy saját recept alkalmazást készíteni. így megszületett az alkalmazás, ez egy tökéletes alkalmazás mindenkinek aki szeret főzni, vagy csak recepteket szeretne nézegetni.
Az alkalmazás főmenüjében fel vannak sorolva a receptek egy rácsos Grid nézetben, ha valamelyik megtetszik részletesen is meglehet tekinteni az elkészítési módját. A kedvenc recepteidet berakhatod a "kedvencek" listájában, hogy máskor könnyebben lehessen megtalálni. Egy időzítő van beépítve az alkalmazásban, hogy amikor készíted az ételt ne kelljen folyamatosan figyelni az időre.
Az alkalmazás indításakor a főképernyő fogadja a felhasználót, ahol alapértelmezetten 'a' beture keresett receptek jelennek meg. Jobb alsó sarokon lévő szívre kattintva lehet kedvencek részletes nézetre navigálni, és a szív felett lévő csnengőre kattintva lehet időzítőre.
1. ábra: A főképernyő felső TopAppBar-nál van keresés, jobb alsó sarokban kedvencek, és időzítő.
A lista elemeire (recept) kattintva megjelenik a részletes nézet, ahol a felhasználó megtekintheti az étel hozzávalóit és elkészítési módját. A jobb felső sarokban található szív ikonnal a recept menthető a kedvencek közé, így az internetkapcsolat nélkül is elérhető marad.
2. ábra: A recept részletes nézete
Ha megnyitottad az időzítőtt, akkor ott előre beállított (1, 5, 10 perc) vagy egyéni időtartam adható meg. Az időzítő a háttérben is fut, és értesítésben jelzi a hátralévő időt. Stop Timerre kattintva leállítja az időzítőt.
3. ábra: Időzítő részletes nézete
Ha megnyitottad az kedvenceket, akkor itt látható az összes elmentett kedvenc receptek. Offline is működik.
4. ábra: Kedvencek részletes nézete
• MVVM (Model-View-ViewModel) architektúrában van készítve a program.
• A felhasználói felület Jetpack Compose.
• Type-Safe Navigation a képernyők közötti biztonságos navigációhoz.
• Hilt a Dependency Injection felhasználása.
• Retrofit és Moshi a hálózati kommunikációhoz és a JSON feldolgozáshoz.
• The Meal DB api felhasználása
• Room Persistence könyvtár a kedvenc receptek helyi tárolásához.
• Coil a képek aszinkron betöltéséhez és gyorsítótárazásához.
• Service, és NotificationCompat használata háttérben futó időzítő megvalósításához.
A fejlesztés során a nehézség volt az offline adatnak a részletes oldal betöltése. Először úgy próbáltam kikeresni az adatbázisban elmentett adatokat hogy a "getSavedMeals" függvénnyel ami visszaadja az összes ételt, és abból kikeresni az "id" alapján a részletes nézetett, de sajnos nem sikerült. Valószínűleg azért nem működött, mert egy flowt add vissz a függvény. Flownak ugye van késés ezért nem tölt be a részletes adatai. Utána rájottem, hogy adatbázisban tudok csinálni külön műveletett ami kikeresi egyből a kívánt "id" alapú recept részletes adatait. Mivel "id" alapú keresés már egy konkrét "Meal"-t ad vissza, így már működött.
