The CLI Task Manager for Geeks 🧑💻
🦸 Developer / DevOps / Sysadmin? A command line hero?
💻 Live with the dark terminal?
📝 Think in Markdown?
Finally! A full featured task manager for YOU!
🔮 Highlights
- For ninjas - do things faster with keyboard shortcuts
- Markdown lovers, feel at 🏠! You'll see markdown everywhere.
- Full featured (almost) - Projects, Tasks, due-dates, task notes...
- A <4MB app that takes <1% CPU and ~7MB memory 1 - how much lighter you can think?
- Task note editor with markdown syntax highlighting2
- Full mouse support
🎯 Roadmap
- Create Project
- Delete Project
- Edit Project
- Create Task (under project)
- Set Task due date (as
dd-mm-yyyy) with shortcut - Set Task due date with quick input buttons (today, +1 day, -1 day)
- Tasklist items should indicate status (done, pending, overdue) using colors
- Shortcut for Adding new Project and Task
- Global shortcuts for jumping to Projects or Tasks panel anytime
- Cleanup all completed tasks of project
- Task note editor should syntax highlight (markdown) and line numbers
- Status bar for common shortcuts
- Status bar should display success/error message of actions
- Status bar may display quick tips based on focused element
- Dynamic lists
- Today - Due Today and overdue
- Upcoming - Due in one week
- Someday - No due date
- Havitica3 integration - Use it as Habitica client or use Habitica for cloud backup
- Time tracking
🚀 Ready for action (installing and running)
It's just a single binary file, no external dependencies.
Just download the appropriate version of executable from latest release for your OS.
Then rename and give it permission to execute.
For example:
mv geek-life_linux-amd64 geek-life
sudo chmod +x geek-life
./geek-life
I recommend installing it globally (to run from any directory of your system). It's easy, just put it in your systems $PATH directory.
sudo mv geek-life /usr/local/bin/geek-life
geek-life
Done! Manage your tasks your way!
⌨️ Keyboard shortcuts
Some shortcuts are global, some are contextual.
Contextual shortcuts will be applied according to focused pane/element.
You'll see a currently focused pane bordered with double line.
In case writing in a text input (e,g, new project/task, due date), you have to Enter to submit/save.
| Context | Shortcut | Action |
|---|---|---|
| Global | p |
Go to Project list |
| Global | t |
Go to Task list |
| Projects | n |
New Project |
| Tasks | n |
New Task |
| Tasks | Esc |
Go back to Projects Pane |
| Task Detail | Esc |
Go back to Tasks Pane |
| Task Detail | Space |
Toggle task as done/pending |
| Task Detail | d |
Set Due date |
| Task Detail | ↓/↑ |
Scroll Up/Down the note editor |
| Task Detail | e |
Activate note editor for modification |
| Active Note Editor | Esc |
Deactivate note editor and save content |
Tips about using shortcuts efficiently:
Escwill bring you a step back - to previous pane in most cases.- When you're in Project or Task list, use
↓/↑to navigate the list. - When you're in Project or Task list
Enterwill load currently selected Project/Task. - After creating new Project, focus will automatically move to Tasks. Start adding tasks immediately by pressing
n. - After creating new Task, focus will stay in "new task" input. So that you can add tasks quickly one after another.
- After creating new Task, Press
Escwhen you're done creating tasks.
🛠️ Building blocks
- Made with ❤️ and golang 1.14 (you don't need golang to run it)
- Designed with tview - interactive widgets for terminal-based UI
- Task Note editor made with femto
- Datastore is storm - a powerful toolkit for BoltDB
Contribute
If you fix a bug or want to add/improve a feature, and it's aligned with the focus (merging with ease) of this app, I will be glad to accept your PR. :)
💡 You may ask...
❓ Where is the data stored? Can I change the location?
By default, it will try to create a db file in you home directory.
But as a geek, you may try to put it different location (e,g, in your dropbox for syncing).
In that case, just mention DB_FILE as an environment variable.
DB_FILE=~/dropbox/geek-life/default.db geek-life
❓ How can I suggest a feature?
Just post an issue describing your desired feature/enhancement
and select feature label.
Also, incomplete features in the current roadmap will be found in issue list. You may 👍 issues if you want to increase priority of a feature.
Footnotes
- In my Macbook Air, 1.6 GHz Dual-Core Intel Core i5, RAM: 8 GB 1600 MHz DDR3
- Using monakai color scheme for markdown syntax
- Habitica is a free habit and productivity app that treats your real life like a game
"This is the Book about which there is no doubt, a guidance for those conscious of Allah" - Al-Quran
Click to see it moving (GIF)