A beginner-friendly Flutter application that aggregates Google Maps reviews and uses AI to generate concise conversational summaries.
- Search Places: Find restaurants, hotels, and more using Google Places API.
- AI Summary: Get an instant summary of reviews including:
- 📊 Overall Sentiment (Positive/Negative/Mixed)
- ✅ Top Pros & ❌ Top Cons
- 🗣️ Common Themes
- 📝 Final Verdict
- Modern UI: Clean Material 3 design with responsive layouts.
To run this app, you need to set up API keys for Google Maps and Groq AI.
- Go to the Google Cloud Console.
- Create a new project.
- Enable the "Places API (New)" or "Places API".
- Go to Credentials and create an API Key.
- Copy the key.
- Go to the Groq Console.
- Sign up or log in.
- Create a new API Key.
- Copy the key.
-
Rename the example file:
- Rename
lib/api_keys.dart.exampletolib/api_keys.dart - Note: Add this file to .gitignore to keep your keys safe if you push to GitHub.
- Rename
-
Add your keys:
- Open the newly renamed
lib/api_keys.dart. - Replace the placeholder strings with your actual API keys.
- Open the newly renamed
class ApiKeys {
static const String googlePlacesApiKey = 'AIzaSy...'; // Your key here
static const String groqApiKey = 'gsk_...'; // Your key here
}- Open a terminal in the project folder.
- Install dependencies:
flutter pub get
- Run the app:
flutter run
lib/main.dart: Entry point of the app.lib/screens/: Contains the UI screens (HomeScreen,ReviewSummaryScreen).lib/services/: Handles API calls (GooglePlacesService,AIService).lib/models/: Data classes (Location,Review,Summary).lib/api_keys.dart: Configuration file for API keys.
This code is designed to be easy to read!
- async/await: Used for network calls so the app doesn't freeze.
- setState: Used to update the UI when data changes (like showing a loading spinner).
- Separation of Concerns: Logic is separated from UI (Services vs Screens).