This shows you the differences between two versions of the page.
|
android:proiect:2025:proiecte:recipefinder [2025/05/30 00:30] violeta_ana.draica |
android:proiect:2025:proiecte:recipefinder [2025/05/30 00:45] (current) violeta_ana.draica |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | # RecipeFinder | + | ====== RecipeFinder ====== |
| - | Draica Violeta Ana-Maria, AAC, github: https://github.com/violetaanamaria/RecipeFinder | ||
| - | ## Descriere generală | + | 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. | 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 | + | ====== 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. | + | **Căutare rețete** după ingredient sau nume (prin API-ul [TheMealDB](https://www.themealdb.com)). |
| - | - **Navigare** prin meniul lateral între: | + | **Afișare detalii rețetă**: imagine, instrucțiuni, listă ingrediente + cantități. |
| - | - Search | + | |
| - | - Favorites | + | |
| - | - Settings | + | |
| - | ## Tehnologii folosite | + | **Favorite**: adăugare / eliminare rețete în/din lista de favorite. |
| - | - **Kotlin** ca limbaj principal de programare | + | **Dark Mode**: activare/dezactivare mod întunecat din Settings. |
| - | - **Jetpack Compose** pentru UI declarativ modern | + | |
| - | - **Material 3 (Material You)** pentru design vizual adaptiv și modern | + | **Ștergere favorite**: buton în Settings pentru ștergerea completă a rețetelor favorite (Clear all favorites). |
| - | - **ViewModel + StateFlow** pentru gestionarea reactivă a stării | + | |
| - | - **Kotlin Coroutines** pentru programare asincronă | + | **Persistență locală** a rețetelor favorite cu Room Database. |
| - | - **Retrofit** pentru utilizarea API-ului REST | + | |
| - | - **Gson Converter** pentru parsarea automată a răspunsurilor JSON | + | **Navigare** prin meniul lateral între: |
| - | - **Room** pentru stocarea rețetelor favorite local, folosind o bază de date SQL | + | |
| - | - **Coil** pentru încărcarea eficientă a imaginilor din rețea | + | * 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ă ====== | ||
| - | ## 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: | 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. | + | * **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) | + | * **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. | + | * **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 ====== | ||
| - | ## Endpoint-uri folosite | ||
| - `GET https://www.themealdb.com/api/json/v1/1/search.php?s={nume}` | - `GET https://www.themealdb.com/api/json/v1/1/search.php?s={nume}` | ||
| Caută rețete după nume. | Caută rețete după nume. | ||
| Exemplu: `https://www.themealdb.com/api/json/v1/1/search.php?s=pizza` | Exemplu: `https://www.themealdb.com/api/json/v1/1/search.php?s=pizza` | ||
| - | ## Bază de date locală | + | |
| + | ====== 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 ====== | ||
| - | - 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. Clonează acest repo: |
| - | 1. Clonează acest repo: | + | ''git clone https://github.com/violetaanamaria/RecipeFinder.git'' |
| - | ```bash | + | - Deschide proiectul în Android Studio. |
| - | git clone https://github.com/violetaanamaria/RecipeFinder.git | + | - Asigură-te că ai internet activ pentru a apela API-ul. |
| - | ``` | + | - Rulează aplicația pe un emulator sau dispozitiv fizic. |
| - | 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. | + | |