A sophisticated Android cooking application that combines offline recipe management with voice-assisted cooking features. Zesty provides hands-free cooking guidance through advanced machine learning-powered voice recognition and offers access to over 6000+ Indian recipes offline.
For a comprehensive walkthrough of all features and voice-assisted cooking capabilities:
๐ฅ Complete App Walkthrough - Detailed demonstration of voice commands, recipe search, and cooking mode
Click to see detailed screenshots of all app screens
- Voice-Assisted Cooking: Hands-free recipe navigation using ML-powered voice commands
- Offline Recipe Database: 6000+ Indian recipes accessible without internet
- Smart Recipe Search: Advanced fuzzy search with ingredient-based filtering
- Recipe Management: Favorites, shopping lists, and personal ingredient tracking
- Cooking Timer: Voice-controlled timer with step-by-step guidance
- YouTube Integration: Video tutorials for recipes
- Modern UI: Beautiful Material Design 3 interface with smooth animations
- Intent Classification: ML model trained to understand cooking voice commands
- Speech Processing: Real-time voice command processing and execution
- Smart Search: Fuzzy matching and ingredient-based recipe discovery
- Text-to-Speech: Audio feedback for cooking instructions
graph TB
A[User Opens App] --> B[Splash Screen]
B --> C[Home Screen]
C --> D{User Action}
D -->|Voice Command| E[Speech Recognition]
D -->|Text Search| F[Search Input]
D -->|Browse| G[Recipe Categories]
E --> H[Intent Classification]
H --> I{Command Type}
I -->|Search Recipe| J[Local Recipe Search]
I -->|Timer Command| K[Cooking Timer]
I -->|Navigation| L[Step Navigation]
I -->|Show Ingredients| M[Ingredient Display]
J --> N{Local Results?}
N -->|Yes| O[Display Local Recipes]
N -->|No| P[TheMealDB API]
P --> Q[Display Online Recipes]
F --> J
G --> J
O --> R[Recipe Detail Screen]
Q --> R
R --> S[Cooking Mode]
S --> T[Voice-Guided Steps]
T --> U[Timer Management]
U --> V[Step Navigation]
V --> T
R --> W[Add to Favorites]
R --> X[Add to Shopping List]
R --> Y[Share Recipe]
graph LR
A[User Voice Input] --> B[SpeechHelper]
B --> C[IntentClassifier]
C --> D[SpeechProcessor]
D --> E[Command Execution]
F[Recipe Search] --> G[LocalRecipeHelper]
G --> H[Offline Database]
G --> I[Fuzzy Search Engine]
J[Online Fallback] --> K[TheMealDB API]
K --> L[Recipe Conversion]
L --> M[Display Results]
N[User Actions] --> O[Room Database]
O --> P[Favorites]
O --> Q[Shopping List]
O --> R[User Ingredients]
MainActivity.kt- Entry point with global error handlingZestyApplication.kt- Application class with dependency injectionAndroidManifest.xml- Permissions and app configuration
NavGraph.kt- Navigation structure with bottom barHomeScreen.kt- Main dashboard with voice searchRecipeDetailScreen.kt- Detailed recipe view with cooking modeFavoritesScreen.kt- Saved recipes managementShoppingListScreen.kt- Shopping list functionalityMyIngredientsScreen.kt- Personal ingredient tracking & detailed ingredient search
Models.kt- Core data models (Recipe, Ingredient, etc.)ZestyDatabase.kt- Room database configurationZestyDao.kt- Database access methodsFavoritesRepository.kt- Repository pattern implementation
HomeViewModel.kt- Home screen state managementRecipeViewModel.kt- Recipe detail and cooking stateFavoritesViewModel.kt- Favorites managementShoppingListViewModel.kt- Shopping list operationsMyIngredientsViewModel.kt- Ingredient management
SpeechHelper.kt- Android Speech Recognition integrationSpeechProcessor.kt- Voice command processing and intent extractionIntentClassifier.kt- ML model for command classificationTTSHelper.kt- Text-to-speech functionality
model.tflite- Trained TensorFlow Lite model for intent classificationlabels.txt- Command labels for the ML modeltflite_voice_training_model.ipynb- Jupyter notebook for model training
LocalRecipeHelper.kt- Offline recipe search and managementrecipes.json- 6000+ Indian recipes database
TheMealDBHelper.kt- TheMealDB API integrationTheMealDBModels.kt- API response modelsNetworkHelper.kt- Network connectivity management
Constants.kt- Application constantsExtensions.kt- Kotlin extension functionsRecipeRepository.kt- In-memory recipe storageMicButton.kt- Custom microphone button component
ImageCacheHelper.kt- Image loading and cachingRecipeStepParser.kt- Recipe instruction parsingSearchPerformanceHelper.kt- Search optimizationTimerWorker.kt- Background timer managementYouTubeAPIHelper.kt- YouTube video integration
The application uses a custom-trained TensorFlow Lite model for voice command classification:
- Input: Text strings (voice commands)
- Architecture: Bidirectional LSTM with Global Max Pooling
- Output: Intent classification (5 main intents)
- Accuracy: 95%+ on test data
search_recipe - "I want to make biryani"
set_timer - "Set timer for 10 minutes"
show_ingredients - "Show me the ingredients"
next_step - "Next step"
previous_step - "Go back"
The model was trained using Google Colab with the following approach:
- Data Collection: 794 voice command samples across 5 intent categories
- Preprocessing: Text normalization and tokenization
- Model Training: BiLSTM with embedding layer and dropout
- Optimization: Early stopping and learning rate reduction
- Export: TensorFlow Lite conversion for mobile deployment
- Training Accuracy: 95%+
- Validation Accuracy: 93%+
- Model Size: ~2MB (optimized for mobile)
- Inference Time: <100ms on average Android device
Zesty includes a comprehensive offline recipe database with 6000+ Indian recipes:
- Original Dataset: Kaggle Indian Recipes Dataset
- Processing: Custom Python scripts for data cleaning and image URL updates
- Format: JSON with structured recipe data
graph LR
A[Kaggle Dataset] --> B[python_image_gen.py]
B --> C[Updated CSV]
C --> D[python_to_json.py]
D --> E[recipes.json]
E --> F[Android Assets]
F --> G[LocalRecipeHelper]
{
"RecipeName": "masala karela recipe",
"TotalTimeInMins": 45,
"Instructions": ["Step 1", "Step 2", ...],
"Ingredients": ["salt", "onion", ...],
"image-url": "https://...",
"Ingredient-count": 10,
"matched_page_url": "https://..."
}- Fuzzy Search: Levenshtein distance-based matching
- Ingredient Matching: Find recipes by available ingredients
- Title Search: Exact and partial title matching
- Performance: Sub-100ms search times with caching
When offline recipes don't match user queries, the app falls back to TheMealDB API:
- Base URL:
https://www.themealdb.com/ - Endpoints: Search, random recipes, recipe details
- Fallback Strategy: Local first, then online
- Caching: Search results cached for performance
sequenceDiagram
participant U as User
participant SH as SpeechHelper
participant IC as IntentClassifier
participant SP as SpeechProcessor
participant VM as ViewModel
participant TTS as TTSHelper
U->>SH: Voice Command
SH->>IC: Text Input
IC->>SP: Intent Classification
SP->>VM: Processed Command
VM->>TTS: Audio Feedback
TTS->>U: Spoken Response
- Voice-controlled navigation between recipe steps
- Audio feedback for each cooking instruction
- Timer integration for timed cooking steps
- Hands-free operation during cooking
- Voice-activated timer setting
- Background timer with notifications
- Step-specific timing recommendations
- Timer pause/resume functionality
- Model: Data classes and Room entities
- View: Jetpack Compose UI components
- ViewModel: State management with StateFlow
- Repository: Data access abstraction
- Manual dependency injection through Application class
- Repository pattern for data access
- Factory pattern for ViewModel creation
- UI: Jetpack Compose with Material Design 3
- Navigation: Navigation Compose
- Database: Room with TypeConverters
- Networking: Retrofit with Gson
- Background Tasks: WorkManager
- Image Loading: Coil with GIF support
- Framework: TensorFlow Lite
- Model: Custom BiLSTM (Bidirectional Long Short Memory) for intent classification
- Delegates: Flex Delegate for enhanced operations
- Performance: Optimized for mobile inference
- Recognition: Android Speech Recognition API
- TTS: Android Text-to-Speech API
- Processing: Custom intent extraction algorithms
- Caching: Multi-level search result caching
- Indexing: Pre-built search indices for fast lookups
- Fuzzy Matching: Optimized Levenshtein distance implementation
- Background Processing: Async search operations
- Image Caching: Efficient image loading with Coil
- Database Optimization: Room with proper indexing
- State Management: Efficient StateFlow usage
- Resource Cleanup: Proper lifecycle management
- Color Scheme: Custom color palette with dynamic theming
- Typography: Material Design typography scale
- Components: Custom components with consistent styling
- Animations: Smooth transitions and micro-interactions
- MicButton: Custom animated microphone button
- CollapsibleHeader: Dynamic header with search functionality
- RecipeCard: Consistent recipe display cards
- CustomNavigationBar: Animated bottom navigation
- Featured recipe carousel
- Voice search interface
- Suggested recipes grid
- Quick access to favorites
- Full-screen recipe images
- Step-by-step cooking instructions
- Voice control interface
- Timer and navigation controls
- Hands-free operation
- Voice feedback
- Timer integration
- Step navigation
- Android Studio Arctic Fox or later
- Android SDK 26+ (Android 8.0+)
- Kotlin 2.0.0+
- Gradle 8.4.2+
-
Clone the Repository
git clone https://github.com/indra057/zesty.git cd zesty -
Configure API Keys
- Create
local.propertiesfile in project root - Add your YouTube API key:
YOUTUBE_API_KEY=your_youtube_api_key_here
- Create
-
Build and Run
./gradlew assembleDebug
The app requires the following permissions:
RECORD_AUDIO- For voice recognitionINTERNET- For online recipe fetchingACCESS_NETWORK_STATE- For network status checkingPOST_NOTIFICATIONS- For timer notifications
- Unit Tests: ViewModel and utility function testing
- Integration Tests: Database and API integration testing
- UI Tests: Compose UI component testing
- Voice Tests: Speech recognition accuracy testing
# Unit tests
./gradlew test
# Instrumented tests
./gradlew connectedAndroidTest
# All tests
./gradlew check- Cold Start: <2 seconds
- Search Response: <100ms average
- Voice Recognition: <500ms average
- Memory Usage: <150MB typical
- Battery Impact: Minimal with optimized background tasks
- Model Size: 2MB
- Inference Time: <100ms
- Accuracy: 95%+ on test data
- Memory Usage: <10MB during inference
- Multi-language Support: Hindi and regional language support
- Recipe Recommendations: AI-powered recipe suggestions
- Nutritional Analysis: Calorie and nutrition tracking
- Social Features: Recipe sharing and community
- Offline Video: Cached cooking videos
- Smart Shopping: AI-powered shopping list optimization
- Model Updates: Continuous ML model improvements
- Performance: Further optimization for low-end devices
- Accessibility: Enhanced accessibility features
- Testing: Expanded test coverage
- Documentation: API documentation and developer guides
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
- Follow Kotlin coding conventions
- Use meaningful variable and function names
- Add comments for complex logic
- Maintain consistent formatting
This project is licensed under the MIT License - see the LICENSE file for details.
- Dataset: Kaggle Indian Recipes Dataset
- API: TheMealDB for additional recipes
- ML Framework: TensorFlow Lite for mobile machine learning
- UI Framework: Jetpack Compose for modern Android UI
For support, questions, or feature requests:
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: indrajiitdas057@gmail.com
Experience the complete Zesty cooking journey through our intuitive interface:
Made with โค๏ธ for cooking enthusiasts
Zesty - Your Culinary companion











