A minimalist Flutter application with a GitHub-style contribution chart to build lasting habits π
Features β’ Screenshots β’ Installation β’ Usage β’ Download
- β Create & Edit Hobbies - Add custom hobbies with names, notes, colors, and priorities
- π¨ Custom Colors - Choose from a vibrant color palette to personalize each hobby
- β Priority Levels - Mark hobbies as Low, Medium, or High priority
- π Flexible Repeat Modes - Daily, specific weekdays, or custom schedules
- ποΈ Easy Management - Edit or delete hobbies anytime with intuitive UI
- β One-Tap Completion - Mark hobbies complete with satisfying animations
- π GitHub-Style Contribution Chart - Beautiful heatmap showing 12 weeks of activity
- π₯ Streak Tracking - Monitor current and longest streaks for each hobby
- π Analytics Dashboard - Comprehensive statistics and insights
- π Historical Data - View completion patterns over time
- β° Daily Notifications - Never miss a hobby with customizable reminder times
- π Timezone Support - Notifications adjust to your local timezone
- π Granular Control - Enable/disable reminders per hobby
- ποΈ Local-First Architecture - All data stored securely in SQLite
- π Privacy-First - No hobby data sent to servers
- π΄ Offline Support - Works perfectly without internet
- βοΈ Optional Cloud Sync - Google Sign-In for identity (no data sync yet)
- π¬ Motivational Quotes - Random inspirational messages on every visit
- π Completion Sounds - Satisfying audio feedback on task completion
- π Smooth Animations - Delightful UI transitions and celebrations
- π Beautiful Dark Theme - Easy on the eyes with purple accents
- π Fast & Responsive - Optimized performance on all devices
- π Analytics - Track app usage patterns (no personal data)
- π₯ Crashlytics - Automatic crash reporting for better stability
- β‘ Performance Monitoring - Optimize app speed and responsiveness
- ποΈ Remote Config - Feature flags and A/B testing
- π Authentication - Google Sign-In (optional)
- Flutter SDK
>=3.0.0(Install Flutter) - Dart SDK
>=3.0.0(included with Flutter) - Android Studio or Xcode (for mobile development)
- Git for cloning the repository
-
Clone the repository
git clone https://github.com/yourusername/hobbyist.git cd hobbyist -
Install dependencies
flutter pub get
-
Configure Firebase (Optional)
- For Google Sign-In and Firebase features, add:
android/app/google-services.json(Android)ios/Runner/GoogleService-Info.plist(iOS)
- See QUICKSTART.md for detailed Firebase setup
- For Google Sign-In and Firebase features, add:
-
Run the app
flutter run
-
Build for release
# Android APK flutter build apk --release # iOS flutter build ios --release # Or use the build script ./build-apk.sh
-
π First Launch - Enter your name to personalize the experience
-
β Add Your First Hobby - Tap the + button and fill in:
- Hobby name (e.g., "Reading", "Exercise")
- Optional notes
- Choose a color
- Set priority
- Select repeat mode
- Configure reminder time
-
β Track Daily - Tap any hobby card to mark it complete for today
-
π Monitor Progress - View the contribution chart and analytics
-
βοΈ Customize - Adjust settings, notifications, and preferences
- π Edit Completions - Long-press on chart to modify past entries
- π Smart Reminders - Set different reminder times for each hobby
- β Prioritize - Sort hobbies by priority in settings
- π Analytics Deep Dive - Explore detailed statistics per hobby
- βοΈ Google Sign-In - Optional authentication for future cloud features
- Min SDK: Android 6.0 (API 23)
- Target SDK: Latest
- Download APK: Check
builds/directory or Releases
- Min iOS: 11.0
- TestFlight: Coming soon
# All tests
flutter test
# Unit tests only
flutter test test/unit/
# Widget tests only
flutter test test/widget/
# With coverage
flutter test --coverage- β Unit Tests: Services, models, and business logic
- β Widget Tests: UI components and screens
- π Coverage Report: Available in
coverage/lcov.info
- Flutter - UI framework
- Dart - Programming language
- SQLite (via
sqflite) - Local database - Provider Pattern - State management
- π¨
flutter_colorpicker- Color selection - π
intl- Date formatting - π
flutter_local_notifications- Reminder system - π
timezone- Timezone support - π
audioplayers- Sound effects - π¦
shared_preferences- Settings storage - π₯
firebase_core,firebase_auth,firebase_analytics- Firebase services - π
google_sign_in- Google authentication
hobbyist/
βββ lib/
β βββ main.dart # App entry point
β βββ models/
β β βββ hobby.dart # Hobby model with computed properties
β βββ services/ # Business logic (singleton pattern)
β β βββ hobby_service.dart # CRUD operations
β β βββ auth_service.dart # Google Sign-In
β β βββ notification_service.dart # Local notifications
β β βββ quote_service.dart # Motivational quotes
β β βββ sound_service.dart # Audio feedback
β β βββ analytics_service.dart # Firebase Analytics
β β βββ crashlytics_service.dart # Crash reporting
β β βββ remote_config_service.dart # Feature flags
β βββ database/
β β βββ database_helper.dart # SQLite schema & migrations
β βββ screens/ # Full-page views
β β βββ splash_screen.dart
β β βββ landing_screen.dart
β β βββ name_input_screen.dart
β β βββ daily_tasks_screen.dart # Main dashboard
β β βββ add_hobby_screen.dart
β β βββ analytics_screen.dart
β β βββ settings_screen.dart
β βββ widgets/ # Reusable components
β βββ contribution_chart.dart # GitHub-style heatmap
β βββ animated_checkbox.dart
β βββ tada_animation.dart
βββ test/ # Test suites
β βββ unit/ # Service & model tests
β βββ widget/ # UI component tests
βββ assets/
β βββ sounds/ # Audio files
β βββ images/ # Icons & logos
βββ design/
β βββ app_screenshots/ # App screenshots
βββ docs/ # Documentation
β βββ DATABASE_SCHEMA.md
β βββ FIREBASE_FEATURES_STATUS.md
βββ pubspec.yaml # Dependencies
- π Quickstart Guide - Google Sign-In setup
- π Google Sign-In Setup - OAuth configuration
- ποΈ Database Schema - SQLite structure
- π₯ Firebase Features - Integration status
- π Privacy Policy - Data handling
- π Release Notes - Version history
This is a personal learning project, but suggestions and feedback are welcome! Feel free to:
- π Report bugs via issues
- π‘ Suggest new features
- π Improve documentation
- β Star the repo if you find it useful
This project is created for personal use and learning purposes. Not licensed for commercial use.
- Inspired by GitHub's contribution graph
- Built with β€οΈ using Flutter
- Icons and design inspired by Material Design