Eksamen Store App er en Android-app bygget med Kotlin, Jetpack Compose, Room, og Retrofit. Appen lar brukere bla gjennom produkter, legge til favoritter, handle i en kurv og se ordrehistorikk.
Appen henter data fra FakeStoreAPI og lagrer dem lokalt i Room database.
app/src/main/java/com/example/eksamen_store_app/
├─ data/
│ ├─ room/ # Room database og DAO-er
│ │ ├─ AppDatabase.kt
│ │ ├─ CartDao.kt
│ │ ├─ FavoriteDao.kt
│ │ ├─ HistoryDao.kt
│ │ ├─ ProductDao.kt
│ │ └─ ProductTypeConverter.kt
│ ├─ Cart.kt # Room entity
│ ├─ Favorite.kt # Room entity
│ ├─ History.kt # Room entity
│ ├─ Product.kt # Room entity
│ ├─ ShopRepository.kt # Room + Retrofit logikk
│ └─ ShopService.kt # Retrofit API
├─ screens/
│ ├─ product_list/
│ │ ├─ ProductItem.kt
│ │ ├─ ProductListScreen.kt
│ │ └─ ProductListViewModel.kt
│ ├─ product_details/
│ │ ├─ ProductDetailsScreen.kt
│ │ └─ ProductDetailsViewModel.kt
│ ├─ shoppingcart/
│ │ ├─ ShoppingCartScreen.kt
│ │ └─ ShoppingCartViewModel.kt
│ ├─ favorites/
│ │ ├─ FavoriteListScreen.kt
│ │ └─ FavoriteListViewModel.kt
│ └─ orderhistory/
│ ├─ OrderHistoryScreen.kt
│ ├─ OrderHistoryViewModel.kt
│ └─ OrderStateScreen.kt
├─ ui/theme/ # Compose temaer
└─ MainActivity.kt # Oppstart og navigasjon
res/
├─ AndroidManifest.xml
build.gradle.kts
gradle/
gradle.properties
gradlew
gradlew.bat
settings.gradle.kts
.gitignore
git clone <repo-url>
cd eksamen_store_appÅpne prosjektet i Android Studio og bygg med Gradle.
- Bruk emulator eller fysisk Android-enhet
- Room database initialiseres automatisk i
ShopRepository.initializeDatabase(context) - Produkter hentes fra FakeStoreAPI og lagres lokalt
- Frontend / UI: Kotlin, Jetpack Compose
- Database: Room med DAO-er (
ProductDao,CartDao,FavoriteDao,HistoryDao) - API / Networking: Retrofit + Gson + OkHttp Logging
- State Management: ViewModel + StateFlow
- Produktliste med søk og kategori-filter
- Produktdetaljer med bilde, pris, beskrivelse og rating
- Legge til / fjerne favoritter
- Handlekurv med legg til/fjern produkter
- Ordrehistorikk for bruker
- Offline-støtte via Room
AppDatabasesamler alle DAO-er og typekonvertereProductTypeConverterkonvertererDate,RatingogList<OrderProduct>til JSON- DAO-er for CRUD-operasjoner på produkter, kurv, favoritter og ordrehistorikk
NavController / Compose Navigation i MainActivity:
productListScreen→ ProduktlisteproductDetailsScreen/{productId}→ ProduktdetaljerfavoriteListScreen→ FavorittershoppingCartScreen→ HandlekurvorderHistoryScreen→ OrdrehistorikkorderStateScreen→ Ordrestatus
- Produkter og brukerdata lagres i Room database
- Hvis API ikke er tilgjengelig, fallback til lokal database
- Data synkroniseres automatisk når nettverk blir tilgjengelig