RecipeFinder

Draica Violeta Ana-Maria, AAC, github: https://github.com/violetaanamaria/RecipeFinder

Descriere generală

Recipe Finder este o aplicație Android dezvoltată în Kotlin utilizând Jetpack Compose și Material 3 ca toolkit UI. Scopul aplicației este de a permite utilizatorilor să caute rețete după ingrediente, să vizualizeze detalii despre rețete și să salveze rețetele preferate local folosind o bază de date Room.

Funcționalități principale

Căutare rețete după ingredient sau nume (prin API-ul [TheMealDB](https://www.themealdb.com)).

Afișare detalii rețetă: imagine, instrucțiuni, listă ingrediente + cantități.

Favorite: adăugare / eliminare rețete în/din lista de favorite.

Dark Mode: activare/dezactivare mod întunecat din Settings.

Ștergere favorite: buton în Settings pentru ștergerea completă a rețetelor favorite (Clear all favorites).

Persistență locală a rețetelor favorite cu Room Database.

Navigare prin meniul lateral între:

  • Search
  • Favorites
  • Settings

Tehnologii folosite

  • Kotlin ca limbaj principal de programare
  • Jetpack Compose pentru UI declarativ modern
  • Material 3 (Material You) pentru design vizual adaptiv și modern
  • ViewModel + StateFlow pentru gestionarea reactivă a stării
  • Kotlin Coroutines pentru programare asincronă
  • Retrofit pentru utilizarea API-ului REST
  • Gson Converter pentru parsarea automată a răspunsurilor JSON
  • Room pentru stocarea rețetelor favorite local, folosind o bază de date SQL
  • Coil pentru încărcarea eficientă a imaginilor din rețea

Arhitectură

Aplicația este structurată folosind arhitectura MVVM (Model-View-ViewModel), o abordare recomandată în dezvoltarea Android pentru separarea responsabilităților și o mai bună testabilitate:

  • Model: include clasele de date (`Meal`, `FavoriteMeal`), clasa DAO pentru accesul la baza de date (`MealDao`) și `MealApiService` pentru interacțiunea cu API-ul extern.
  • ViewModel: `MealViewModel` gestionează logica de business și starea ecranului pentru rețete, iar `SettingsViewModel` controlează stările aplicației precum tema (dark/light)
  • View: este alcătuită din componente Composable definite în `ui/screens`, care observă datele din ViewModel și se actualizează automat în funcție de acestea.

Endpoint-uri folosite

- `GET https://www.themealdb.com/api/json/v1/1/search.php?s={nume}`

Caută rețete după nume.  
Exemplu: `https://www.themealdb.com/api/json/v1/1/search.php?s=pizza`

Bază de date locală

Se folosește Room pentru persistarea rețetelor favorite.

Tabel: `favorites` definit prin `@Entity`

Operații:

  • Inserare rețetă favorită
  • Ștergere rețetă după ID
  • Ștergere toate rețele favorite
  • Interogare toate retetele favorite

Cum rulezi aplicația

  1. 1. Clonează acest repo:

git clone https://github.com/violetaanamaria/RecipeFinder.git

  1. Deschide proiectul în Android Studio.
  2. Asigură-te că ai internet activ pentru a apela API-ul.
  3. Rulează aplicația pe un emulator sau dispozitiv fizic.
android/proiect/2025/proiecte/recipefinder.txt · Last modified: 2025/05/30 00:45 by violeta_ana.draica
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0