📱 App Demo Video folgt in kürze! 📦 Download APK
GameRadar ist eine moderne Android-App zur Suche, Verwaltung und Analyse von Videospielen. Die App nutzt die RAWG-API und bietet Favoriten, Wunschliste, Filter, Statistiken, Export/Import und viele Einstellungsmöglichkeiten.
- Edge-to-Edge-Design: Inhalte beginnen direkt unter der Statusleiste, keine doppelten AppBars, keine verschachtelten Scaffold-Strukturen.
- Konsistente UI: Einheitliche Titelzeile mit Actions (Teilen, Favorit, Refresh) auf allen Hauptscreens.
- Dark-/Light-Mode-Umschaltung: Nutzer können das Design jederzeit in den Einstellungen wechseln.
- Settings-Screen: Alle App-Einstellungen (Design, Sprache, Bildqualität, Benachrichtigungen, etc.) zentral und MVVM-konform.
- Fehlerbehandlung pro Feld: Fehler wie „Keine Website verfügbar“ oder „Keine Screenshots verfügbar“ werden gezielt im jeweiligen Bereich angezeigt.
- Null-Safety & Logging: Alle Datenzugriffe sind null-sicher, Navigation und Datenübergaben werden geloggt.
- Navigation nur mit primitiven Typen: Es werden ausschließlich IDs oder Strings übergeben, keine komplexen Objekte.
- Offline-First: Favoriten und Detaildaten werden lokal mit Room gecacht.
- Moderne Compose-Architektur: Klare Trennung von UI, State und Logik, State-Hoisting, keine UI-Logik im ViewModel.
- 🔍 Spielsuche: Suche nach über 350.000 Spielen aus der RAWG-API
- 🏷️ Filter & Sortierung: Filter für Plattform, Genre, Bewertung und Release-Datum
- ⭐ Favoriten & Wunschliste: Speichere und verwalte deine Lieblingsspiele (Herz) und Wunschspiele (Stern). (Offline mit Room)
- 📝 Detailseite: Beschreibung, Galerie, Entwickler, Plattformen, Metacritic, Spielzeit, Screenshots und Trailer
- 🆕 Listenansicht: Neuerscheinungen & Top-rated
- 📤 Spiele teilen: via Link
- ⚡ Offline-Cache: für schnelle Anzeige & Fehlervermeidung
- 🎨 Jetpack Compose UI: modern, performant, flexibel
- 🏗️ MVVM/MVI Hybrid-Architektur: sauberes Repository-Pattern, State-Management und Intent-Handling
- ⏳ Ladeindikator & Error-UI: mit Retry-Funktion (zentralisierte Loading-Komponente)
- 🛡️ Fehlerhinweise direkt im Feld: (z. B. „Keine Screenshots verfügbar“)
- 📝 Logging: für Navigation und Datenübergabe
- 🌓 Dark-/Light-Mode: per Schalter im SettingsScreen
- ⚙️ SettingsScreen: Sprache, Bildqualität, Benachrichtigungen, Design, u.v.m.
- 🔄 Export/Import: Favoriten und Wunschliste als JSON exportieren/importieren (z. B. für Backup oder Gerätewechsel)
- 📊 Statistiken & Charts: Analyse deiner Spielvorlieben
- MVVM: Für klassische UI-Logik, State-Management und Datenbindung.
- MVI: Für komplexe Interaktionen wie Suche, Filter, Undo/Redo, Export/Import.
- Repository-Pattern: Klare Trennung von Datenquellen und UI.
- Jetpack Compose: Modernes, deklaratives UI-Framework für Android.
de.syntax_institut.androidabschlussprojekt
├── data
│ ├── local # Room: Entities, DAOs, DB, Models
│ ├── remote # Retrofit DTOs + API-Service
│ └── repositories # Kommunikation zwischen Datenquellen & Settings
├── domain # Geschäftslogik, Domain-Modelle (z. B. Genre, Platform)
├── di # Dependency Injection (Koin)
├── navigation # Jetpack Navigation Komponenten
├── ui
│ ├── components # Wiederverwendbare Composables (common, detail, search, settings)
│ ├── screens # Hauptscreens (Search, Detail, Favorites, Settings)
│ ├── states # UI-State-Modelle
│ ├── theme # Farben, Typographie, Shapes
│ └── viewmodels # ViewModel-Logik & UI-State
├── utils # Hilfsklassen (z. B. Resource.kt, NetworkUtils)
└── services # z. B. Background-Tasks- Favoriten & Detail-Cache: Offline verfügbar mit Room
- RAWG Video Games API:
- Base URL:
https://api.rawg.io/api/ - Endpoints:
/games?search=...,/games/{id} - Filter: Plattform, Genre, Bewertung, Datum
- API-Key in
local.propertieseintragenAPI_KEY=YOUR_API_KEY
- Base URL:
- Retrofit + Moshi für API
- Room für lokale Datenhaltung
- Jetpack Compose (UI) + Navigation
- Coil für Bild-Loading
- Accompanist für Paging & SwipeRefresh
- Koin für Dependency Injection
- Firebase Crashlytics & Analytics (optional)
- Google AdMob für Banner- und Rewarded-Ads
- Fehler pro Feld: Website oder Screenshots fehlen? → ErrorCard nur im jeweiligen Bereich.
Echte API-/Netzwerkfehler? → Globale ErrorCard mit Retry - Null-Safety: Alle Datenzugriffe sind null-sicher, keine Crashes durch fehlende Felder
- Logging: Navigation und Datenübergaben werden geloggt (z. B. gameId bei Detailaufruf)
- Keine komplexen Objekte in Navigation: Es werden nur primitive Typen (Int, String, Boolean) übergeben
- Die App verwendet Google AdMob für Banner- und Rewarded-Ads.
- Nicht-Pro-User: Werbung ist immer aktiviert, Statistiken und Export werden nach dem Ansehen einer Rewarded Ad freigeschaltet.
- Pro-User: Kann Werbung in den Einstellungen freiwillig aktivieren. Ist Werbung deaktiviert, sind Statistiken und Export immer verfügbar. Ist Werbung aktiviert, werden diese Features wie bei Nicht-Pro-Usern nach einer Rewarded Ad freigeschaltet.
- Es werden ausschließlich Test-IDs für AdMob verwendet (keine Gefahr für das AdMob-Konto beim Testen).
- Favoriten und Wunschliste können als JSON exportiert und importiert werden.
- Die Funktion ist über die jeweiligen Screens erreichbar.
- Für den Export/Import kann eine Rewarded-Ad erforderlich sein (je nach Einstellung).
-
API Keys konfigurieren:
- RAWG API Key erstellen: RAWG API Docs
- AdMob Keys (optional für Release): AdMob Console
-
local.properties konfigurieren:
# RAWG API Key (erforderlich) API_KEY=dein_rawg_api_key_hier # AdMob Configuration (optional für Release) ADMOB_APP_ID=ca-app-pub-XXXXXXXXXX~XXXXXXXXXX ADMOB_REWARDED_AD_UNIT_ID=ca-app-pub-XXXXXXXXXX/XXXXXXXXXX ADMOB_BANNER_AD_UNIT_ID=ca-app-pub-XXXXXXXXXX/XXXXXXXXXX
-
Projekt in Android Studio öffnen und ausführen
local.properties Datei wird nicht committet und enthält sensitive Daten!
- Push-Notifikationen zu neuen Top-Spielen
- Dark Mode (umschaltbar)
- Vollbild-Screenshot-Galerie in Detailseite
- Fehlerbehandlung pro Feld (statt global)
- Logging für Navigation und Fehler
- Erweiterte Paging-Unterstützung
- SettingsScreen mit allen wichtigen App-Optionen(noch in Entwicklung)
- Firebase-Integration für Sync & Analytics(noch in Entwicklung)
Für Fragen, Feedback oder Beiträge kontaktiere bitte: Michael.Winkler.Developer@gmail.com
MIT License – Siehe LICENSE für weitere Informationen.







