formerly PlanForge
Desktop task management with millisecond-accurate deadlines and intelligent notifications
Built for students and professionals who need precision, not just reminders
I built DockTask to solve my own problem of managing multiple classwork deadlines while learning JavaFX development. What started as a simple to-do list evolved into a full-featured task management system as I explored UI/UX design, data persistence strategies, and memory optimization techniques.
The core challenge? Basic calendar apps treat "3 PM" and "3:00:47 PM" the same, but when you have multiple assignments due at midnight, lab reports due minutes apart, and group project submissions with precise timing requirements, seconds matter.
This project pushed me to think beyond basic functionality and focus on creating a polished, user-friendly experience. Now it's the tool I use daily to keep my academic life neat and organized.
Watch DockTask in action! See the demo video or download the installer below to try it yourself.
Untitled.design.3.mp4
| Platform | Download | Status |
|---|---|---|
| Windows | DockTask-Setup-0.5.exe | β Available |
| MacOS | Coming Soon | π§ In Development |
| Linux | Coming Soon | π§ In Development |
Self-contained installer β No JDK installation required. Everything is bundled.
NOTE! If you run the installer in administration mode, DockTask can only save data with administration!
- Priority-based auto-sorting with color-coded groups for instant visual scanning
- Real-time countdown timers tracking tasks down to the second
- Multi-stage notifications at 24h, 5h, 1h, 30m, 10m, 1m, and overdue intervals
- Integrated calendar view with automatic synchronization when tasks are created or modified
- Precise task timing allows scheduling tasks within seconds of each other
- System tray integration β Minimize to tray and keep DockTask running in the background
- Adaptive theming β Dark/light modes with persistent preferences across sessions
- Native window controls β Platform-integrated UI using NFX library
- Keyboard shortcuts β Power user features (Ctrl+Shift+C for instant task creation)
- Seamless theme switching with theme-adaptive styling
- Auto-save functionality with unsaved changes detection
- Export/Import capabilities for data portability and backup
- Multi-user support with separate task databases and built-in authentication
- Local-first storage β All data stays on your machine
- Confirmation dialogs protecting against accidental data loss
| Component | Technology | Purpose |
|---|---|---|
| Language | Java 23 | Core application logic |
| UI Framework | JavaFX 21 | Cross-platform GUI rendering |
| Styling | CSS3 | Theme implementation and visual design |
| Native Integration | NFX Library | Platform-native window controls and title bar |
| Architecture | MVC Pattern | Separation of concerns for maintainability |
| Data Storage | File-based serialization | Local persistence with custom separator-based format |
| Concurrency | JavaFX Timeline API | Real-time UI updates without blocking |
| System Integration | Java AWT TrayIcon | OS-level notifications and system tray |
DockTask implements Model-View-Controller (MVC) architecture for maintainable, testable code:
- UserData.java β Centralized data access handling all CRUD operations
- Data/ directory β File-based storage for user databases and settings (Settings.txt)
- Responsibilities: Data validation, serialization with
<SEP>separators, persistence operations
- TaskUi.java β Main dashboard with task list and real-time countdown timers
- CalendarUi.java β Monthly calendar with task indicators and synchronization
- CreateTaskUi / UpdateTaskUi β Task creation and editing interfaces with auto-save
- Settings.java β Application configuration panel with export/import, data management
- Responsibilities: UI rendering, user input collection, visual feedback, theme adaptation
- Event handlers connecting user actions to data operations
- ThemeManager β Coordinating theme state and color adaptation across components
- Notification System β Managing system tray alerts based on task deadlines
- Timeline Controllers β Orchestrating concurrent countdown updates
- Navigation Guards β Preventing accidental data loss during transitions
- Responsibilities: Business logic, state management, component coordination
Benefits of this approach:
- Data layer modifications (e.g., migrating to database) require zero UI changes
- UI redesigns proceed independently of data operations
- Individual components can be unit tested in isolation
- New features integrate cleanly without cascading modifications
Building DockTask taught me valuable software engineering lessons:
In version 0.1, countdown timers for completed or removed tasks continued running in the background, accumulating on the memory stack. This caused memory usage to grow from ~500MB to over 1000MB during extended sessions.
Solution implemented:
- Pause all Timeline threads when the application is minimized or closed
- Clear expired task entries from the active monitoring list after removal
- Implement proper cleanup of countdown timers for non-visible tasks
Result: Reduced idle memory footprint from 500MB to 60MB (85% improvement from peak) with sustained performance during long-running sessions. The application now becomes more efficient over time as resources are garbage collected.
-
Concurrent State Management: Designed timeline system tracking multiple countdown timers simultaneously without data races or UI freezes
-
Data Persistence: Built custom file-based serialization with
<SEP>separators enabling support for embedded links and preventing parsing errors. Added validation to prevent corruption, auto-save with change detection, and safe import/export functionality -
UI/UX Design: Created theme-aware component system with instant propagation across 5+ view classes, responsive layouts, and intuitive information hierarchy with color-coded visual distinctions
-
Event-Driven Architecture: Mastered JavaFX event system, listeners, and callback patterns for responsive interactions. Implemented navigation guards to prevent accidental data loss
-
Software Distribution: Built self-contained Windows installer with bundled Java runtime for zero-dependency deployment
Architecture & Data Layer
- Implemented centralized data storage system with dedicated "Data" folder structure
- Migrated from simple file I/O to robust data serialization with validation
- Created persistent settings storage via Settings.txt configuration file
- Built foundation for modular plugin system with configuration management
- Replaced legacy data parsing with scalable
<SEP>separator-based system for embedded link support
User Safety & Data Integrity
- Designed and implemented modal confirmation dialog system for destructive operations
- Developed auto-save mechanism with unsaved changes detection when creating tasks
- Created navigation guard system to prevent accidental data loss
- Implemented data export/import functionality with comprehensive error handling
- Added validation for all data manipulation operations to prevent corruption
UI/UX Enhancements
- Redesigned application interface for improved visual hierarchy and clarity
- Implemented dynamic theme-aware window chrome with color adaptation
- Developed Settings panel with centralized application controls (export/import, refresh, exit)
- Refined interface by removing redundant UI elements
Feature Additions
- Dark mode preference persistence across sessions
- Manual data refresh capability
- Graceful application exit with cleanup operations
- Import/export functionality for data portability
Technical Debt & Refactoring
- Improved error handling across file operations
- Enhanced data validation to prevent corruption scenarios
- Optimized memory usage for large datasets
- Strengthened separation of concerns in data access layer
Performance & Optimization
- Reduced memory usage by 63% by identifying and fixing Timeline leak β implemented pause/resume for background countdowns Enhanced task sorting algorithm for faster rendering with large datasets
- Refactored legacy codebase for better maintainability
UI/UX Improvements
- Redesigned CreateTask UI with cleaner layout and improved responsiveness
- Enhanced calendar refresh logic with instant update propagation
- Fixed Sun & Moon icon reset issue with live theme synchronization
- Revamped clock system with improved real-time accuracy
- Added keyboard shortcuts for power users (Ctrl+Shift+C for quick task creation)
Bug Fixes & Quality of Life
- UpdateTask changes now instantly reflected in calendar view
- Improved due date validation and edge case handling
- Smoother theme transitions between dark/light modes
- Download DockTask-Setup-0.5.exe
- Run the installer and follow the on-screen prompts (administrator privileges recommended)
- Launch DockTask from your Desktop or Start Menu
System Requirements:
- Windows 10 or later (64-bit)
- 512 MB RAM minimum
- 100 MB free disk space
- 1024x768 display resolution minimum
Note: Installer includes bundled Java runtime. No external dependencies or JDK installation required.
Contributions are welcome! Here's how you can help:
- Report Bugs β Open an issue with detailed reproduction steps and environment information
- Suggest Features β Share ideas via GitHub Discussions with use cases
- Submit Pull Requests β Fork, implement with tests, and submit for review
Please ensure all contributions adhere to the existing code style and architectural patterns.
This project is licensed under the MIT License β see LICENSE file for complete terms and conditions.
KSaifStack
- GitHub: @KSaifStack
- For questions or feature requests, open an issue
