The Todo List / Task Manager for Geeks in command line

Overview

Geek-life Logo

The CLI To-Do List / Task Manager for Geeks

Geek-life - The To-do List / Task Manager for Geeks in command line! | Product Hunt Embed License: MIT Go Report Card

🧑‍💻 Developer / DevOps / Sysadmin? A command line hero?
💻 Live with the dark terminal?
📝 Think in Markdown?

Finally! A full featured task manager for YOU!

Geek-life overview Click to see it moving (GIF)

🔮 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 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
  • Integrations
    • Google Tasks
    • (Share your ideas)
  • 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

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
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 ↓/↑ 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

  1. [P]rojects/Task lists
  2. [T]asks of selected project or Tasklist
  3. [D]etails/actions of selected Project or Task

The following diagram shows navigation shortcuts between the panels.

+------+----------------------+-----------------------+
|  P   |         T            |         D             |
|      |                      |                       |
|    Entr=>    ↓   ↑        Entr=>                    |
|      |      tab TAB         |                       |
|   <=Esc/h    j   k       <=Esc/h                    |
|      |                      |                       |
+------+----------------------+-----------------------+

So, what it's trying to visualize is -

  • Selecting an item with Enter will 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 Esc or h (like vim) to move to left panel. Details to Tasks to Projects.
  • To navigate a list (Project list or Task list),
    • Use ↓ or j or Tab to go down
    • Use ↑ or k or Shift+Tab to go up

Some More hints:

  • If you are a vim user, think like -j/k for up/down list and h for go left
  • Think Esc as a "step back" - to previous pane in most cases.
  • When you're in a list (Projects or Tasks), Enter will 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 Esc when 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

  1. In my Macbook Air, 1.6 GHz Dual-Core Intel Core i5, RAM: 8 GB 1600 MHz DDR3
  2. 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

