- Theme primary now the iOS brand green (#20A050), fixed app-wide (was tied to the server's blue primary_color) - Launcher icon generated from the iOS AppIcon across all densities; dropped the placeholder adaptive icon - PasswordField: eye toggle + brief last-character reveal; used on login, profile and CalDAV password inputs - Login now surfaces the server's actual error detail (verified the JSON contract against the live server; a 401 is a genuine credential mismatch) - CLAUDE.md: correct prod base URL to calendar.scarriffle.com Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
# 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://calendar.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 build` muss fehlerfrei durchlaufen
|