Daypack-lib is a schedule, time and time slots handling library
The core scheduling and progress tracking functionalities are largely finished, but facilities for usage of library in frontend, and the frontend itself are still underway
TODO
See here TODO
Automatic scheduling
Recurrence
Time pattern (more for devs)
Time_patternTime expression
Time_patternDuration expression
Time profiles
Some downloadable prebuilt profiles are
work_hours: Monday to Friday 9am to 5pmsleep_hours: Everyday 11pm to 12am, 12am to 6amBackup plan
Progress tracking
Schedule versioning and rollback
(WIP) Taking transit time into account during scheduling
Daypack_lib is offline (more for devs)
Note: The following lists all the constraints supported by the core library, but frontends may not expose them completely
Fixed
Shift
Split_and_shift
Daypack splits task segment into smaller segments then shifts them around and tries to find a spot, takes following parameters
Split_even
Daypack splits a task segment into evenly sized smaller segments across some specified buckets/boundaries with shifting
E.g. "I want to exercise 5 hours, split it evenly across next 7 days, boundaries being 1pm-5pm of each day"
Time_share
E.g. "Interleave task A, B, C across 1pm-4:30pm with interval size of 30 mins" produces the following agenda
Time slots | Task |
|---|---|
1:00pm-1:30pm | Task A |
1:30pm-2:00pm | Task B |
2:00pm-2:30pm | Task C |
2:30pm-3:00pm | Task A |
3:00pm-3:30pm | Task B |
3:30pm-4:00pm | Task C |
4:00pm-4:30pm | Task A |
Push_toward
Daypack does not aim to be a general solver, and only supports a limited set of constraints (which are listed above)
Furthermore, Daypack only uses a backtracking search procedure with pruning (implemented using lazy sequences) for solving the constraints, and does not use any advanced or potentially more efficient constraint solving techniques
It is subsequently inferior to a lot of other automatic task scheduling software, and cannot accomodate very complex scheduling scenarios
Nevertheless, we hope that the supported constraints are powerful enough for a simple and standalone personal task scheduler
More detailed docs on the way
Some of the features that Daypack does NOT support
Resource allocation
TODO
See here TODO for daypc user guide
See here TODO for daypack_lib library documentation
Got a feature request? Feel free to open an issue to start a discussion.
Please note that since Daypack was never designed to be a general solver, there are things prohibitively expensive to properly implement as a result (short of adding a general solver into Daypack), which we may cite as a reason should we reject your feature request
We ask for your understanding should that be the case
Code contributions are welcome. Please note that by submitting your original work, you agree to license your work under the MIT license.
We became aware of Eva later on as well, and took inspiration from its UI/UX design choices and feature set
MIT