Issues
  • show msgbox with confirmation del/clear

    show msgbox with confirmation del/clear

    Added a confirmation window when deleting a project or clean the tasks.

    fix: https://github.com/ajaxray/geek-life/issues/28 fix: https://github.com/ajaxray/geek-life/issues/21

    2021-12-01_21-03-50 2021-12-01_21-04-18

    opened by saaremaa 3
  • Browsing lists and panels using vim navigation keys

    Browsing lists and panels using vim navigation keys

    Browsing lists and panels using vim navigation keys will be much natural for vim users.

    • Navigating lists with j and k
    • Moving to panel (projects, tasks, task-detail) with h and l

    Based on a feedback on Reddit

    enhancement good first issue 
    opened by ajaxray 3
  • Problem in displaying the horizontal line.

    Problem in displaying the horizontal line.

    Hi. In Windows 10, I have a problem in displaying the horizontal line in projects and detailed information on the task. 2021-11-26_11-31-54 Is there such a problem in other operating systems? For me this problem is solved by changing the rune tcell.RuneS3 to tcell.RuneHLine in the code. 2021-11-27_22-19-50

    If necessary, I can provide PR.

    enhancement 
    opened by saaremaa 2
  • Shortcut improvement for Task Detail panel

    Shortcut improvement for Task Detail panel

    Add Shortcut for:

    • Set due date to today: t
    • Increase due date (+1): +
    • Decrease due date (-1): -

    Mark shortcut by underlining character for the above listed and:

    • edit
    enhancement good first issue 
    opened by ajaxray 2
  • Creating task when no project exists crashes

    Creating task when no project exists crashes

    Just tried this out, and when I tried creating a new task without first creating a project, it crashes. Presumably because projectPane.activeProject is nil?

    bug 
    opened by saward 2
  • We give Shortcut Key to the lower case to reduce confusion.

    We give Shortcut Key to the lower case to reduce confusion.

    In the process of working with the program, i often confused with large or small letters in Shortcut Key. With this change, we give Shortcut Key to the lower case to reduce confusion.

    opened by saaremaa 1
  • Delete task/project confirmation

    Delete task/project confirmation

    IMO deleting tasks/projects without double confirmation can lead to accidentally removed lists.

    Please implement a dialog asking if the user really wants to delete stuff.

    example:

    1. User press a button to delete a project
    2. Terminal displays a dialog:

    | Do you want to delete the project? | | | | Yes No |

    If user press 'yes' then it's deleted If user press 'no' then nothing happens

    opened by Bezifabr 1
  • added shortcuts '+', '-' and 'o', underlining for those and 'e'

    added shortcuts '+', '-' and 'o', underlining for those and 'e'

    Info

    I've tested the changes on Ubuntu 20.04 without any issues but please be aware that this is the first time I do something in Go, so please double-check if the changes are alright :wink:

    PR fixes #20

    Changes

    Added shortcuts:

    • o for set due date to today
    • + for due date plus 1 day
    • - for due date minus 1 day

    Marked shortcuts by underlining for the above and and e in edit.

    Added new shortcuts to the README.

    opened by sdrwtf 1
  • New dynamic list

    New dynamic list "Unscheduled" - all tasks without a due date

    Hi,

    I think it would be cool to have an overview of all tasks across all projects, without depending on time. I have some tasks that don't have a due date and are therefore not shown in the dynamic lists.

    feature 
    opened by jemx 1
  • Edit Task Note in external editor

    Edit Task Note in external editor

    Edit Task Note in external editor (using $EDITOR env variable or vim by default). So, the vim/nano/micro users will get their favorite editor for manipulating long details

    enhancement feature 
    opened by ajaxray 1
  • close task detail on press 'p' || 't' ||  'esc'

    close task detail on press 'p' || 't' || 'esc'

    When working with tasks, it happens that the name of the task is long enough and overlaps with the detailed information about the task.

    https://user-images.githubusercontent.com/2886680/145378030-6282d44c-c775-4dab-858f-397955b04043.mp4

    Implemented that when switching on the 'p' key || 't' || 'esc' closes the detailed information of the task and it seems to be more convenient.

    https://user-images.githubusercontent.com/2886680/145378213-e78f27dd-577a-44c7-8141-79f0d657aca5.mp4

    opened by saaremaa 0
  • Integration with Microsoft To-Do

    Integration with Microsoft To-Do

    [Enhancement request]

    Seems like this tool would integrate nicely with Microsoft todo from a overall functionality standpoint. It would be nice to use geek-life on my computer while still being able to update on the fly with Microsoft app on the go (mobile)

    opened by terr-steak 0
  • [REQUEST] Any plans to make this universal binary for M1 Macs?

    [REQUEST] Any plans to make this universal binary for M1 Macs?

    Currently have to keep an SSH session open on another machine to use this and would love to see this open to more binaries!

    I will also take a stab at it and submit a PR, but definitely wanted to ask to see if there was interest from other users.

    opened by Normanras 0
  • Support for a priority

    Support for a priority

    Support for a priority (either in the form of a number, or in the form of a user tag) would allow to adopt the GTD approach with Geek-life. E.g. "Today", "Soon", "Later", "Someday", "Pending". Together with a new dynamic list "Priority" to list tasks from all projects combined, sorted by priority, this would make a great feature.

    feature good first issue 
    opened by JorisDeRidder 1
  • Support for Left/right arrow

    Support for Left/right arrow

    Giving the left arrow the same meaning as Escape, and the right arrow the same meaning as Enter, this would allow for very fast navigation through the different projects and tasks.

    feature 
    opened by JorisDeRidder 0
  • Select project based on current directory

    Select project based on current directory

    When I start GL from a directory, it would be nice to have the project with the same name.

    Maybe allow storing the folder when creating a new project so that GL feels like a directory-based task list manager.

    feature 
    opened by Robert-M-Muench 0
