A Flutter application that allows users to scan wine bottles and get detailed information about them, including an AI-powered Q&A feature.
- Camera Integration: Take photos of wine bottles using the device camera
- Gallery Import: Import wine bottle images from your photo gallery
- Image Recognition: Identifies wine bottles and extracts information
- Real-time Processing: Instant wine identification with detailed results
- Comprehensive Details: Name, brand, vintage, region, country, grape variety
- Wine Ratings: Quality ratings and reviews
- Visual Display: Beautiful cards showing wine information
- Search Functionality: Search through previously scanned wines
- Interactive Chat: Ask questions about any scanned wine
- Smart Responses: Get detailed answers about wine characteristics
- Food Pairing: Learn about food pairing suggestions
- Serving Tips: Get advice on serving temperature and methods
- Vintage Information: Learn about aging potential and vintage quality
- Material Design 3: Modern, beautiful interface
- Responsive Design: Works on all screen sizes
- Dark/Light Theme: Adaptive theming
- Smooth Animations: Fluid transitions and interactions
- Flutter SDK (3.8.1 or higher)
- Dart SDK
- Android Studio / VS Code
- iOS Simulator or Android Emulator
-
Clone the repository
git clone https://github.com/jyothish-ram/wine-app cd wine_app -
Install dependencies
flutter pub get
-
Generate code
flutter packages pub run build_runner build
-
Run the app
flutter run
- Open the app and tap the "Scan Wine" button
- Choose scanning method:
- Use camera to take a photo
- Import from gallery
- Position the bottle clearly in the frame
- Wait for processing - the app will identify the wine
- View results - see detailed wine information
- Scan a wine or select from recent wines
- Tap on the wine to open details
- Go to "Ask AI" tab
- Ask questions like:
- "What food pairs well with this wine?"
- "How long can I age this wine?"
- "What's the typical price range?"
- "Tell me about the region this wine comes from"
- Use the search bar on the home screen
- Type wine names, brands, or regions
- Browse results and tap to view details
- Provider Pattern: Centralized state management
- WineProvider: Manages wine data and scanning state
- Reactive UI: Automatic UI updates based on state changes
- WineService: Handles wine API calls and LLM interactions
- CameraService: Manages camera permissions and image capture
- Mock Data: Demo wines for testing (replace with real API)
- Wine Model: Structured wine data with JSON serialization
- Chat Messages: AI conversation management
- HomeScreen: Main interface with search and wine list
- CameraScreen: Camera interface for scanning
- WineDetailScreen: Detailed wine information with AI chat
To use real wine recognition APIs:
- Update WineService in
lib/services/wine_service.dart - Replace mock data with actual API endpoints
- Add API keys to your environment configuration
To use real LLM services:
- Update LLM API URL in
WineService - Add authentication for your LLM provider
- Customize prompts for better wine-specific responses
The app automatically requests camera permissions. For production:
- Update Android permissions in
android/app/src/main/AndroidManifest.xml - Update iOS permissions in
ios/Runner/Info.plist
flutter: Core Flutter frameworkprovider: State managementcamera: Camera functionalityimage_picker: Image selectionhttp: API communicationpermission_handler: Permission management
flutter_staggered_grid_view: Advanced layoutslottie: Animationscached_network_image: Image caching
json_serializable: JSON code generationbuild_runner: Code generationflutter_lints: Code quality
lib/
βββ main.dart # App entry point
βββ models/
β βββ wine.dart # Wine data model
βββ providers/
β βββ wine_provider.dart # State management
βββ services/
β βββ wine_service.dart # Wine API and LLM
β βββ camera_service.dart # Camera functionality
βββ screens/
β βββ home_screen.dart # Main screen
β βββ camera_screen.dart # Camera interface
β βββ wine_detail_screen.dart # Wine details
βββ widgets/
βββ wine_card.dart # Wine display card
βββ llm_chat_widget.dart # AI chat interface
- Barcode Scanning: Scan wine barcodes for instant identification
- Wine Database: Local storage of scanned wines
- Social Features: Share wine discoveries with friends
- Wine Recommendations: AI-powered wine suggestions
- Price Tracking: Monitor wine prices over time
- Cellar Management: Organize your wine collection
- Real-time Recognition: Live wine identification
- Offline Support: Work without internet connection
- Advanced Analytics: Wine consumption insights
- Multi-language Support: International wine databases
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Contact the development team
- Check the documentation
Note: This is a demo application with mock data. For production use, integrate with real wine recognition APIs and LLM services.
