Skip to content

Ahmaddoolt/tasknotate-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ TaskNotate

TaskNotate Logo

Your ultimate productivity companion β€” customizable, powerful, and beautifully designed β°πŸ“

Flutter Dart GetX SQLite Local Notifications Clean Architecture Kotlin


✨ Features Overview

graph TD
    A[TaskNotate Features] --> B[🎯 Task Management]
    A --> C[⏰ Local Notifications]
    A --> D[🎨 Theme Customization]
    A --> E[πŸ–Œ Drawing & Notes]
    A --> F[🌍 Multi-language Support]
    A --> G[πŸ“… Calendar & Timeline View]
    C --> H[Full-screen Alarm]
    C --> I[Lock Screen Support]
    C --> J[Reboot-resilient Scheduling]
Loading

🌈 Theme Showcase

Default UI

More Screens


🧠 Why TaskNotate?

  • πŸš€ Clean & modular architecture (Clean + MVC)
  • ⏰ Intelligent task scheduling with alarm fallback
  • 🎨 Minimal UI designed for focus & clarity
  • 🌐 Multilingual UI (πŸ‡¬πŸ‡§ πŸ‡ΈπŸ‡¦ πŸ‡ͺπŸ‡Έ πŸ‡©πŸ‡ͺ πŸ‡¨πŸ‡³)

πŸ”” Alarm System: Behind the Scenes

graph TD
    A[⏰ Alarm Trigger] --> B[Kotlin Alarm Handler]
    B --> C[MethodChannel Bridge]
    C --> D[Flutter Alarm Service]
    D --> E[Alarm State Notifier]
    E --> F[Alarm UI Screen]
Loading

Full-screen persistent alarm with dismiss options and lock screen visibility.


🧱 Tech Stack

πŸ”§ Component πŸš€ Technology
Framework Flutter 3.x
Architecture Clean + MVC
State Management GetX
Local Storage SQLite
Alarm Scheduling flutter_local_notifications + alarm
Platform Integration Kotlin
Drawing Engine CustomPaint API

πŸ” Sample Code

Kotlin β€” Alarm Activity

override fun onCreate(savedInstanceState: Bundle?) {
    if (intent?.action == "com.megoabkm.tasknotate.ALARM_TRIGGER") {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
            setShowWhenLocked(true)
            setTurnScreenOn(true)
        } else {
            window.addFlags(
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            )
        }
    }
    super.onCreate(savedInstanceState)
}

Dart β€” Alarm Handler

void _handleAlarmTrigger(AlarmSettings settings) async {
  await AlarmDisplayStateService.to.setAlarmScreenActive(true);
  Get.offAllNamed(AppRoute.alarmScreen, arguments: {
    'id': settings.id,
    'title': 'Task Reminder',
  });
}

Future<void> stopAlarm(int alarmId) async {
  await Alarm.stop(alarmId);
  await AlarmDisplayStateService.to.setAlarmScreenActive(false);
}

πŸ§ͺ Try It Now

git clone https://github.com/MegoABKM/TaskNotate.git
cd TaskNotate
flutter pub get
flutter run

🀝 Contribute

Made with πŸ’™ using Flutter β€” Help us make it even better!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages