This is an old revision of the document!
Draica Violeta Ana-Maria, AAC, github: https://github.com/violetaanamaria/RecipeFinder
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.
- Persistență locală a rețetelor favorite cu Room Database.
- Navigare prin meniul lateral între:
## 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:
## Cum rulezi aplicația
1. Clonează acest repo:
```bash 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.