- Notifications
You must be signed in to change notification settings - Fork2
Let algorithms decide your life.
License
Procrat/eva
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Let algorithms decide your life.
This project hasn't reached an alpha state yet. At the moment, it is just a tinyCLI wrapper around a simple scheduling algorithm. Some people already find thisuseful however, so maybe you do too!
The front end is developed in theeva-webproject.
If you enjoy it so far and want to say thanks, you canbuy me a coffee ☕.
Eva aims to be an opinionated application to manage your life when you don'tfeel like doing that yourself. It will mainly do this by managing your todo listas much as possible, for example by scheduling your tasks automatically so youare saved from that mental burden.
It borrows from various productivity and motivation concepts like GTD, Pomodoro,the Eisenhower scheme, flow, focussing on one task, small-chunking work, eatingthe frog, etc.
- Eva should be asinobtrusive as possible to maximise your flow, butobtrusive to manage your time.
- Eva should maximise yourmotivation while minimising your timeprocrastinating.
- Automatic scheduling should be left to machines since humans are better atdeciding importance, deadlines and estimated duration of tasks then atactually scheduling all the things in their lives.
- Yourmental health is more important than your productivity.
If you haven't built a Rust project before, start by installingrustup, and runningrustup install nightly
to installthe latest nightly version of Rust. Second, add$HOME/.cargo/bin
to yourPATH
, e.g. by adding this line to your~/.bashrc
:
export PATH="$PATH:$HOME/.cargo/bin"
Finally, to install Eva, clone this repository, and inside the eva-cli folder runcargo +nightly install --path .
.
eva --help
will get you started.
$ eva --helpeva 0.0.1USAGE: eva <SUBCOMMAND>FLAGS: -h, --help Prints help information -V, --version Prints version informationSUBCOMMANDS: add Adds a task help Prints this message or the help of the given subcommand(s) rm Removes a task schedule Lets Eva suggest a schedule for your tasks set Changes the deadline, duration, importance or content of an existing task tasks Lists your tasks in the order you added them
$ eva help addeva-addAdds a taskUSAGE: eva add <content> <deadline> <duration> <importance>FLAGS: -h, --help Prints help information -V, --version Prints version informationARGS: <content> What is it that you want to do? <deadline> When should it be finished? Give it in the format of '2 Aug 2017 14:03'. <duration> How long do you estimate it will take? Give it in a (whole or decimal) number of hours. <importance> How important is this task to you on a scale from 1 to 10?
$ dateThu Aug 1 14:12:50 NZST 2019$ eva add 'Think of plan to get rid of The Ring' '14 Aug 2019 00:00' 8 9$ eva add 'Ask advice from Saruman' '10 Aug 2019 00:00' 8 4$ eva add 'Visit Bilbo in Rivendel' '15 Aug 2019 00:00' 8 2$ eva add 'Make some firework for the hobbits' '2 Aug 2019 18:00' 3 3$ eva add 'Get riders of Rohan to help Gondor' '23 Aug 2019 00:00' 8 7$ eva add 'Find some good pipe-weed' '4 Aug 2019 00:00' 1 8$ eva add 'Go shop for white clothing' '4 Sep 2019 00:00' 2 3$ eva add 'Prepare epic-sounding one-liners' '2 Aug 2019 19:00' 2 10$ eva add 'Recharge staff batteries' '3 Aug 2019 00:00' 0.5 5$ eva scheduleSchedule: Thu 1 Aug 14:23: 13. Prepare epic-sounding one-liners (deadline: Fri 2 Aug 19:00, duration: 2h0, importance: 10) Thu 1 Aug 16:23: 14. Recharge staff batteries (deadline: Sat 3 Aug 0:00, duration: 0h30, importance: 5) Fri 2 Aug 9:00: 9. Make some firework for the hobbits (deadline: Fri 2 Aug 18:00, duration: 3h0, importance: 3) Fri 2 Aug 12:00: 11. Find some good pipe-weed (deadline: Sun 4 Aug 0:00, duration: 1h0, importance: 8) Fri 2 Aug 13:00: 12. Go shop for white clothing (deadline: Wed 4 Sep 0:00, duration: 2h0, importance: 3) Sat 3 Aug 9:00: 7. Ask advice from Saruman (deadline: Sat 10 Aug 0:00, duration: 8h0, importance: 4) Sun 4 Aug 9:00: 6. Think of plan to get rid of The Ring (deadline: Wed 14 Aug 0:00, duration: 8h0, importance: 9) Mon 5 Aug 9:00: 8. Visit Bilbo in Rivendel (deadline: Thu 15 Aug 0:00, duration: 8h0, importance: 2) Tue 6 Aug 9:00: 10. Get riders of Rohan to help Gondor (deadline: Fri 23 Aug 0:00, duration: 8h0, importance: 7)
Eva Just Works™ without any extra configuration.
There are some things you could change if you really wanted to, by making a filecalled~/.config/eva/eva.toml
on GNU/Linux,~/Library/Application Support/eva/eva.toml
on Mac OS orC:\Users\<username>\AppData\Roaming\eva\eva.toml
on Windows. You can use~
and refer to environment variables if you want. These are the options youcan set at the moment, alongside their defaults:
# Which scheduling algorithm to use by default.# This can be overridden with the --strategy flag to `eva schedule`scheduling_strategy ="importance"# Where Eva should store its SQLite database.# On GNU/Linuxdatabase ="~/.local/share/eva/db.sqlite"# On Mac OSdatabase ="~/Library/Application Support/eva/db.sqlite"# On Windowsdatabase ="C:\\Users\\<username>\\AppData\\Roaming\\eva\\db.sqlite"
- Task persistence
- Minimal task management interface
- Automatic scheduling
- User configuration in CLI
- Abstract configuration interface
- Web interface
- Time segmentation (e.g. sleep, working hours, morning rituals)
- Manual scheduling of fixed events
- Recurring events
- Task dependencies
- CalDAV / Google Calendar integration
- Optional reminders
- Life organising scheme (values → life goals → projects → tasks)
- Blocked tasks (while waiting for something or someone)
- Time tracking + Pomodoro
- Regular, fixed moments of reflection (seeGTD), both to ensure your task list still reflects reality, but also to be motivated by the work already done
- Way to make a brain dump and organise it later, at a fixed time
- Backup data to a server and possibly sync with Eva on other devices
Many thanks go out toPersonal Productivity@StackExchange,MarkManson,zen habits andGTD for originally inspiring me! I also wouldn'thave gotten this far without the interesting discussions around schedulingalgorithms withMyrjam.