• Stars
    star
    447
  • Rank 94,381 (Top 2 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Todo List / Task Manager for Geeks in command line

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
    • Unscheduled - tasks without due date
  • Integrations
    • todo.txt (coming soon...)
    • 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
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

  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=>                    |
|      |       /   /          |                       |
|   <=Esc      j   k        <=Esc                     |
|      |                      |                       |
+------+----------------------+-----------------------+

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 to move back to left panel. From 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

UPDATE: 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.db

โ“ 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.


JetBrains Logo
Developed with GoLand.
Thanks to JetBrains for sponsoring Licenses for Open Source Development.


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

More Repositories

1

markpdf

Watermark PDF files using image or text
Go
140
star
2

php-watermark

Add text or image Watermark on image and PDF files
PHP
123
star
3

marionette-boilerplate

Let's start the dance! This boilerplate is a ready setup for starting your next awesome javascript app in minutes. Backbone + Marionette + RequireJS + Twitter Bootstrap
JavaScript
61
star
4

merge2pdf

Merge Image and PDF files (optionally with selective pages) with lossless quality
Go
61
star
5

Kohana-Log-Viewer

Shows log files of Kohana PHP Framework with a beautiful interface
PHP
52
star
6

short-code

ShortCode generator for PHP. Create short, reversible or random, hash like codes.
PHP
29
star
7

static-pdo

Simple PHP PDO Wrapper - light, static, easy
PHP
15
star
8

bootstrap-file-field

jQuery plugin to enhance html file input to look like bootstrap button, showing image thumb and apply useful restrictions (e.g. file types, size, number of files etc.)
HTML
12
star
9

shared-checklist

Shared Checklist - Firebase Realtime Database example
HTML
6
star
10

GulpBusterBundle

Symfony Bundle to integrate gulp-buster gulp plugin. It's a cache busting utility for gulp based asset management.
PHP
5
star
11

docker-compose-laravel

Ready made development environment for Laravel 6.x using docker-compose
Dockerfile
5
star
12

jruby-swing

A small JRuby desktop app that converts a number from decimal/hex/binary/octal to decimal/hex/binary/octal formats. It's just an example of how to make Desktop application with JRuby and Swing
Ruby
4
star
13

Kohana-Twitter-Bootstrap-boilarplate

Start a Kohana project with integrated Twitter Bootstrap in minutes.
PHP
3
star
14

sf28_lte2

Symfony 2.8 with Admin LTE 2 - A boilerplate to start new project instantly with pre-built common features!
PHP
3
star
15

four-in-a-row

A Basic Four-In-A-Row Game
Go
2
star
16

magic

Magic - PSR 11 compliant tiny Dependency Injection Container
PHP
2
star
17

session-timer

A Chrome Extension to rescue your time by notifying at a configured time limit while browsing time killing sites.
JavaScript
1
star
18

slim-magic

A tiny, sample blog with Slim Framework using magic Dependency Injection Container.
PHP
1
star
19

ajaxray.marionette-boilerplate.io

This boilerplate is a ready setup for starting your next awesome javascript app in minutes.
JavaScript
1
star
20

phonegap

1
star
21

docker-slate

A slim, docker-only setup for Slate API Docs generator based on pre-built docker images
SCSS
1
star
22

PHP-Universal-Feed-Generator

PHP Universal Feed Generator (supports RSS 1.0, RSS 2.0 and ATOM)
1
star