A comprehensive travel planning application built with Flutter and Riverpod, designed to help users plan, organize, and manage their trips efficiently.
-
AI-Powered Itinerary Generation
- Smart travel suggestions using Google Gemini API
- Personalized activity recommendations
- Weather-aware planning
-
Weather Integration
- Real-time weather data and forecasts
- Multi-location weather tracking
- Weather-aware planning suggestions
-
Maps & Location
- Google Maps integration
- Interactive map views
- Location picker
-
Trip Management
- Create, edit, and manage multiple trips
- Multi-destination support
- Budget tracking
-
Modern Architecture
- Flutter Riverpod for state management
- Feature-first directory structure
- Clean separation of concerns
-
UI/UX
- Material Design 3
- Dark/Light theme support
- Responsive design
- Smooth animations
-
Data Management
- Offline support with Hive
- Secure data storage
- Automatic synchronization
- Flutter SDK 3.19.0 or higher
- Dart SDK 3.6.2 or higher
- Git
- Clone the repository:
git clone https://github.com/yourusername/travel_planner.git
cd travel_planner- Install dependencies:
flutter pub get- Create environment file:
# Create .env file with your API keys
GEMINI_API_KEY=your_gemini_api_key
GOOGLE_MAPS_API_KEY=your_google_maps_key
WEATHER_API_KEY=your_weather_api_key
USE_MOCK_DATA=true # Set to false for real API calls- Run the app:
# Web browser
flutter run -d chrome
# Android
flutter run -d android
# iOS
flutter run -d ioslib/
├── config/ # Configuration files
│ └── api_config.dart # API configuration
├── models/ # Data models
├── services/ # Business logic
│ ├── ai_suggestions_service.dart
│ ├── weather_service.dart
│ ├── maps_service.dart
│ └── [other services]
├── providers/ # State management (Riverpod)
├── ui/ # User interface
│ ├── screens/ # App screens
│ └── widgets/ # Reusable components
├── theme/ # App theming
└── main.dart # Entry point
Create a .env file in the project root:
# Google Gemini API for AI suggestions
GEMINI_API_KEY=your_gemini_api_key
# Google Maps API for location services
GOOGLE_MAPS_API_KEY=your_google_maps_api_key
# Weather API for weather data
WEATHER_API_KEY=your_weather_api_key
# Use mock data for development
USE_MOCK_DATA=trueGet API Keys:
- Flutter Riverpod - Modern, type-safe state management
- Provider pattern - Dependency injection
- StateNotifier - Complex state management
- AISuggestionsService - AI-powered trip suggestions
- WeatherService - Weather data and forecasts
- MapsService - Google Maps integration
- TripManagementService - Trip CRUD operations
- Hive - Local NoSQL database for offline storage
- SharedPreferences - Simple key-value storage
- SecureStorage - Encrypted API key storage
# Run all tests
flutter test
# Run tests with coverage
flutter test --coverage
# Run specific test file
flutter test test/services/weather_service_test.dartflutter build web --releaseflutter build apk --release
# or
flutter build appbundle --releaseflutter build ios --release- Unit and widget tests
- Multi-language support (i18n)
- Offline maps
- Social sharing
- AR navigation
- Travel cost estimation
- Local events integration
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
- Flutter - UI framework
- Riverpod - State management
- Google Gemini API - AI capabilities
- Google Maps - Mapping services