Skip to content

S4tyendra/daytask-flutter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“ Mini TaskHub - Personal Task Tracker

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.

Flutter Dart Supabase GetX


🎯 Project Overview

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

πŸ“‚ Project Structure

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

πŸš€ Features Breakdown

1️⃣ Authentication System

  • 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

2️⃣ Task Management

  • 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

3️⃣ Real-time Features

  • 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

4️⃣ Offline Support

  • 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

5️⃣ UI/UX Excellence

  • 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

6️⃣ Additional Features

  • 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

πŸ› οΈ Tech Stack

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

πŸ“¦ Installation & Setup

Prerequisites

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

Step 1: Clone the Repository

git clone https://github.com/S4tyendra/daytask-flutter.git
cd day_task

Step 2: Install Dependencies

flutter pub get

Step 3: Supabase Setup

3.1 Create a Supabase Project

  1. Go to supabase.com and create a new project
  2. Note your Project URL and Anon Key from Project Settings > API

3.2 Run Database Migrations

Execute the SQL files in supabase/migrations/ in order:

  1. Initial Schema (20260205105930_initial_schema.sql)

    • Creates profiles, tasks, subtasks, task_members tables
    • Sets up Row Level Security (RLS) policies
  2. Chat Tables (20260205_chat_tables.sql)

    • Creates chat_groups, group_members, group_messages tables
    • Configures RLS for chat features
  3. Direct Messages (add_direct_messages.sql)

    • Creates direct_messages table
    • Sets up RLS for private messaging
  4. Notifications (add_messages_notifications.sql)

    • Creates notifications table
    • Configures notification triggers

How to run:

  • Go to Supabase Dashboard > SQL Editor
  • Copy and paste each migration file
  • Click "Run" for each file

3.3 Configure Google Sign-In (Optional)

  1. In Supabase Dashboard, go to Authentication > Providers
  2. Enable Google provider
  3. Add your OAuth credentials from Google Cloud Console
  4. Add authorized redirect URIs

3.4 Update Supabase Credentials

Open lib/app/services/supabase_service.dart and replace:

await Supabase.initialize(
  url: 'SUPABASE_URL',
  anonKey: 'SUPABASE_ANON_KEY',
);

Step 4: Run the App

# 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 windows

πŸ§ͺ Testing

Run All Tests

flutter test

Test Coverage

The project includes unit tests for:

  • βœ… Task model serialization/deserialization
  • βœ… Profile model data handling
  • βœ… Subtask model validation

Test Location: test/models/


🎨 Design & UI

Color Scheme

Primary Yellow: #FED36A
Dark Background: #212832
Dark Surface: #263238
Light Text: #FFFFFF
Dark Text: #191D21
Grey Text: #8CAAB9

Typography

  • Font Family: Poppins (Google Fonts)
  • Weights: Regular (400), SemiBold (600), Bold (700)

Responsive Breakpoints

  • Mobile: < 600px (Bottom Navigation)
  • Tablet/Desktop: β‰₯ 600px (Navigation Rail)

πŸ”₯ Hot Reload vs Hot Restart

Hot Reload (⚑ Fast)

  • Shortcut: r in terminal or Ctrl+S in IDE
  • Use Case: UI changes, widget updates, styling tweaks
  • Speed: ~1-2 seconds
  • Preserves State: Yes

Example: Changing button color, text, or layout

Hot Restart (πŸ”„ Slower)

  • Shortcut: R in terminal or Ctrl+Shift+F5 in 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

Full Restart (πŸ”΄ Slowest)

  • 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


πŸ—οΈ Architecture & Design Patterns

GetX Pattern (MVC)

Each feature module follows the GetX pattern:

feature/
β”œβ”€β”€ bindings/          # Dependency injection
β”œβ”€β”€ controllers/       # Business logic
└── views/            # UI components

State Management

  • Reactive State: .obs observables with Obx() widgets
  • Controllers: Extend GetxController for lifecycle management
  • Services: Singleton services using Get.put() and Get.find()

Data Flow

View β†’ Controller β†’ Service β†’ Supabase/Hive β†’ Controller β†’ View

πŸ” Security Features

Row Level Security (RLS)

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

Authentication

  • Secure token-based authentication
  • Automatic session refresh
  • Expired session handling
  • OAuth 2.0 for Google Sign-In

🚧 Known Issues & Future Enhancements

Current Limitations

  • No task editing in offline mode (sync required)
  • Limited file attachment support
  • No push notifications (only in-app)

Planned Features

  • πŸ”” Push notifications using FCM
  • πŸ“Ž File attachments for tasks
  • πŸ” Advanced search and filtering
  • πŸ“Š Analytics dashboard
  • 🌐 Multi-language support
  • 🎯 Task priorities and labels
  • πŸ“… Recurring tasks

🀝 Contributing

This is an internship assignment project. Contributions are not currently required, but feedback is welcome!


πŸ“„ License

This project is created for educational purposes as part of a Flutter internship assignment.


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

Satyendra
πŸ“§ Email: satya@satyendra.in
πŸ”— GitHub: @s4tyendra
πŸ’Ό LinkedIn: /in/s4tyendra


πŸ™ Acknowledgments

  • 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

πŸ“ž Support

For questions or issues related to this assignment:


Built with ❀️ using Flutter & Supabase

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors