{"id":25188603,"url":"https://github.com/kleinpanic/todo_task_manager","last_synced_at":"2025-04-04T10:14:27.035Z","repository":{"id":257976634,"uuid":"864784874","full_name":"kleinpanic/todo_task_manager","owner":"kleinpanic","description":"Improved  lowlevel todo app using ncurses.","archived":false,"fork":false,"pushed_at":"2024-10-16T17:06:43.000Z","size":112,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T20:36:44.710Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kleinpanic.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-29T06:41:46.000Z","updated_at":"2024-10-16T17:06:47.000Z","dependencies_parsed_at":"2024-10-18T02:17:23.929Z","dependency_job_id":null,"html_url":"https://github.com/kleinpanic/todo_task_manager","commit_stats":null,"previous_names":["kleinpanic/todo_task_manager"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleinpanic%2Ftodo_task_manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleinpanic%2Ftodo_task_manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleinpanic%2Ftodo_task_manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleinpanic%2Ftodo_task_manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kleinpanic","download_url":"https://codeload.github.com/kleinpanic/todo_task_manager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247157276,"owners_count":20893221,"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":[],"created_at":"2025-02-09T20:29:16.097Z","updated_at":"2025-04-04T10:14:27.009Z","avatar_url":"https://github.com/kleinpanic.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Todo CLI Application\n\nA command-line based todo list application built with C and ncurses. This application allows you to manage tasks directly from your terminal with an intuitive interface.\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n  - [Dependencies](#dependencies)\n  - [Building the Application](#building-the-application)\n  - [Installing the Application](#installing-the-application)\n- [Usage](#usage)\n  - [Key Bindings](#key-bindings)\n  - [Task Fields](#task-fields)\n- [Data Storage](#data-storage)\n- [Additional Information](#additional-information)\n- [Uninstallation](#uninstallation)\n- [Contributing](#contributing)\n\n## Features\n\n- **Add Tasks**: Create new tasks with a title, category, due date, priority, and recurrence.\n- **Edit Tasks**: Modify existing tasks.\n- **Delete Tasks**: Remove tasks from your list.\n- **Complete Tasks**: Mark tasks as completed or pending.\n- **Search Tasks**: Find tasks by their title.\n- **Sort Tasks**: Sort tasks by priority or due date.\n- **Undo Actions**: Undo the last action performed.\n- **Recurring Tasks**: Set tasks to recur at specified intervals.\n- **Color-coded Tasks**: Visual cues for overdue or due soon tasks.\n- **Persistent Storage**: Tasks are saved between sessions.\n\n## Installation\n\n### Dependencies\n\nEnsure that you have the following dependencies installed on your system:\n\n- **gcc**: GNU Compiler Collection for compiling the C code.\n- **make**: Utility for directing compilation.\n- **ncurses**: Library for creating text-based user interfaces.\n- **pthread**: POSIX threads library for multi-threading support.\n\n**On Debian/Ubuntu:**\n\n```bash\nsudo apt-get update\nsudo apt-get install build-essential libncurses5-dev libpthread-stubs0-dev\n```\n\n**On Fedora:**\n\n```bash\nsudo dnf install gcc make ncurses-devel glibc-devel\n```\n\n**On Arch Linux:**\n\n```bash\nsudo pacman -S base-devel ncurses\n```\n\n### Building the Application\n\n1. **Clone the Repository**\n\n   ```bash\n   git clone https://github.com/kleinpanic/todo_task_manager.git\n   cd todo_task_manager\n   ```\n\n2. **Build the Application**\n\n   ```bash\n   make\n   ```\n\n   This will compile the source code and create the executable in the `build/` directory.\n\n### Installing the Application\n\nOptionally, you can install the application system-wide:\n\n```bash\nsudo make install\n```\n\nThis will copy the executable to `/usr/local/bin/todo` and make it accessible from anywhere in your terminal.\n\n## Usage\n\nRun the application from the `build/` directory:\n\n```bash\n./todo\n```\n\nOr, if installed system-wide:\n\n```bash\ntodo\n```\n\n### Key Bindings\n\n- **Navigation**\n  - `j`: Move down in the task list.\n  - `k`: Move up in the task list.\n- **Actions**\n  - `a`: Add a new task.\n  - `d`: Delete the selected task.\n  - `e`: Edit the selected task.\n  - `c`: Toggle completion status of the selected task.\n  - `s`: Search for a task by title.\n  - `P`: Sort tasks by priority (toggle ascending/descending).\n  - `S`: Sort tasks by due date (toggle ascending/descending).\n  - `u`: Undo the last action.\n  - `h`: Show the help menu.\n  - `q`: Quit the application.\n\n### Task Fields\n\nWhen adding or editing a task, you'll be prompted for the following information:\n\n- **Title**: A brief description of the task (cannot be empty).\n- **Category**: The category or project the task belongs to (cannot be empty).\n- **Due Date**: The due date in `YYYY-MM-DD` format or `N/A` if not applicable.\n- **Recurrence**: How often the task recurs (`none`, `daily`, `weekly`, `biweekly`, `monthly`, `yearly`).\n- **Priority**: An integer between 1 (highest priority) and 5 (lowest priority).\n\n## Data Storage\n\nYour tasks are stored in a plain text file located at:\n\n```\n~/.local/share/todo/tasks.txt\n```\n\nThe application ensures that this directory and file are created if they do not exist.\n\n**Log File**\n\nAny logs or error messages are recorded in:\n\n```\n~/.local/share/todo/todo_app.log\n```\n\n## Additional Information\n\n- **Customizing Colors**: You can modify the color schemes used for task highlighting by editing the `init_ncurses()` function in `task.c`. Adjust the `init_pair` functions to change colors as desired.\n\n- **Extending Functionality**: Feel free to fork the repository and add new features or improve existing ones. Contributions are welcome!\n\n## Uninstallation\n\nTo remove the application and its associated files:\n\n1. **Remove the Executable**\n\n   If installed system-wide:\n\n   ```bash\n   sudo make uninstall\n   ```\n\n2. **Delete Configuration and Data Files**\n\n   ```bash\n   rm -rf ~/.local/share/todo\n   ```\n\n   **Warning**: This will permanently delete all your saved tasks.\n\n## Contributing\n\nContributions are welcome! If you have ideas for new features or improvements, feel free to fork the repository and submit a pull request. Let's make this application even better together.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkleinpanic%2Ftodo_task_manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkleinpanic%2Ftodo_task_manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkleinpanic%2Ftodo_task_manager/lists"}