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.
- 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
- β¨ Features
- πΈ Screenshots
- π οΈ Technologies Used
- π₯ Firebase Integration
- β‘ Installation & Setup
- π± Usage Guide
- ποΈ Project Structure
- π€ Contributing
- π License
- π Contact
- 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
- 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
- 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
- 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
- Firebase Firestore - Cloud NoSQL database
- Firebase Authentication - User authentication service
- SQFlite
^2.4.2- Local SQLite database - Shared Preferences
^2.3.4- Local key-value storage
- GetX
^4.7.2- State management and navigation - Google Fonts - Custom typography
- Flutter SVG
^2.2.1- SVG rendering support - Icons Flutter
^0.0.5- Extended icon library - Percent Indicator
^4.2.5- Progress indicators - Step Progress Indicator
^1.0.2- Step-based progress tracking - Liquid Progress Indicator
^0.5.0- Animated progress indicators - Flutter Staggered Animations
^1.1.1- Animation utilities - Flutter Slidable
^4.0.1- Slidable list items
- Date Picker Timeline
^1.2.7- Timeline date picker - Intl
^0.20.2- Internationalization and localization
- Path Provider
^2.1.5- File system path access - Image Picker
^1.2.0- Camera and gallery access - Share Plus
^12.0.0- Native sharing functionality - Permission Handler
^12.0.1- Runtime permissions - Speech to Text
^7.3.0- Voice recognition - Flutter TTS
^4.2.3- Text-to-speech functionality - Fluttertoast
^9.0.0- Toast notifications
- Flutter Local Notifications
^19.4.2- Local push notifications - Timezone
^0.10.1- Timezone handling for notifications
TaskMate leverages Firebase as its cloud backend solution, providing robust and scalable data management.
{
"userId": "string",
"username": "string",
"email": "string",
"profilePicture": "string",
"profession": "string",
"createdAt": "timestamp",
"updatedAt": "timestamp"
}{
"noteId": "string",
"userId": "string",
"title": "string",
"content": "string",
"isFavorite": "boolean",
"category": "string",
"createdAt": "timestamp",
"updatedAt": "timestamp"
}{
"taskId": "string",
"userId": "string",
"title": "string",
"description": "string",
"dueDate": "timestamp",
"priority": "string",
"status": "string",
"category": "string",
"isCompleted": "boolean",
"createdAt": "timestamp",
"updatedAt": "timestamp"
}- 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
- Live Data Sync: Instant updates across all user devices
- Conflict Resolution: Automatic handling of concurrent edits
- Optimistic Updates: Immediate UI feedback with server sync
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
-
Clone the Repository
git clone https://github.com/alamin-alshaharia/task-mate.git cd task-mate -
Install Dependencies
flutter pub get
-
Firebase Setup (Optional - for cloud features)
# Install Firebase CLI npm install -g firebase-tools # Login to Firebase firebase login # Initialize Firebase project firebase init
-
Run the Application
# Debug mode flutter run # Release mode flutter run --release
flutter build apk --release --split-per-abiflutter build ios --releaseflutter build web --release- Launch the App: Open TaskMate on your device
- Create Account: Sign up with your email or log in if you have an account
- Setup Profile: Add your profile picture, name, and profession
- Start Organizing: Begin creating tasks and notes
- 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
- 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
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
- 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
We welcome contributions to TaskMate! Here's how you can help:
- Check existing issues first
- Create detailed bug reports with steps to reproduce
- Include screenshots and device information
- Use the bug report template
- Discuss new features in Issues first
- Provide clear use cases and benefits
- Consider backward compatibility
- Follow the feature request template
- 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
- Follow Flutter style guide
- Write comprehensive tests for new features
- Update documentation as needed
- Ensure backward compatibility
- Use conventional commit messages
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..
- Name: Alamin Al Shaharia
- GitHub: @alamin-alshaharia
- Repository: task-mate
- Issues: GitHub Issues
- Discussions: GitHub Discussions
For questions, suggestions, or collaborations, please:
- Open an issue on GitHub
- Start a discussion in the repository
- Create a pull request for contributions
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
- Material Design guidelines
- iOS Human Interface Guidelines
- Modern productivity app UX patterns
- Android Studio / VS Code for development
- Firebase Console for backend management
- GitHub for version control and collaboration
















