🧑💻 Developer / DevOps / Sysadmin? A command line hero?
💻 Live with the dark terminal?
📝 Think in Markdown?
Finally! A full featured task manager for YOU!
- 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
 
- Create Project
 - Delete Project
 - Edit Project
 - Create Task (under project)
 -  Set Task due date (as 
yyyy-mm-dd) with shortcut - Set Task due date with quick input buttons (today, +1 day, -1 day)
 - Update Task Title
 - Tasklist items should indicate status (done, pending, overdue) using colors
 - Export Tasks (Copy title, dueDate and description to clipboard as Markdown)
 - Pin Tasks
 - 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
 - Tomorrow
 - Upcoming - Due in next 7 days
 - Unscheduled - tasks without due date
 
 -  Integrations
- todo.txt (coming soon...)
 - Google Tasks
 - (Share your ideas)
 
 - Time tracking
 
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-lifeI 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-lifeDone! Manage your tasks your way!
Shortcut key for a pane/element will be marked with underline.
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 | 
| Projects | ↑/k/Shift+Tab | 
Go up in project list | 
| Projects | ↓/j/Tab | 
Go down in project list | 
| Tasks | n | 
New Task | 
| Tasks | Esc/h | 
Go back to Projects Pane | 
| Tasks | ↑/k/Shift+Tab | 
Go up in task list | 
| Tasks | ↓/j/Tab | 
Go down in task list | 
| Tasks | c | 
Clear completed tasks | 
| Tasks | d | 
Delete Project | 
| Task Detail | Esc/h | 
Go back to Tasks Pane | 
| Task Detail | Space | 
Toggle task as done/pending | 
| Task Detail | d | 
Set Due date | 
| Task Detail | o | 
Set Due date to today | 
| Task Detail | + | 
Due date plus 1 | 
| Task Detail | - | 
Due date minus 1 | 
| Task Detail | ↓/↑ | 
Scroll Up/Down the note editor | 
| Task Detail | e | 
Activate note editor for modification | 
| Task Detail | v | 
Edit task details in external editor (default vim) | 
| Task Detail | r | 
Rename Task Title | 
| Task Detail | x | 
Export Task to clipboard | 
| Active Note Editor | Esc | 
Deactivate note editor and save content | 
Tips about using shortcuts efficiently:
The interface has 3 primary panels
- [P]rojects/Task lists
 - [T]asks of selected project or Tasklist
 - [D]etails/actions of selected Project or Task
 
The following diagram shows navigation shortcuts between the panels.
+------+----------------------+-----------------------+
|  P   |         T            |         D             |
|      |                      |                       |
|    Entr=>    ↓   ↑        Entr=>                    |
|      |       /   /          |                       |
|   <=Esc      j   k        <=Esc                     |
|      |                      |                       |
+------+----------------------+-----------------------+
So, what it's trying to visualize is -
- Selecting an item with 
Enterwill move you to right panel. That means -- Selecting a Project will load it's tasks and move to Tasks panel
 - Selecting a Task will load task detail and move to Detail panel
 
 - Use 
Escto move back to left panel. From Details to Tasks to Projects. - To navigate a list (Project list or Task list),
- Use 
↓orjorTabto go down - Use 
↑orkorShift+Tabto go up 
 - Use 
 
Some More hints:
- If you are a vim user, think like -
j/kfor up/down list andhfor go left - Think 
Escas a "step back" - to previous pane in most cases. - When you're in a list (Projects or Tasks), 
Enterwill load currently selected item. - 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. 
- 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
 
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. :)
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-lifeUPDATE: For Windows users, setting ENV variable is not so straight forward.
So, added a flag --db-file or -d to specify DB file path from command line easily.
geek-life --db-file=D:\a-writable-dir\tasks.dbJust 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.

Developed with GoLand.
Thanks to JetBrains for sponsoring Licenses for Open Source Development.
- 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
 
"This is the Book about which there is no doubt, a guidance for those conscious of Allah" - Al-Quran

