- Fix dependency versions (Retrofit 2.11, OkHttp 4.12, Compose BOM) - Add Material Components for the app theme - Add --add-exports/--add-opens for kapt on JDK 21 - Remove deprecated manifest package attr; add INTERNET permission - Add adaptive launcher icon Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Calendarr Android
Projektübersicht
Android-App für den Calendarr-Server. Funktionsgleich mit der iOS-App (Swift, liegt unter ../Calendarr iOS/). Der Server-Code liegt unter ../Calendarr server/.
⚠️ WICHTIG: Read-Only Ordner
Die folgenden Ordner dienen NUR zur Referenz. NIEMALS Dateien darin verändern, löschen oder erstellen:
../Calendarr iOS/→ READ ONLY – nur zur Analyse der Features und API-Nutzung../Calendarr server/→ READ ONLY – nur zur Analyse der API-Endpunkte und Datenmodelle
Alle Änderungen und neue Dateien kommen ausschliesslich in ../Calendarr Android/.
Server
- Basis-URL (Prod): https://cal.scarriffle.com
- Auth: Erst Server-URL eingeben, dann Benutzername + Passwort
- Credentials werden auf Android im EncryptedSharedPreferences gespeichert (Äquivalent zu Apple Keychain)
Tech Stack
- Sprache: Kotlin
- UI: Jetpack Compose + Material 3
- Architektur: MVVM
- Netzwerk: Retrofit + OkHttp
- Lokale Speicherung: EncryptedSharedPreferences (Credentials), Room (Cache)
- Async: Coroutines + Flow
- DI: Hilt
Projektstruktur
../Calendarr iOS/→ READ ONLY – Swift-App als Referenz../Calendarr server/→ READ ONLY – Server als Referenz../Calendarr Android/→ dieses Projekt, hier wird gebaut
Git
- Remote: https://git.scarriffle.com/Scarriffle/Calendarr-Android.git
- Nach jeder abgeschlossenen Funktionseinheit committen und pushen
- Commit-Messages auf Englisch, format:
feat: .../fix: .../chore: ... - Niemals halbfertigen oder nicht-kompilierenden Code pushen
Build
- Debug APK:
./gradlew assembleDebug - Release APK:
./gradlew assembleRelease - Tests:
./gradlew test
Konventionen
- Kein XML für Layouts – ausschliesslich Jetpack Compose
- ViewModels dürfen keine Android-Framework-Klassen direkt referenzieren
- StateFlow für UI-State, keine LiveData
- Alle Strings in res/values/strings.xml
- Vor jedem Push:
./gradlew buildmuss fehlerfrei durchlaufen