Releases(v0.1.2)
  • v0.1.2(Mar 15, 2021)

    Bug Fixes and improvements

    • 0087d6e Shortcuts added for project related actions (Delete, Clear Completed) - Closed #13
    • 1cad2d0 New dynamic list - Unscheduled (Tasks without due date) - Closed #18
    • c3f1896 Fixed issue with sudden restore of status bar message
    • ae2dc57 Added Task Export (to clipboard) feature. Closed #17
    • 0208277 Added checksum from this release - Closed #14

    General Instructions

    Please download the appropriate version for your OS -

    • geek-life_darwin-amd64 For MacOS users
    • geek-life_linux-amd64 For most common desktop Linux OS (Ubuntu, Debian etc.)
    • geek-life_linux-arm64 For Linux OS with ARM architecture
    • geek-life_windows-386 For recent Windows versions.

    MacOS Users

    • If you are on and getting a warning dialogue about "unidentified developer", follow this procedure to allow it.

    Windows Users

    • Rename the binary to geek-life.exe and run it from the command prompt.
    • This app may require permission to create files in user's home folder.
    • According to #19 , some windows users may face issue in startup. Use different DB file location if you face the same.

    SHA256 Checksum to verify downloaded executable file

    | Binary Executable | SHA256 Checksum | |---|---| | geek-life_darwin-amd64 | 6f05c072f8601f7a8ffb08b8b6b4ec3255e20abb1c2c35ee4a6255e157fce3a1 | | geek-life_linux-amd64 | bf8ea9c7df37adb18db10a015cf485d63b06bab488a04a71f1ddd8732c3c3d70 | | geek-life_linux-arm64 | 5dde0fa9f635b830b16adc0faa1d85a613ff08e307cfecfd51b836f8c1e7d33a | | geek-life_windows-386 | 6672fbcc951219795e1ea5ab3c72974293bbb35deefdfc633eb82494d758e9bb |

    Source code(tar.gz)
    Source code(zip)
    geek-life_darwin-amd64(2.52 MB)
    geek-life_linux-amd64(2.32 MB)
    geek-life_linux-arm64(2.12 MB)
    geek-life_windows-386(2.08 MB)
  • v0.1.1(Jan 17, 2021)

    Changelog

    Bug Fixes and improvements

    • Fixed Mouse binding issues (after using vim for editing task details). Thanks @rivo for this help.
    • Fixed issue with repetition of shortcut keys
    • Color improvements for better visibility and status distinction

    General Instructions

    Please download the appropriate version for your OS -

    • geek-life_darwin-amd64 For MacOS users
    • geek-life_linux-amd64 For most common desktop linux OS
    • geek-life_linux-arm64 For linux OS with ARM architecture
    • geek-life_windows-386 For recent windows versions.

    MacOS Users
    BTW, if you are on and getting a warning dialogue about "unidentified developer", follow this procedure to allow it.

    Windows Users
    Rename the binary to geek-life.exe and run it from the command prompt. This app may require permission to create files in user's home folder.

    Source code(tar.gz)
    Source code(zip)
    geek-life_darwin-amd64(3.73 MB)
    geek-life_linux-amd64(3.42 MB)
    geek-life_linux-arm64(3.18 MB)
    geek-life_windows-386(3.13 MB)
  • v0.1.0(Jul 11, 2020)

    This release adds Dynamic TaskLists, which is going to make this app really useful for day to day task management and follow up.

    New Features

    • 🎉 Dynamic TaskLists - today(+overdue), tomorrow, upcoming
    • Editing Task Title #3
    • New, vim style navigation shortcuts #2
      • j,k for browsing Projects and Tasklist (along with ↓,↑ and tab,TAB)
      • h for go back to left side panel (along with Esc)
    • Added migrate subcommand to re-index database.
      • If you're upgrading from a previous version, run geek-life migrate to work previous tasks seamlessly

    Improvements and Bug fixes

    • Fixed TimeZone related inconsistency #7
    • Handles defer error on Db closing
    • Resolved panic on creating task without project #1
    • Added more contextual hint message.

    General Instructions

    Please download the appropriate version for your OS -

    • geek-life_darwin-amd64 For MacOS users
    • geek-life_linux-amd64 For most common desktop linux OS
    • geek-life_linux-arm64 For linux OS with ARM architecture
    • geek-life_windows-386 For recent windows versions.

    MacOS Users
    BTW, if you are on and getting a warning dialogue about "unidentified developer", follow this procedure to allow it.

    Windows Users
    Rename the binary to geek-life.exe and run it from the command prompt. This app may require permission to create files in user's home folder.

    Source code(tar.gz)
    Source code(zip)
    geek-life_darwin-amd64(3.76 MB)
    geek-life_linux-amd64(3.45 MB)
    geek-life_linux-arm64(3.21 MB)
    geek-life_windows-386(3.13 MB)
  • v0.0.2(Jun 5, 2020)

    First version - basic task manager

    • Faster with keyboard shortcuts with full mouse support
    • All basic things working - Projects, Tasks, Due dates, Task notes...
    • True lightweight - A <4MB app that takes <1% CPU and ~7MB memory
    • Task note editor with markdown syntax highlighting

    Please download the appropriate version for your OS -

    • geek-life_darwin-amd64 For MacOS users
    • geek-life_linux-amd64 For most common desktop linux OS
    • geek-life_linux-arm64 For linux OS with ARM architecture
    • geek-life_windows-386 For recent windows versions.

    MacOS Users
    BTW, if you are on and getting a warning dialogue about "unidentified developer", follow this procedure to allow it.

    Windows Users
    Rename the binary to geek-life.exe and run it from the command prompt. This app may require permission to create files in user's home folder.

    Source code(tar.gz)
    Source code(zip)
    geek-life_darwin-amd64(3.75 MB)
    geek-life_linux-amd64(3.58 MB)
    geek-life_linux-arm64(3.20 MB)
    geek-life_windows-386(3.09 MB)
Owner
Anis uddin Ahmad
I am a web application architect, proficient at requirement analysis, sophisticated solution design and scalable application development.
Anis uddin Ahmad
Simple Todo List - Wunderlist Replacement

