- Language: Kotlin
- Architecture: Google App Architecture (MVVM + Repository)
- Dependency Injection: Koin
- Local Database: Room
- Asynchronous Processing: Coroutines & Flow
- AI Model: Google Gemini 2.5 flash
- Subscription Management: RevenueCat SDK
- Backend/Auth: Firebase
We followed Google’s recommended app architecture to ensure scalability and maintainability.
- UI Layer: Uses ViewModel and StateFlow to handle UI states and react to data changes.
- Domain Layer: Contains business logic and use cases for recipe processing.
- Data Layer: * Repository Pattern: Acts as a single source of truth, mediating between Network (Gemini) and Local (Room) data sources.
- Room DB: Stores saved recipes and shopping lists for offline access.
We integrated RevenueCat to simplify the complex in-app purchase lifecycle.
-
Entitlements: We defined a
Qook Proentitlement that unlocks "Unlimited AI Extractions." -
Dynamic Paywalls: Used RevenueCat to display optimized paywalls, checking user status before allowing Gemini-powered extractions.