A modern, feature-rich task management application built with Flutter and Riverpod. Designed specifically for gig workers to efficiently track and manage their tasks.
- ✅ Email/password registration and login
- ✅ Local authentication with state management
- ✅ Secure user sessions with automatic auth state management
- ✅ Clean error handling with user-friendly messages
- ✅ Create, edit, delete, and view tasks
- ✅ Task properties:
- Title
- Description
- Due date
- Priority (Low, Medium, High)
- Status (Pending, Completed)
- ✅ Local task storage with reactive updates
- ✅ Task completion tracking
- ✅ Swipe-to-delete functionality
- ✅ Filter tasks by priority level
- ✅ Filter tasks by completion status
- ✅ Automatic task grouping (Today, Tomorrow, This Week)
- ✅ Tasks sorted by due date (earliest first)
- ✅ Modern, clean Material Design
- ✅ Beautiful purple-themed UI
- ✅ Responsive layouts for iOS and Android
- ✅ Intuitive navigation and interactions
- ✅ Smooth animations and transitions
- Framework: Flutter 3.9.2
- State Management: Riverpod 2.6.1
- Storage: Local in-memory storage
- Architecture: Clean Architecture
- Date Formatting: intl 0.19.0
lib/
├── core/
│ ├── constants/
│ │ ├── app_colors.dart # App color constants
│ │ └── app_strings.dart # All UI strings
│ └── providers/
│ ├── auth_providers.dart # Authentication providers
│ └── task_providers.dart # Task management providers
├── data/
│ ├── data_sources/
│ │ └── task_remote_data_source.dart # Firestore data source
│ ├── repositories/
│ │ └── task_repository_impl.dart # Repository implementation
│ └── services/
│ └── auth_service.dart # Authentication service
├── domain/
│ └── repositories/
│ └── task_repository.dart # Repository interface
├── models/
│ ├── app_user.dart # User model
│ └── task.dart # Task model
├── presentation/
│ ├── screens/
│ │ ├── login_screen.dart # Login screen
│ │ ├── signup_screen.dart # Sign up screen
│ │ ├── splash_screen.dart # Onboarding screen
│ │ └── tasks_screen.dart # Main tasks screen
│ └── widgets/
│ ├── add_task_dialog.dart # Add/edit task dialog
│ ├── custom_text_field.dart # Reusable text field
│ ├── filter_bottom_sheet.dart # Filter UI
│ ├── onboarding_painter.dart # Custom painter for logo
│ ├── social_button.dart # Social login buttons
│ └── task_item.dart # Task list item widget
└── main.dart # App entry point
├── firebase_options.dart # Firebase configuration
└── SETUP.md # Detailed setup guide
The app follows Clean Architecture principles with clear separation of concerns:
- Presentation Layer - UI screens and widgets
- Domain Layer - Business logic and repository interfaces
- Data Layer - Data sources, repositories, and external services
- authStateProvider: Streams authentication state changes
- tasksProvider: Provides a stream of all user tasks
- filteredTasksProvider: Filters tasks based on user-selected criteria
- taskRepositoryProvider: Provides task repository instance
- Flutter SDK (3.9.2 or higher)
- Dart SDK
-
Clone the repository
git clone <repository-url> cd task
-
Install dependencies
flutter pub get
-
Run the app
flutter run
The app currently uses local in-memory storage for development and testing. Data persists during the app session but is cleared when you close the app.
The app currently uses local in-memory storage which means:
- Data persists during the app session
- Data is cleared when you close the app
- Perfect for development and testing
- Easy to migrate to a persistent storage solution later
- Launch the app to see the onboarding screen
- Sign up with email and password, or
- Log in with existing credentials
- Create Task: Tap the floating action button (+)
- Fill Details: Add title, description, select due date and priority
- Save: Task is saved to Firestore and appears in the list
- Complete Task: Tap the checkbox next to any task
- Edit Task: Tap on a task to modify its details
- Delete Task: Swipe left on a task to reveal delete button
- Filter Tasks: Tap the filter icon to filter by priority/status
Tasks are automatically grouped by due date:
- Today: Tasks due today
- Tomorrow: Tasks due tomorrow
- This Week: Tasks due within the week
flutter_riverpod: State managementintl: Date formattinguuid: Unique ID generation
The app includes:
- Onboarding screen with branded logo
- Login and Sign Up screens with social login options
- Task list with grouping by date
- Add/Edit task dialog
- Filter bottom sheet
Potential improvements:
- Offline support with local caching
- Task reminders and notifications
- Task categories/tags
- Task statistics and analytics
- Dark mode support
- Export tasks functionality
- Integration with calendar apps
This project is built following Flutter best practices and clean architecture principles. Contributions are welcome!
This project is licensed under the MIT License.
For setup issues, refer to SETUP.md for detailed instructions.
For Firebase configuration, check Firebase Documentation.