Skip to content

alamin-alshaharia/task-mate

Repository files navigation

πŸ“± TaskMate - Flutter Task & Notes Manager

Flutter Dart Firebase SQLite

πŸ“– Description

TaskMate is a comprehensive Flutter-based productivity application designed to streamline task and note management. With an intuitive interface and powerful features, TaskMate helps users organize their daily activities, track deadlines, and maintain detailed notes. The app offers both online and offline functionality through Firebase integration and local SQLite storage.

🎯 Key Highlights

  • Cross-Platform: Runs seamlessly on Android, iOS, and Web
  • Offline-First: Works without internet connectivity using local database
  • Real-time Sync: Firebase integration for cloud storage and synchronization
  • Rich Features: Advanced task management, note-taking, and productivity tools
  • Modern UI: Clean, responsive design with customizable themes

πŸ“‹ Table of Contents

✨ Features

πŸ” Authentication & Security

  • Firebase Authentication: Secure sign up and login with email validation
  • Regex Validation: Email and password constraints for enhanced security
  • User Profiles: Customizable profiles with pictures and personal information

πŸ“ Advanced Note Management

  • CRUD Operations: Create, read, update, and delete notes seamlessly
  • Smart Search: Quick search functionality across all notes
  • Favorites System: Mark important notes as favorites for easy access
  • Share Functionality: Share notes with others via various platforms
  • Rich Text Support: Enhanced text formatting capabilities
  • Voice-to-Text: Speech recognition for hands-free note creation

βœ… Comprehensive Task Management

  • Task CRUD: Full task lifecycle management
  • Calendar Integration: Visual calendar view for deadline tracking
  • Timeline View: Chronological task organization
  • Task Categories: Organize tasks by custom categories
  • Progress Tracking: Monitor task completion with visual indicators
  • Task Reports: Generate detailed productivity reports
  • Priority Levels: Set and manage task priorities
  • Notifications: Smart reminders for upcoming deadlines

🎨 User Experience

  • Theme Customization: Light and dark theme options
  • Responsive Design: Optimized for various screen sizes
  • Smooth Animations: Fluid transitions and interactions
  • Offline Mode: Full functionality without internet connection
  • Data Backup: Automatic cloud backup to Firebase
  • Image Support: Add images to notes and tasks

πŸ“Έ Screenshots

🏠 Home & Dashboard

Home Page Home Page All Tasks Calendar View

βœ… Task Management

Create Task Task View Task Report

πŸ“ Notes Management

My Notes Add Note Note Details

πŸ” Search & Categories

Search Tasks Search Notes Add Category

βš™οΈ Settings & Profile

Settings Edit Profile Navigation Drawer

✏️ Editing Features

Edit Note

πŸ› οΈ Technologies Used

🎯 Core Framework

  • Flutter >=3.3.0 - Cross-platform UI toolkit
  • Dart - Programming language optimized for UI

πŸ—„οΈ Data & Storage

🎨 UI & UX Libraries

πŸ“… Date & Time

πŸ”§ Functionality Libraries

πŸ”” Notifications

πŸ”₯ Firebase Integration

TaskMate leverages Firebase as its cloud backend solution, providing robust and scalable data management.

πŸ“Š Data Architecture

πŸ‘₯ Users Collection

{
  "userId": "string",
  "username": "string",
  "email": "string",
  "profilePicture": "string",
  "profession": "string",
  "createdAt": "timestamp",
  "updatedAt": "timestamp"
}

πŸ“ Notes Collection

{
  "noteId": "string",
  "userId": "string",
  "title": "string",
  "content": "string",
  "isFavorite": "boolean",
  "category": "string",
  "createdAt": "timestamp",
  "updatedAt": "timestamp"
}

βœ… Tasks Collection

{
  "taskId": "string",
  "userId": "string",
  "title": "string",
  "description": "string",
  "dueDate": "timestamp",
  "priority": "string",
  "status": "string",
  "category": "string",
  "isCompleted": "boolean",
  "createdAt": "timestamp",
  "updatedAt": "timestamp"
}

πŸ”’ Security Features

  • Authentication Rules: Email/password authentication with validation
  • Firestore Security Rules: User-specific data access control
  • Data Encryption: All data transmitted securely via HTTPS
  • Offline Persistence: Local caching for offline access

⚑ Real-time Features

  • Live Data Sync: Instant updates across all user devices
  • Conflict Resolution: Automatic handling of concurrent edits
  • Optimistic Updates: Immediate UI feedback with server sync

⚑ Installation & Setup

πŸ“‹ Prerequisites

Before you begin, ensure you have the following installed:

  • Flutter SDK >=3.3.0 - Installation Guide
  • Dart SDK (bundled with Flutter)
  • Android Studio or VS Code with Flutter extensions
  • Git for version control

