Skip to content

A minimalist Flutter application with a GitHub-style contribution chart to build lasting habits πŸš€

Notifications You must be signed in to change notification settings

thamaraiselvam/hobbyist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

155 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 Hobbyist

Track your hobbies with discipline and motivation

Flutter Dart Firebase

A minimalist Flutter application with a GitHub-style contribution chart to build lasting habits πŸš€

Features β€’ Screenshots β€’ Installation β€’ Usage β€’ Download

Landing Page Splash Screen Daily Tasks Add Hobby

✨ Features

🎨 Hobby Management

  • βž• 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

πŸ“Š Tracking & Visualization

  • βœ… 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

πŸ”” Smart Reminders

  • ⏰ 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

πŸ’Ύ Data & Privacy

  • πŸ—„οΈ 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)

πŸŽ‰ User Experience

  • πŸ’¬ 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

πŸ”₯ Firebase Integration

  • πŸ“Š 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)

πŸš€ Installation

Prerequisites

  • 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

πŸ“¦ Setup Instructions

  1. Clone the repository

    git clone https://github.com/yourusername/hobbyist.git
    cd hobbyist
  2. Install dependencies

    flutter pub get
  3. 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
  4. Run the app

    flutter run
  5. Build for release

    # Android APK
    flutter build apk --release
    
    # iOS
    flutter build ios --release
    
    # Or use the build script
    ./build-apk.sh

πŸ“– Usage

Getting Started

  1. 🏁 First Launch - Enter your name to personalize the experience

  2. βž• 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
  3. βœ… Track Daily - Tap any hobby card to mark it complete for today

  4. πŸ“Š Monitor Progress - View the contribution chart and analytics

  5. βš™οΈ Customize - Adjust settings, notifications, and preferences

Advanced Features

  • πŸ“… 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

πŸ“₯ Download

Android

  • Min SDK: Android 6.0 (API 23)
  • Target SDK: Latest
  • Download APK: Check builds/ directory or Releases

iOS

  • Min iOS: 11.0
  • TestFlight: Coming soon

πŸ§ͺ Testing & Coverage

Run Tests

# All tests
flutter test

# Unit tests only
flutter test test/unit/

# Widget tests only
flutter test test/widget/

# With coverage
flutter test --coverage

Coverage Report

  • βœ… Unit Tests: Services, models, and business logic
  • βœ… Widget Tests: UI components and screens
  • πŸ“Š Coverage Report: Available in coverage/lcov.info

πŸ› οΈ Tech Stack

Core

  • Flutter - UI framework
  • Dart - Programming language
  • SQLite (via sqflite) - Local database
  • Provider Pattern - State management

Key Dependencies

  • 🎨 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

πŸ“‚ Project Structure

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

πŸ“š Documentation


🀝 Contributing

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

πŸ“„ License

This project is created for personal use and learning purposes. Not licensed for commercial use.


πŸ™ Acknowledgments

  • Inspired by GitHub's contribution graph
  • Built with ❀️ using Flutter
  • Icons and design inspired by Material Design

Made with πŸ’œ by a hobbyist, for hobbyists

Start building better habits today! 🎯

About

A minimalist Flutter application with a GitHub-style contribution chart to build lasting habits πŸš€

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors