A modern, feature-rich Flutter task management application built with GetX state management, Supabase backend, and Hive for offline caching. This project demonstrates clean architecture, responsive design, and real-time collaboration features.
Mini TaskHub is a comprehensive task tracking application that goes beyond basic CRUD operations. It includes:
- β Authentication - Email/Password & Google Sign-In via Supabase
- β Task Management - Create, Read, Update, Delete tasks with status tracking
- β Real-time Chat - Group messaging and direct messages using Supabase Realtime
- β Offline Support - Hive-based local caching for offline task access
- β Responsive UI - Adaptive layouts for mobile, tablet, and desktop
- β Theme Support - Light/Dark mode toggle with persistent preferences
- β Notifications - Real-time task and message notifications
- β Calendar View - Schedule and visualize tasks by date
- β Subtasks - Break down tasks into manageable subtasks
- β
Animations - Smooth transitions and micro-interactions using
flutter_animate
lib/
βββ main.dart # App entry point with theme configuration
βββ app/
β βββ core/ # Core utilities and constants
β βββ data/
β β βββ models/ # Data models (Task, Notification, Message, etc.)
β β β βββ task_model.dart
β β β βββ subtask_model.dart
β β β βββ notification_model.dart
β β β βββ message_model.dart
β β β βββ direct_message_model.dart
β β βββ services/ # Data services
β βββ modules/ # Feature modules (GetX pattern)
β β βββ splash/ # Splash screen with animations
β β βββ signin/ # Login screen
β β βββ signup/ # Registration screen
β β βββ home/ # Main navigation container
β β βββ dashboard/ # Task dashboard
β β βββ new_task/ # Task creation
β β βββ task_details/ # Task details & editing
β β βββ task_list/ # Task list view
β β βββ schedule/ # Calendar view
β β βββ chat/ # Group chat
β β βββ direct_chat/ # Direct messaging
β β βββ messages/ # Message list
β β βββ notifications/ # Notifications center
β β βββ profile/ # User profile & settings
β βββ routes/
β β βββ app_pages.dart # Route definitions
β β βββ app_routes.dart # Route constants
β βββ services/
β βββ supabase_service.dart # Supabase client & auth
β βββ storage_service.dart # Hive local storage
β βββ realtime_service.dart # Realtime subscriptions
βββ supabase/
β βββ migrations/ # Database schema migrations
β βββ 20260205105930_initial_schema.sql
β βββ 20260205_chat_tables.sql
β βββ add_direct_messages.sql
β βββ add_messages_notifications.sql
βββ test/
βββ models/ # Model tests
- Email/Password Authentication using Supabase Auth
- Google Sign-In integration with proper OAuth flow
- Session Management with automatic token refresh
- Session Validation - Handles expired sessions gracefully
- Auto-navigation based on auth state
Implementation: lib/app/services/supabase_service.dart
- Create Tasks with title, description, due date, and status
- Update Tasks - Edit task details and track progress
- Delete Tasks - Remove tasks with confirmation
- Status Tracking - Pending, In Progress, Completed
- Progress Tracking - Visual progress indicators (0-100%)
- Subtasks - Break tasks into smaller actionable items
- Task Members - Assign tasks to team members
Models: lib/app/data/models/task_model.dart, lib/app/data/models/subtask_model.dart
- Group Chat - Create and join chat groups
- Direct Messages - One-on-one messaging
- Real-time Updates - Instant message delivery using Supabase Realtime
- Typing Indicators - See when others are typing
- Message Notifications - Get notified of new messages
Implementation: lib/app/services/realtime_service.dart
- Hive Database - Local caching of tasks and user data
- Offline Access - View cached tasks without internet
- Sync on Reconnect - Automatic data synchronization
Implementation: lib/app/services/storage_service.dart
- Responsive Design - Adaptive layouts for all screen sizes
- Navigation Rail - Desktop-optimized sidebar navigation
- Bottom Navigation - Mobile-friendly bottom bar
- Smooth Animations - Page transitions, button effects, and micro-interactions
- Custom Theme - Yellow accent (#FED36A) with dark/light modes
- Google Fonts - Poppins typography for modern aesthetics
- Shimmer Loading - Skeleton screens during data fetch
- Calendar View - Visualize tasks by date
- Notifications Center - Track task updates and mentions
- Profile Management - Update user info and preferences
- Theme Toggle - Switch between light and dark modes
- Search & Filter - Find tasks quickly
| Category | Technology |
|---|---|
| Framework | Flutter 3.11.0 |
| Language | Dart 3.11.0 |
| State Management | GetX 4.7.3 |
| Backend | Supabase 2.12.0 |
| Authentication | Supabase Auth + Google Sign-In |
| Database | PostgreSQL (Supabase) |
| Local Storage | Hive Flutter 1.1.0 |
| Real-time | Supabase Realtime |
| Animations | flutter_animate 4.5.2 |
| Fonts | Google Fonts (Poppins) |
| Icons | Material Icons + Flutter SVG |
| Image Caching | cached_network_image 3.4.1 |
| Loading Effects | shimmer 3.0.0 |
- Flutter SDK 3.11.0 or higher
- Dart SDK 3.11.0 or higher
- Android Studio / VS Code with Flutter extensions
- A Supabase account (free tier works)
git clone https://github.com/S4tyendra/daytask-flutter.git
cd day_taskflutter pub get- Go to supabase.com and create a new project
- Note your Project URL and Anon Key from Project Settings > API
Execute the SQL files in supabase/migrations/ in order:
-
Initial Schema (
20260205105930_initial_schema.sql)- Creates
profiles,tasks,subtasks,task_memberstables - Sets up Row Level Security (RLS) policies
- Creates
-
Chat Tables (
20260205_chat_tables.sql)- Creates
chat_groups,group_members,group_messagestables - Configures RLS for chat features
- Creates
-
Direct Messages (
add_direct_messages.sql)- Creates
direct_messagestable - Sets up RLS for private messaging
- Creates
-
Notifications (
add_messages_notifications.sql)- Creates
notificationstable - Configures notification triggers
- Creates
How to run:
- Go to Supabase Dashboard > SQL Editor
- Copy and paste each migration file
- Click "Run" for each file
- In Supabase Dashboard, go to Authentication > Providers
- Enable Google provider
- Add your OAuth credentials from Google Cloud Console
- Add authorized redirect URIs
Open lib/app/services/supabase_service.dart and replace:
await Supabase.initialize(
url: 'SUPABASE_URL',
anonKey: 'SUPABASE_ANON_KEY',
);# For Android
flutter run
# For iOS
flutter run -d ios
# For Web
flutter run -d chrome
# For Desktop (Linux/macOS/Windows)
flutter run -d linux
flutter run -d macos
flutter run -d windowsflutter testThe project includes unit tests for:
- β Task model serialization/deserialization
- β Profile model data handling
- β Subtask model validation
Test Location: test/models/
Primary Yellow: #FED36A
Dark Background: #212832
Dark Surface: #263238
Light Text: #FFFFFF
Dark Text: #191D21
Grey Text: #8CAAB9- Font Family: Poppins (Google Fonts)
- Weights: Regular (400), SemiBold (600), Bold (700)
- Mobile: < 600px (Bottom Navigation)
- Tablet/Desktop: β₯ 600px (Navigation Rail)
- Shortcut:
rin terminal orCtrl+Sin IDE - Use Case: UI changes, widget updates, styling tweaks
- Speed: ~1-2 seconds
- Preserves State: Yes
Example: Changing button color, text, or layout
- Shortcut:
Rin terminal orCtrl+Shift+F5in IDE - Use Case: State changes, new dependencies, model updates
- Speed: ~5-10 seconds
- Preserves State: No (full app restart)
Example: Adding new packages, changing state management logic
- Shortcut: Stop and run again
- Use Case: Native code changes, asset updates, platform-specific changes
- Speed: ~30-60 seconds
Example: Updating pubspec.yaml assets, Android/iOS native code
Each feature module follows the GetX pattern:
feature/
βββ bindings/ # Dependency injection
βββ controllers/ # Business logic
βββ views/ # UI components
- Reactive State:
.obsobservables withObx()widgets - Controllers: Extend
GetxControllerfor lifecycle management - Services: Singleton services using
Get.put()andGet.find()
View β Controller β Service β Supabase/Hive β Controller β View
All Supabase tables use RLS policies to ensure:
- Users can only access their own data
- Task members can view shared tasks
- Chat participants can only see their messages
- Secure token-based authentication
- Automatic session refresh
- Expired session handling
- OAuth 2.0 for Google Sign-In
- No task editing in offline mode (sync required)
- Limited file attachment support
- No push notifications (only in-app)
- π Push notifications using FCM
- π File attachments for tasks
- π Advanced search and filtering
- π Analytics dashboard
- π Multi-language support
- π― Task priorities and labels
- π Recurring tasks
This is an internship assignment project. Contributions are not currently required, but feedback is welcome!
This project is created for educational purposes as part of a Flutter internship assignment.
Satyendra
π§ Email: satya@satyendra.in
π GitHub: @s4tyendra
πΌ LinkedIn: /in/s4tyendra
- Supabase for the amazing backend platform
- GetX for elegant state management
- Flutter team for the incredible framework
- Techstax for the opportunity to build this project
For questions or issues related to this assignment:
- Create an issue in the repository
- Contact via email: satya@satyendra.in
Built with β€οΈ using Flutter & Supabase