A modern, offline-first weekly planner built as a Windows desktop widget. Schedulify lives in your system tray and helps you manage recurring tasks and special events without the overhead of a full-screen calendar app.
| Feature | Description |
|---|---|
| Weekly Recurrence | Tasks repeat weekly by default. Set up your routine once — Schedulify keeps it for every coming week. |
| Time Conflict Detection | Prevents overlapping tasks. Trying to add a task at 14:00 when 13:30–14:30 is already taken? The app will warn you. |
| Offline-First Storage | Powered by Isar (embedded NoSQL). All data is stored locally — no internet required, no data lost on restart. |
| Native Notifications | Windows toast notifications with optional sound alert when a task is due, even while minimized to tray. |
| Special Days | Track birthdays, anniversaries, or deadlines via the built-in calendar. Days with events are highlighted with styled amber cards directly in the day view. |
| System Tray Integration | Minimizes next to the clock. Right-click the tray icon to show or exit the app. |
| Auto-Launch on Startup | Optionally launch with Windows so your schedule is always one click away. |
| Dark UI | Optimized for dark environments. Roboto typography, Lucide icons, subtle progress bars for ongoing tasks. |
Download the latest release from the Releases page.
- Download and extract the
.zipfile. - Run
schedulify.exe.
No installer required — it's fully portable.
- Flutter SDK (latest stable)
- Visual Studio 2022 with the Desktop development with C++ workload
# 1. Clone the repository
git clone https://github.com/erenisci/schedulify.git
cd schedulify
# 2. Install dependencies
flutter pub get
# 3. Generate Isar schema code
flutter pub run build_runner build --delete-conflicting-outputs
# 4. Run in debug mode
flutter run -d windowsflutter clean
flutter pub get
flutter build windowsOutput: build/windows/x64/runner/Release/
flutter testTests cover the core Task model logic — completion tracking and time accessor correctness.
| Layer | Technology |
|---|---|
| Framework | Flutter 3 (Dart) |
| Database | Isar — embedded NoSQL, zero config |
| Window Management | window_manager, tray_manager, screen_retriever |
| Notifications | local_notifier (Windows toast) |
| Audio | audioplayers |
| UI | lucide_icons, Google Fonts (Roboto), table_calendar |
| Persistence | shared_preferences (settings), Isar (task data) |
lib/
├── main.dart # Entry point, window positioning, theme setup
├── home_page.dart # Main UI, weekly tabs, task management logic
├── task.dart # Task and SpecialDay data models (Isar collections)
├── services/
│ ├── database_service.dart # Isar singleton — CRUD operations
│ ├── settings_service.dart # SharedPreferences wrapper for user settings
│ └── time_ticker.dart # ChangeNotifier timer for live UI updates
└── widgets/
├── task_card.dart # Reusable task display card
└── task_progress_bar.dart # Linear progress indicator for active tasks
Contributions, issues, and feature requests are welcome.
- Fork the project
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m 'Add your feature' - Push to the branch:
git push origin feature/your-feature - Open a Pull Request
Distributed under the MIT License. See LICENSE for details.