πŸš€ Quick Start

  1. Clone the Repository

    git clone https://github.com/alamin-alshaharia/task-mate.git
    cd task-mate
  2. Install Dependencies

    flutter pub get
  3. Firebase Setup (Optional - for cloud features)

    # Install Firebase CLI
    npm install -g firebase-tools
    
    # Login to Firebase
    firebase login
    
    # Initialize Firebase project
    firebase init
  4. Run the Application

    # Debug mode
    flutter run
    
    # Release mode
    flutter run --release

πŸ”§ Build for Production

Android APK

flutter build apk --release --split-per-abi

iOS App

flutter build ios --release

Web Application

flutter build web --release

πŸ“± Usage Guide

🏠 Getting Started

  1. Launch the App: Open TaskMate on your device
  2. Create Account: Sign up with your email or log in if you have an account
  3. Setup Profile: Add your profile picture, name, and profession
  4. Start Organizing: Begin creating tasks and notes

βœ… Task Management

  • Create Tasks: Tap the "+" button to add new tasks
  • Set Deadlines: Choose dates and times for your tasks
  • Categorize: Organize tasks by categories (Work, Personal, etc.)
  • Track Progress: Monitor completion with visual indicators
  • Generate Reports: View productivity statistics and trends

πŸ“ Note Taking

  • Quick Notes: Jot down ideas instantly
  • Voice Notes: Use speech-to-text for hands-free note creation
  • Rich Formatting: Add images and format text
  • Search & Filter: Find notes quickly with smart search
  • Share Notes: Export and share with others

πŸ—οΈ Project Structure

lib/
β”œβ”€β”€ controller/          # GetX controllers for state management
β”œβ”€β”€ db/                  # Local database helpers and models
β”œβ”€β”€ mixins/              # Reusable code mixins
β”œβ”€β”€ model/               # Data models
β”œβ”€β”€ screens/             # UI screens
β”‚   β”œβ”€β”€ note_screens/    # Note-related screens
β”‚   β”œβ”€β”€ task_screen/     # Task-related screens
β”‚   └── settings/        # Settings and profile screens
β”œβ”€β”€ service/             # Business logic services
β”œβ”€β”€ theme/               # App theming and styling
β”œβ”€β”€ utils/               # Utility functions and helpers
β”œβ”€β”€ widgets/             # Reusable UI components
β”‚   β”œβ”€β”€ common/          # Common widgets
β”‚   β”œβ”€β”€ modular/         # Modular components
β”‚   └── task_widget/     # Task-specific widgets
└── main.dart            # App entry point

πŸ—‚οΈ Key Components

  • Controllers: Handle business logic and state management using GetX
  • Models: Define data structures for Tasks, Notes, and User profiles
  • Services: Manage notifications, database operations, and external APIs
  • Widgets: Custom UI components for consistent design
  • Database: Local SQLite storage for offline functionality

🀝 Contributing

We welcome contributions to TaskMate! Here's how you can help:

πŸ› Bug Reports

  1. Check existing issues first
  2. Create detailed bug reports with steps to reproduce
  3. Include screenshots and device information
  4. Use the bug report template

✨ Feature Requests

  1. Discuss new features in Issues first
  2. Provide clear use cases and benefits
  3. Consider backward compatibility
  4. Follow the feature request template

πŸ’» Code Contributions

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

πŸ“ Development Guidelines

  • Follow Flutter style guide
  • Write comprehensive tests for new features
  • Update documentation as needed
  • Ensure backward compatibility
  • Use conventional commit messages

πŸ“„ License

Copyright (c) 2024 Md. Alamin Al Shaharia. All rights reserved.

This code is provided for educational and reference purposes only. While you may fork this repository on GitHub for personal study, you may not use, copy, modify, or distribute the code without permission.

This project is not licensed under any open source license..

πŸ“ž Contact

πŸ‘¨β€πŸ’» Developer Information

πŸ› Support & Issues

πŸ“§ Contact Methods

For questions, suggestions, or collaborations, please:

  1. Open an issue on GitHub
  2. Start a discussion in the repository
  3. Create a pull request for contributions

πŸ™ Acknowledgements

πŸ“š Libraries & Frameworks

Special thanks to the open-source community and the maintainers of:

  • Flutter Team for the amazing framework
  • Firebase for backend services
  • GetX for state management
  • All the package maintainers listed in our dependencies

🎨 Design Inspiration

  • Material Design guidelines
  • iOS Human Interface Guidelines
  • Modern productivity app UX patterns

πŸ”§ Development Tools

  • Android Studio / VS Code for development
  • Firebase Console for backend management
  • GitHub for version control and collaboration

⭐ If you found this project helpful, please give it a star

GitHub stars GitHub forks

Made with ❀️ using Flutter

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published