This is an old revision of the document!


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:

  1. Inserare rețetă favorită
  2. Ștergere rețetă după ID
  3. Ștergere toate rețele favorite
  4. Interogare toate retetele favorite

Cum rulezi aplicația

  1. 1. Clonează acest repo:

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

- 2. Deschide proiectul în Android Studio.
- 3. Asigură-te că ai internet activ pentru a apela API-ul.
- 4. Rulează aplicația pe un emulator sau dispozitiv fizic.
android/proiect/2025/proiecte/recipefinder.1748554802.txt.gz · Last modified: 2025/05/30 00:40 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