Azriel b42497a368 feat(frontend): implement full Android UI — auth, pantry, recipes, shopping lists, settings, navigation
## Summary
Complete Jetpack Compose Android frontend for Pantree Phase 1 MVP.

### Architecture
- MVVM + Repository pattern with Hilt DI
- Room local cache with Flow-based observation
- Retrofit + OkHttp with JWT auth interceptor
- EncryptedSharedPreferences token storage
- ConnectivityObserver for offline detection

### Screens & ViewModels
- Auth: SignIn, SignUp, ForgotPassword, AccountRestore
- Pantry: list, add/edit/delete items, duplicate conflict handling
- Recipes: browse with filter chips (All/Can Make/Partial), search, detail with scale (1×/2×/3×)
- Shopping Lists: list index, detail with check-off, add items, swipe-to-delete
- Settings: profile card, sync now, sign out, delete account

### State coverage — every screen handles all four states
- Loading: CircularProgressIndicator with contextual message
- Error: ErrorState with retry, inline error banners with dismiss
- Empty: EmptyState with icon, title, subtitle, optional CTA
- Success: full content with pull-to-refresh

### Components (CommonComponents.kt)
- LoadingState, InlineLoading
- ErrorState (full-screen with retry)
- EmptyState (icon + title + subtitle + optional action)
- OfflineBanner (read-only mode indicator)
- SyncingIndicator (animated, non-blocking)
- PantreeSnackbarHost
- ConfirmDeleteDialog (human-readable copy)
- SectionHeader

### Data layer
- ApiModels.kt: all request/response DTOs
- NetworkResult<T>: sealed Success/Error/Loading wrapper
- safeApiCall: maps network exceptions to friendly errors
- Repositories: Auth, Pantry, Recipe, Shopping, Sync
- Room entities + DAOs for offline cache
- SyncRepository: full + delta sync with tombstone support

### Navigation
- Screen.kt: sealed class route definitions
- NavGraph.kt: PantreeNavHost (auth/main split) + MainScaffold (bottom nav)
- Bottom navigation: Pantry, Recipes, Lists, Settings

### Theme
- PantreeTheme: warm earthy palette (green primary, orange secondary)
- Light + dark color schemes
- Custom typography scale

### Tests
- AuthViewModelTest: signup, signin, duplicate, pending-deletion, password reset, clearError
- PantryViewModelTest: CRUD, duplicate conflict, offline snackbar vs error
- RecipesViewModelTest: filters, search, detail load, 404 handling, clearDetail
2026-05-10 05:09:35 +00:00
2026-05-10 03:47:22 +00:00

pantree

Description
No description provided
Readme 218 KiB
Languages
Kotlin 60.6%
TypeScript 39.2%
JavaScript 0.2%