DoIT Todo List This is a simple todo-list made with Vue(frontend) and a simple webserver written in Go(backend). Note that this started out as a simpl

Magnus 76 Jul 27, 2022
CLI todo manager for iCalendar files.

tdx tdx is a todo manager for iCalendar files. It is designed to work with Vdirsyncer and expects to operate in its storage format. iCalendar-compatib

Gadzhi Kharkharov 9 Jul 25, 2022
An open-source GitLab command line tool bringing GitLab's cool features to your command line

GLab is an open source GitLab CLI tool bringing GitLab to your terminal next to where you are already working with git and your code without switching

Clement Sam 2k Jul 27, 2022
A command line tool that builds and (re)starts your web application everytime you save a Go or template fileA command line tool that builds and (re)starts your web application everytime you save a Go or template file

# Fresh Fresh is a command line tool that builds and (re)starts your web application everytime you save a Go or template file. If the web framework yo

null 0 Nov 22, 2021
A command line tool to prompt for a value to be included in another command line.

readval is a command line tool which is designed for one specific purpose—to prompt for a value to be included in another command line. readval prints

Venky 0 Dec 22, 2021
Grit is an experimental personal task manager that represents tasks as nodes of a multitree

Grit is an experimental personal task manager that represents tasks as nodes of a multitree, a class of directed acyclic graphs. The structure en

Tomasz Klimczak 1.6k Jul 31, 2022
cross platform command line tool to list, notify and book vaccine using cowin API

Command line tool to List and Book Vaccine cowin-cli is a simple cli tool to book vaccines and list centers using the COWIN API. It also supports auto

Anoop S 35 Mar 7, 2022
mass-binding-target is a command line tool for generating binding target list by search plot files from disk.

mass-binding-target mass-binding-target is a command line tool for generating binding target list by search plot files from disk. Build Go 1.13 or new

null 0 Nov 5, 2021
Simple to do list API with Gin and Gorm (with Postgres)Simple to do list API with Gin and Gorm (with Postgres)

go-todo Simple to do list API with Gin and Gorm (with Postgres) Docker Clone this repository and run: docker-compose up You can then hit the followin

ansh-dev 3 Jul 10, 2022
A simple shopping list that keeps track of a users shopping list using charm.sh tools

Terminal Shopping List This repo is a practise project for learning practical Go. I have chosen to use a toolset called Charm as it provides a rich se

Ben Clarke 0 Jan 13, 2022
Command Line Alias Manager and Plugin System - Written in Golang

aly - Command Line Alias Manager and Packager Aly offers the simplest way to manage, share, and obtain command line aliases! Warning: This project is

Max Bridgland 21 Jun 16, 2022
Simple command-line snippet manager, written in Go.

pet : CLI Snippet Manager Simple command-line snippet manager, written in Go You can use variables (<param> or <param=default_value> ) in snippets. Ab

Teppei Fukuda 3.5k Jul 27, 2022
QOwnNotes command-line snippet manager.

QOwnNotes command-line snippet manager GitHub | Changelog | Releases You can use the QOwnNotes command-line snippet manager to execute command snippet

QOwnNotes 10 Jun 10, 2022
A simple command line functionality to convert your Kaspersky Password Manager exported file to CSV format

A simple command line functionality to convert your Kaspersky Password Manager exported file to CSV format

Vlad Plaiasu 7 Apr 20, 2022
It‘s a cmd-line tool like `make` and `task`, supporting nested args and alias using `cobra`

It‘s a cmd-line tool like `make` and `task`, supporting nested args and alias using `cobra`. It's a makefile alternative and a shell wrapper.

null 2 Apr 14, 2022
A CLI application that allows you to run a complete ToDo app from your terminal application

todo-cli This is a CLI application that allows you to run a complete ToDo app from your terminal application. As a user you can: Create a list of todo

Jonathan Reeves 0 Oct 11, 2021
Golang Todo App with rpc protocol,k8s,github actions

go-todo-app-rpc Golang Todo App with rpc protocol ,k8s, github actions using docker-compose locally docker-compose build docker-compose up Open http

Vyas Reddy 0 Nov 28, 2021
Simple todo app web application created with Go and MySQL.

TodoApp This is a project I've always wanted to do, it's simple, but to be says it involves to use different techniques in order to have a: authentica

null 1 Dec 21, 2021
Todo-cmd: an app you can add your tasks , edit or delete them

TODO CMD APP! ??‍♂️ Table of contents General info Update Requirements set-up usage General info todo-cmd is an app you can add your tasks , edit or d

dozheiny 3 Dec 13, 2021