{"id":13400368,"url":"https://github.com/ajaxray/geek-life","last_synced_at":"2025-04-05T05:08:16.391Z","repository":{"id":45113839,"uuid":"265963739","full_name":"ajaxray/geek-life","owner":"ajaxray","description":"The Todo List / Task Manager for Geeks in command line","archived":false,"fork":false,"pushed_at":"2023-12-09T19:08:00.000Z","size":1906,"stargazers_count":483,"open_issues_count":26,"forks_count":29,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-07-31T19:24:16.890Z","etag":null,"topics":["cli-app","command-line","command-line-tool","geeks","golang","task-manager","terminal-ui","todoapp","todolist","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ajaxray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-05-21T22:23:14.000Z","updated_at":"2024-07-29T18:57:18.000Z","dependencies_parsed_at":"2023-12-09T20:23:44.448Z","dependency_job_id":null,"html_url":"https://github.com/ajaxray/geek-life","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajaxray%2Fgeek-life","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajaxray%2Fgeek-life/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajaxray%2Fgeek-life/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajaxray%2Fgeek-life/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ajaxray","download_url":"https://codeload.github.com/ajaxray/geek-life/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289428,"owners_count":20914464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli-app","command-line","command-line-tool","geeks","golang","task-manager","terminal-ui","todoapp","todolist","tui"],"created_at":"2024-07-30T19:00:51.244Z","updated_at":"2025-04-05T05:08:16.359Z","avatar_url":"https://github.com/ajaxray.png","language":"Go","funding_links":[],"categories":["Go","tui","\u003ca name=\"todo-manager\"\u003e\u003c/a\u003eTodo managers"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"media/geek-life-logo.png\" align=\"center\" alt=\"Geek-life Logo\"\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e The CLI To-Do List / Task Manager for Geeks \u003c/h1\u003e\n\n\u003ca href=\"https://www.producthunt.com/posts/geek-life?utm_source=badge-featured\u0026utm_medium=badge\u0026utm_souce=badge-geek-life\" target=\"_blank\"\u003e\u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=205655\u0026theme=light\" alt=\"Geek-life - The To-do List / Task Manager for Geeks in command line! | Product Hunt Embed\" style=\"width: 125px; height: 27px;\" width=\"125px\" height=\"27px\" /\u003e\u003c/a\u003e\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Go Report Card](https://goreportcard.com/badge/github.com/ajaxray/geek-life?version=latest)](https://goreportcard.com/report/github.com/ajaxray/geek-life)\n\n:technologist: Developer / DevOps / Sysadmin? A command line hero?     \n:computer: Live with the dark terminal?  \n:memo: Think in Markdown?  \n\n**Finally!** A full featured task manager for YOU! \n\n![Geek-life overview](media/geek-life_v1_static.png \"Geek-life overview\")\n\u003ca href=\"https://raw.githubusercontent.com/ajaxray/geek-life/master/media/geek-life_v1.gif\" target=\"_blank\"\u003eClick to see it moving (GIF)\u003c/a\u003e\n \n\n### :crystal_ball: Highlights\n\n- For ninjas - do things faster with keyboard shortcuts\n- Markdown lovers, feel at :house:! You'll see markdown everywhere.\n- Full featured (almost) - Projects, Tasks, due-dates, task notes...\n- A \u003c4MB app that takes \u003c1% CPU and ~7MB memory \u003csup\u003e1\u003c/sup\u003e - how much lighter you can think?\n- Task note editor with markdown syntax highlighting\u003csup\u003e2\u003c/sup\u003e\n- Full mouse support\n\n### :dart: Roadmap\n- [x] Create Project\n- [x] Delete Project\n- [ ] Edit Project\n- [x] Create Task (under project)\n- [x] Set Task due date (as `yyyy-mm-dd`) with shortcut\n- [x] Set Task due date with quick input buttons (today, +1 day, -1 day)\n- [x] Update Task Title\n- [x] Tasklist items should indicate status (done, pending, overdue) using colors \n- [x] Export Tasks (Copy title, dueDate and description to clipboard as Markdown)\n- [ ] Pin Tasks\n- [x] Shortcut for Adding new Project and Task\n- [x] Global shortcuts for jumping to Projects or Tasks panel anytime\n- [x] Cleanup all completed tasks of project\n- [x] Task note editor should syntax highlight (markdown) and line numbers  \n- [x] Status bar for common shortcuts\n- [x] Status bar should display success/error message of actions\n- [x] Status bar may display quick tips based on focused element\n- [x] Dynamic lists \n    - Today - Due Today and overdue \n    - Tomorrow \n    - Upcoming - Due in next 7 days\n    - Unscheduled - tasks without due date\n- [ ] Integrations\n    - todo.txt (coming soon...)\n    - Google Tasks \n    - (Share your ideas)\n- [ ] Time tracking\n\n### :rocket: Ready for action (installing and running)\n\nIt's just a single binary file, **no external dependencies**. \nJust download the appropriate version of [executable from latest release](https://github.com/ajaxray/geek-life/releases) for your OS. \nThen rename and give it permission to execute.   \nFor example:\n```bash\nmv geek-life_linux-amd64 geek-life  \nsudo chmod +x geek-life\n./geek-life\n```\n\nI recommend installing it globally (to run from any directory of your system). It's easy, just put it in your systems $PATH directory.\n```bash\nsudo mv geek-life /usr/local/bin/geek-life\ngeek-life\n```\n\nDone! *Manage your tasks your way!* \n\n## :keyboard: Keyboard shortcuts\n\nShortcut key for a pane/element will be **marked with underline**.\n\nSome shortcuts are global, some are contextual. \nContextual shortcuts will be applied according to focused pane/element.  \nYou'll see a currently focused pane bordered with double line. \n \n\nIn case writing in a text input (e,g, new project/task, due date), you have to `Enter` to submit/save. \n\n| Context            | Shortcut            | Action                                               |\n| ---                | :---:               | ---                                                  |\n| Global             | `p`                 | Go to Project list                                   |\n| Global             | `t`                 | Go to Task list                                      |\n| Projects           | `n`                 | New Project                                          |\n| Projects           | `↑`/`k`/`Shift+Tab` | Go up in project list                                |\n| Projects           | `↓`/`j`/`Tab`       | Go down in project list                              |\n| Tasks              | `n`                 | New Task                                             |\n| Tasks              | `Esc`/`h`           | Go back to Projects Pane                             |\n| Tasks              | `↑`/`k`/`Shift+Tab` | Go up in task list                                   |\n| Tasks              | `↓`/`j`/`Tab`       | Go down in task list                                 |\n| Tasks              | `c`                 | Clear completed tasks                                |\n| Tasks              | `d`                 | Delete Project                                       |\n| Task Detail        | `Esc`/`h`           | Go back to Tasks Pane                                |\n| Task Detail        | `Space`             | Toggle task as done/pending                          |\n| Task Detail        | `d`                 | Set Due date                                         |\n| Task Detail        | `o`                 | Set Due date to today                                |\n| Task Detail        | `+`                 | Due date plus 1                                      |\n| Task Detail        | `-`                 | Due date minus 1                                     |\n| Task Detail        | `↓`/`↑`             | Scroll Up/Down the note editor                       |\n| Task Detail        | `e`                 | Activate note editor for modification                |\n| Task Detail        | `v`                 | Edit task details in external editor (default `vim`) |\n| Task Detail        | `r`                 | Rename Task Title                                    |\n| Task Detail        | `x`                 | Export Task to clipboard                             |\n| Active Note Editor | `Esc`               | Deactivate note editor and save content              |\n\n**Tips about using shortcuts efficiently:**  \n\nThe interface has 3 primary panels\n1. [**P**]rojects/Task lists\n2. [**T**]asks of selected project or Tasklist\n3. [**D**]etails/actions of selected Project or Task\n\nThe following diagram shows navigation shortcuts between the panels.\n```\n+------+----------------------+-----------------------+\n|  P   |         T            |         D             |\n|      |                      |                       |\n|    Entr=\u003e    ↓   ↑        Entr=\u003e                    |\n|      |       /   /          |                       |\n|   \u003c=Esc      j   k        \u003c=Esc                     |\n|      |                      |                       |\n+------+----------------------+-----------------------+\n```\n\nSo, what it's trying to visualize is -\n- Selecting an item with `Enter` will move you to right panel. That means - \n    - Selecting a Project will load it's tasks and move to Tasks panel\n    - Selecting a Task will load task detail and move to Detail panel\n- Use `Esc` to move back to left panel. From Details to Tasks to Projects.\n- To navigate a list (Project list or Task list), \n    - Use `↓` or `j` or `Tab` to go down\n    - Use `↑` or `k` or `Shift+Tab` to go up  \n\nSome More hints:\n- If you are a vim user, think like -`j`/`k` for up/down list and `h` for go left \n- Think `Esc` as a \"step back\" - to previous pane in most cases.\n- When you're in a list (Projects or Tasks), `Enter` will load currently selected item.\n- After creating new Project, focus will automatically move to Tasks. Start adding tasks immediately by pressing `n`.   \n- After creating new Task, focus will stay in \"new task\" input. So that you can add tasks quickly one after another. \n- After creating new Task, Press `Esc` when you're done creating tasks. \n\n## :hammer_and_wrench: Building blocks\n\n- Made with :heart: and [golang](https://golang.org/) 1.14 *(you don't need golang to run it)*\n- Designed with [tview](https://github.com/rivo/tview) - interactive widgets for terminal-based UI\n- Task Note editor made with [femto](https://github.com/pgavlin/femto)  \n- Datastore is [storm](https://github.com/asdine/storm) - a powerful toolkit for [BoltDB](https://github.com/etcd-io/bbolt)\n\n### Contribute\n\nIf you fix a bug or want to add/improve a feature, \nand it's aligned with the focus (merging with ease) of this app, \nI will be glad to accept your PR. :) \n\n## :bulb: You may ask...\n\n#### :question: Where is the data stored? Can I change the location?\n\nBy default, it will try to create a db file in you home directory. \n\nBut as a geek, you may try to put it different location (e,g, in your dropbox for syncing).\nIn that case, just mention `DB_FILE` as an environment variable.  \n```bash\nDB_FILE=~/dropbox/geek-life/default.db geek-life\n```\n**UPDATE:** For Windows users, setting ENV variable is not so straight forward. \nSo, added a flag `--db-file` or `-d` to specify DB file path from command line easily. \n ```bash\ngeek-life --db-file=D:\\a-writable-dir\\tasks.db\n```\n\n\n#### :question: How can I suggest a feature?\n\nJust [post an issue](https://github.com/ajaxray/geek-life/issues/new) describing your desired feature/enhancement \nand select `feature` label.\n\nAlso, incomplete features in the current roadmap will be found in issue list. \nYou may :thumbsup: issues if you want to increase priority of a feature.\n\n---\n[![JetBrains Logo](media/jetbrains.png)](https://www.jetbrains.com/)  \nDeveloped with [GoLand](https://www.jetbrains.com/go/).  \nThanks to [JetBrains](https://www.jetbrains.com/) for sponsoring [Licenses for Open Source Development](https://www.jetbrains.com/community/opensource/#support). \n\n\n---\n### Footnotes \n1. In my Macbook Air, 1.6 GHz Dual-Core Intel Core i5, RAM: 8 GB 1600 MHz DDR3\n2. Using [monakai](https://github.com/sickill/vim-monokai) color scheme for markdown syntax\n---\n\u003e \"This is the Book about which there is no doubt, a guidance for those conscious of Allah\" - [Al-Quran](http://quran.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajaxray%2Fgeek-life","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fajaxray%2Fgeek-life","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajaxray%2Fgeek-life/lists"}