How sinful1992/shopping-list-app works
Family Shopping List is an Android family shopping app centered on shared, offline-capable lists and receipt-backed spending history. Members join or create a family, add/check items, sync changes, and can photograph a receipt for OCR and later history, budget, and price analysis. The graph preserves authentication, urgent-item notifications, subscription/ads, analytics, and receipt capabilities documented by the README. Some branches are represented by exact directories because their implementation files were not sampled; those links are omitted where call ownership is not evidenced.
Main entry points: App.tsx App navigation · LocalStorageManager.ts Local storage facade · lists List screens · ItemManager.ts Item management
Components 27
Mobile app
- App navigation
App.tsx - Authentication and family
src/services/AuthenticationModule.ts - Sign-in and family screens
src/screens/auth - Settings
src/screens/settings
Shared shopping
- List screens
src/screens/lists - List management
src/services/ShoppingListManager.ts - Item management
src/services/ItemManager.ts - List subscriptions
src/hooks/useShoppingLists.ts - Offline sync engine
src/services/SyncEngine.ts - Realtime sync listener
src/services/FirebaseSyncListener.ts - Local storage facade
src/services/LocalStorageManager.ts - Local database
src/services/storage/database.ts - Urgent items
src/services/UrgentItemManager.ts
Receipts and spending
- Receipt capture
src/services/ReceiptCaptureModule.ts - Receipt OCR
src/services/ReceiptOCRService.ts - Receipt screens
src/screens/receipts - Receipt image storage
src/services/ImageStorageManager.ts - Shopping history
src/screens/history - Price history
src/services/PriceHistoryService.ts - Budget analysis
src/screens/budget - Spending analytics
src/screens/analytics
Cloud and services
- Notifications
src/services/NotificationManager.ts - Supabase edge functions
supabase/functions - Firebase backend
Plans and ads
- Subscription management
src/contexts/RevenueCatContext.tsx - Ads and consent
src/contexts/AdMobContext.tsx
Other components
- Family member
Connections 35
- Family member → App navigation: uses
README.md - App navigation → Authentication and family: initializes
App.tsx - App navigation → Sign-in and family screens: routes to
App.tsx - App navigation → List screens: routes to
App.tsx - List screens → List subscriptions: subscribes via
src/screens/lists/ListDetailScreen.tsx - List screens → Item management: manages items
src/screens/lists/ListDetailScreen.tsx - List screens → List management: manages lists
src/screens/lists/ListDetailScreen.tsx - List subscriptions → List management: loads lists
src/hooks/useShoppingLists.ts - List subscriptions → Realtime sync listener: subscribes to
src/hooks/useShoppingLists.ts - List subscriptions → Receipt image storage: uses
src/hooks/useShoppingLists.ts - List management → Local storage facade: persists lists
src/services/ShoppingListManager.ts - List management → Offline sync engine: queues sync
src/services/ShoppingListManager.ts - Item management → Local storage facade: persists items
src/services/ItemManager.ts - Item management → Offline sync engine: queues sync
src/services/ItemManager.ts - Item management → Price history: records prices
src/services/ItemManager.ts - Offline sync engine → Local storage facade: reads queue data
src/services/SyncEngine.ts - Local storage facade → Local database: uses database
src/services/storage/database.ts - Urgent items → Local storage facade: stores urgent items
- Urgent items → Supabase edge functions: upserts urgent
- Supabase edge functions → Notifications: sends alerts
- App navigation → Notifications: initializes
App.tsx - Receipt screens → Receipt capture: captures receipt
- Receipt screens → Receipt OCR: requests OCR
- Receipt screens → Receipt image storage: stores image
- Receipt OCR → Supabase edge functions: uses OCR proxy
- Receipt image storage → Firebase backend: uploads image
src/services/ImageStorageManager.ts - Shopping history → Local storage facade: reads history
- Budget analysis → Spending analytics: analyzes spending
- Spending analytics → Price history: uses price data
- App navigation → Subscription management: provides context
App.tsx - Subscription management → Firebase backend: reads family tier
src/contexts/RevenueCatContext.tsx - Subscription management → Supabase edge functions: uses client
- App navigation → Ads and consent: provides context
App.tsx - Ads and consent → Subscription management: checks subscription
src/contexts/AdMobContext.tsx - App navigation → Settings: routes to
App.tsx