Skip to content

SafaEl011/android-kotlin-app

Repository files navigation

🛒 Eksamen Store App

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.


📂 Prosjektstruktur

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

⚙️ Oppsett

Kloning og installasjon

git clone <repo-url>
cd eksamen_store_app

Åpne prosjektet i Android Studio og bygg med Gradle.

Kjøring

  • Bruk emulator eller fysisk Android-enhet
  • Room database initialiseres automatisk i ShopRepository.initializeDatabase(context)
  • Produkter hentes fra FakeStoreAPI og lagres lokalt

🔧 Teknologier

  • Frontend / UI: Kotlin, Jetpack Compose
  • Database: Room med DAO-er (ProductDao, CartDao, FavoriteDao, HistoryDao)
  • API / Networking: Retrofit + Gson + OkHttp Logging
  • State Management: ViewModel + StateFlow

🧩 Funksjoner

  • 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

💾 Room Database

  • AppDatabase samler alle DAO-er og typekonvertere
  • ProductTypeConverter konverterer Date, Rating og List<OrderProduct> til JSON
  • DAO-er for CRUD-operasjoner på produkter, kurv, favoritter og ordrehistorikk

🛠️ Navigasjon

NavController / Compose Navigation i MainActivity:

  • productListScreen → Produktliste
  • productDetailsScreen/{productId} → Produktdetaljer
  • favoriteListScreen → Favoritter
  • shoppingCartScreen → Handlekurv
  • orderHistoryScreen → Ordrehistorikk
  • orderStateScreen → Ordrestatus

🔄 Offline-funksjonalitet

  • Produkter og brukerdata lagres i Room database
  • Hvis API ikke er tilgjengelig, fallback til lokal database
  • Data synkroniseres automatisk når nettverk blir tilgjengelig

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages