A comprehensive Flutter application that transforms food inspiration into actionable cooking experiences using AI-powered recipe generation, community features, and subscription-based monetization.
- Generate recipes from text descriptions
- Create recipes from food images
- YouTube video analysis for recipe extraction
- Personalized recommendations based on dietary preferences
- Nutritional analysis and grocery list generation
- Share and discover recipes from other users
- Like, comment, and save community recipes
- Follow your favorite cooks
- Recipe collections and meal planning
- RevenueCat integration for subscription management
- Premium features with paywall
- Multiple subscription tiers
- Restore purchases functionality
- Material Design 3 with custom theming
- Smooth animations and transitions
- Responsive design for all screen sizes
- Dark/light theme support
- Accessibility features
- Flutter SDK (>=3.10.7)
- Dart SDK (>=3.10.7)
- Android Studio / VS Code
- Git
-
Clone the repository
git clone https://github.com/yourusername/letscook.git cd letscook -
Install dependencies
flutter pub get
-
Generate code
flutter packages pub run build_runner build
The app requires several API keys for full functionality. You can set them up in multiple ways:
Option 1: Environment Variables (Recommended)
export GEMINI_API_KEY="your_gemini_api_key_here"
export REVENUE_CAT_API_KEY="your_revenue_cat_api_key_here"
export FIREBASE_API_KEY="your_firebase_api_key_here"Option 2: Flutter Run with --dart-define
flutter run --dart-define=GEMINI_API_KEY=your_key_here \
--dart-define=REVENUE_CAT_API_KEY=your_key_here \
--dart-define=FIREBASE_API_KEY=your_key_hereOption 3: Create a .env file (Development only)
Create a .env file in the root directory:
GEMINI_API_KEY=your_gemini_api_key_here
REVENUE_CAT_API_KEY=your_revenue_cat_api_key_here
FIREBASE_API_KEY=your_firebase_api_key_here-
Google Gemini AI API Key
- Visit Google AI Studio
- Create a new API key
- Enable the Gemini API
-
RevenueCat API Key
- Sign up at RevenueCat
- Create a new project
- Get your public API key from the dashboard
-
Firebase API Key (Optional)
- Create a Firebase project at Firebase Console
- Enable Authentication
- Download
google-services.json(Android) andGoogleService-Info.plist(iOS)
-
Development mode
flutter run
-
With specific environment
flutter run --dart-define=ENVIRONMENT=development
-
Release mode
flutter run --release
The app follows Clean Architecture principles with the following structure:
lib/
βββ core/ # Core utilities and services
β βββ config/ # Environment configuration
β βββ constants/ # App constants
β βββ di/ # Dependency injection
β βββ error/ # Error handling
β βββ services/ # External service integrations
βββ data/ # Data layer
β βββ datasources/ # Remote and local data sources
β βββ models/ # Data models with JSON serialization
β βββ repositories/ # Repository implementations
βββ domain/ # Domain layer (business logic)
β βββ entities/ # Core business entities
β βββ repositories/ # Repository interfaces
β βββ usecases/ # Business use cases
βββ presentation/ # Presentation layer
βββ blocs/ # State management (BLoC pattern)
βββ screens/ # Full-screen views
βββ widgets/ # Reusable UI components
- State Management: BLoC Pattern with flutter_bloc
- Dependency Injection: GetIt
- Networking: Dio with custom interceptors
- Local Storage: SharedPreferences + Hive
- Animations: flutter_animate + Lottie
- AI Integration: Google Generative AI (Gemini)
- Subscriptions: RevenueCat
- Authentication: Firebase Auth (optional)
Run tests with:
flutter testRun integration tests:
flutter drive --target=test_driver/app.dartflutter build apk --release
# or
flutter build appbundle --releaseflutter build ios --release| Variable | Description | Required | Default |
|---|---|---|---|
ENVIRONMENT |
App environment (development/staging/production) | No | development |
GEMINI_API_KEY |
Google Gemini AI API key | Yes* | - |
REVENUE_CAT_API_KEY |
RevenueCat public API key | Yes* | - |
FIREBASE_API_KEY |
Firebase API key | No | - |
*Required for full functionality. App will work with limited features without these keys.
The app automatically enables/disables features based on available API keys:
- AI Features: Enabled when
GEMINI_API_KEYis provided - Subscriptions: Enabled when
REVENUE_CAT_API_KEYis provided - Firebase Auth: Enabled when
FIREBASE_API_KEYis provided - Mock Data: Enabled in development mode
The app uses Material Design 3 with custom colors. You can modify the theme in lib/main.dart:
ThemeData _buildTheme() {
const primaryColor = Color(0xFFFF6B35); // Change this
// ... rest of theme configuration
}- Create domain entities in
lib/domain/entities/ - Define repository interfaces in
lib/domain/repositories/ - Implement use cases in
lib/domain/usecases/ - Create data models in
lib/data/models/ - Implement repositories in
lib/data/repositories/ - Add BLoC for state management in
lib/presentation/blocs/ - Create UI screens and widgets in
lib/presentation/
-
API Keys not working
- Ensure keys are properly set in environment variables
- Check that keys have proper permissions
- Verify the keys are not expired
-
Build failures
- Run
flutter clean && flutter pub get - Check Flutter and Dart SDK versions
- Ensure all dependencies are compatible
- Run
-
iOS build issues
- Update CocoaPods:
cd ios && pod install - Check iOS deployment target (minimum iOS 12.0)
- Update CocoaPods:
-
Android build issues
- Check
android/app/build.gradlefor correct configurations - Ensure minimum SDK version is 21
- Check
Enable debug logging by setting:
flutter run --dart-define=ENVIRONMENT=developmentThis project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For support, email [email protected] or create an issue in this repository.
- Flutter - UI framework
- Google Gemini AI - AI recipe generation
- RevenueCat - Subscription management
- Firebase - Authentication and backend services
- Lottie - Animations
Made with β€οΈ by the LetsCook team