feat(android): implement auth screens, onboarding flow, and account setup

- Add AuthRepository with EncryptedSharedPreferences and OkHttp API calls
- Add AuthViewModel with login/signup/reset/Google Sign-In flows
- Create auth screens: AuthScreen, LoginScreen, SignupScreen,
  ForgotPasswordScreen, ResetPasswordScreen, BiometricAuthScreen
- Create onboarding screens with HorizontalPager: PlanSelection,
  WatchlistSetup, FamilyInvite, Complete (with checkmark animation)
- Wire auth state to navigation: unauthenticated→auth, new→onboarding,
  authenticated→dashboard
- Add PasswordStrength utility with tests
- Add dependencies: security-crypto, biometric, play-services-auth,
  okhttp, gson, lottie-compose, material-icons-core
- Add unit tests: 23 tests passing for AuthViewModel and PasswordStrength
This commit is contained in:
2026-05-25 20:24:33 -04:00
parent 325be03797
commit a90534e164
24 changed files with 2382 additions and 38 deletions

View File

@@ -10,6 +10,13 @@ navigationCompose = "2.7.7"
kotlin = "2.2.10"
composeBom = "2025.12.00"
coilCompose = "2.7.0"
securityCrypto = "1.1.0-alpha06"
biometric = "1.2.0-alpha05"
playServicesAuth = "21.0.0"
okhttp = "4.12.0"
gson = "2.10.1"
lottieCompose = "6.4.0"
coroutinesTest = "1.7.3"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
@@ -29,6 +36,13 @@ androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-te
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" }
androidx-compose-material3-adaptive-navigation-suite = { group = "androidx.compose.material3", name = "material3-adaptive-navigation-suite" }
coil-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coilCompose" }
androidx-security-crypto = { group = "androidx.security", name = "security-crypto", version.ref = "securityCrypto" }
androidx-biometric = { group = "androidx.biometric", name = "biometric", version.ref = "biometric" }
play-services-auth = { group = "com.google.android.gms", name = "play-services-auth", version.ref = "playServicesAuth" }
okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" }
gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
lottie-compose = { group = "com.airbnb.android", name = "lottie-compose", version.ref = "lottieCompose" }
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutinesTest" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }