π± Plant Watering Reminder
A feature-rich Flutter application for managing plant care with AI-powered recommendations, offline-first architecture, and comprehensive analytics.
β¨ Features
π€ AI-Powered Plant Care
- Gemini AI Integration - Get personalized plant care recommendations
- Health Scoring - Automatic plant health assessment based on care history
- Optimal Watering Intervals - AI-calculated watering schedules
- Seasonal Advice - Context-aware care tips for current season
π± Smart Notifications
- Intelligent Scheduling - Notifications at preferred times
- Quiet Hours - Customizable quiet hours (default 10 PM - 8 AM)
- Weekend Control - Toggle notifications on weekends
- Snooze Functionality - Flexible snooze durations
π Analytics & Insights
- Care History Dashboard - Visual charts of care patterns
- Growth Tracking - 90-day health score trends
- Achievement System - Gamified care milestones
- Interactive Calendar - View care events by date
π Offline-First Architecture
- Complete Offline Support - Full functionality without internet
- Automatic Sync - Seamless sync when connection restored
- Conflict Resolution - Smart handling of data conflicts
- Local SQLite Database - Fast, reliable local storage
πΎ Data Management
- Backup & Restore - Complete data backup with selective options
- Export/Import - Multi-format support (JSON, CSV)
- Data Filtering - Export specific plants or date ranges
- File Sharing - Share backups via email, cloud storage, etc.
π Localization
- English - Full English support
- Indonesian - Complete Indonesian localization
- Easy Extension - Simple process to add more languages
π¨ User Experience
- Beautiful Animations - Smooth transitions and visual feedback
- Plant Health Indicators - Visual status of plant health
- Responsive Design - Works on phones and tablets
- Dark Mode Support - System theme integration
π Getting Started
Prerequisites
- Flutter 3.7.2 or higher
- Dart 3.7.2 or higher
- Android SDK 21+ or iOS 12+
Installation
Clone the repository
git clone https://github.com/azcharia/plant-watering-reminder.git cd plant-watering-reminderInstall dependencies
flutter pub getSet up environment variables Create a
.envfile in the project root:SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_supabase_anon_key GEMINI_API_KEY=your_gemini_api_keyRun the app
flutter run
π§ Configuration
Supabase Setup
- Create a Supabase project at supabase.com
- Set up authentication (Email/Password)
- Create the required tables (see
supabase/migrations/) - Add your Supabase URL and Anon Key to
.env
Gemini AI Setup
- Get your API key from Google AI Studio
- Add it to your
.envfile asGEMINI_API_KEY
Deep Link Configuration (Password Reset)
Android
Add to android/app/src/main/AndroidManifest.xml:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="myapp"
android:host="reset-password" />
</intent-filter>
iOS
Add to ios/Runner/Info.plist:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string>
</array>
<key>CFBundleURLName</key>
<string>reset-password</string>
</dict>
</array>
π Project Structure
lib/
βββ main.dart # App entry point
βββ models/ # Data models
β βββ plant.dart
β βββ care_event.dart
β βββ profile.dart
βββ services/ # Business logic (20+ services)
β βββ plant_service.dart
β βββ offline_database_service.dart
β βββ sync_service.dart
β βββ ai_plant_care_service.dart
β βββ smart_notification_service.dart
β βββ backup_service.dart
β βββ export_import_service.dart
β βββ ... (more services)
βββ screens/ # UI screens (17 screens)
β βββ home_screen.dart
β βββ plant_detail_screen.dart
β βββ analytics_dashboard_screen.dart
β βββ ... (more screens)
βββ widgets/ # Reusable components
β βββ plant_card.dart
β βββ plant_health_indicator.dart
β βββ ... (more widgets)
βββ utils/ # Utility functions
βββ l10n/ # Localization files
ποΈ Architecture
Offline-First Design
- Local SQLite Database - All data stored locally
- Sync Queue - Tracks changes for sync
- Automatic Sync - Syncs when online
- Conflict Resolution - Server data takes precedence
Service Layer
- Singleton Pattern - Single instance per service
- Dependency Isolation - Services are independent
- Error Handling - Comprehensive error management
- Logging - Structured logging throughout
State Management
- ValueNotifier - Simple state management
- StreamController - For connectivity monitoring
- Local Storage - SharedPreferences for preferences
π Security
- API Keys - Never commit
.envfile - Token Management - Secure token handling
- Data Encryption - SQLite encryption ready
- No Sensitive Logging - Tokens never logged
π¦ Dependencies
Core
flutter- UI frameworksupabase_flutter- Backend servicesgoogle_generative_ai- AI integration
Local Storage
sqflite- SQLite databaseshared_preferences- Key-value storagepath_provider- File system access
Notifications
flutter_local_notifications- Local notificationstimezone- Timezone support
UI/UX
lottie- Animationstable_calendar- Calendar widgetauto_size_text- Responsive textgoogle_fonts- Custom fonts
Utilities
flutter_dotenv- Environment variablesconnectivity_plus- Network monitoringimage_picker- Image selectionfile_picker- File selectionshare_plus- File sharingpackage_info_plus- App version info
π§ͺ Testing
Run tests with:
flutter test
π± Supported Platforms
- β Android 5.0+ (API 21+)
- β iOS 12.0+
- β Web (experimental)
- β Windows (experimental)
- β macOS (experimental)
- β Linux (experimental)
π Known Issues
None currently. Please report issues on GitHub Issues.
π€ Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a 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
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π¨βπ» Author
Azcharia - GitHub Profile
π Acknowledgments
- Supabase - Backend services
- Google Generative AI - AI integration
- Flutter Community - Amazing framework
- All contributors and users
π Support
For support, email naufal.putra50@gmail.com or open an issue on GitHub.
πΊοΈ Roadmap
- [ ] Plant identification using AI
- [ ] Weather-based watering adjustments
- [ ] Community plant sharing
- [ ] Smart home integration
- [ ] Advanced analytics
- [ ] Multi-language support expansion
Made with β€οΈ for plant lovers everywhere πΏ
Built With
- c
- c++
- cmake
- dart
- html
- kotlin
- objective-c
- plpgsql
- swift
Log in or sign up for Devpost to join the conversation.