{"id":50429212,"url":"https://github.com/schak04/priorify","last_synced_at":"2026-05-31T13:00:58.879Z","repository":{"id":359750385,"uuid":"1236908199","full_name":"schak04/priorify","owner":"schak04","description":"A terminal productivity app that helps users prioritise their tasks. Currently working on v2.0.0 (TUI).","archived":false,"fork":false,"pushed_at":"2026-05-30T10:14:23.000Z","size":3788,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T12:09:01.180Z","etag":null,"topics":["bash-scripting","c-plus-plus","cmake","cross-platform","data-structures","ftxui","productivity-app","productivity-tool","shell-scripting","sqlite","terminal-first","terminal-ui","tui","tui-app"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schak04.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-12T17:30:46.000Z","updated_at":"2026-05-30T10:35:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/schak04/priorify","commit_stats":null,"previous_names":["schak04/priorify"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/schak04/priorify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schak04%2Fpriorify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schak04%2Fpriorify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schak04%2Fpriorify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schak04%2Fpriorify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schak04","download_url":"https://codeload.github.com/schak04/priorify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schak04%2Fpriorify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33731998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bash-scripting","c-plus-plus","cmake","cross-platform","data-structures","ftxui","productivity-app","productivity-tool","shell-scripting","sqlite","terminal-first","terminal-ui","tui","tui-app"],"created_at":"2026-05-31T13:00:58.104Z","updated_at":"2026-05-31T13:00:58.870Z","avatar_url":"https://github.com/schak04.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Priorify\n\n![C++](https://img.shields.io/badge/C++-blue?style=flat-square\u0026logo=c%2B%2B\u0026logoColor=white)\n![SQLite](https://img.shields.io/badge/SQLite-07405E?style=flat-square\u0026logo=sqlite\u0026logoColor=white)\n![CMake](https://img.shields.io/badge/CMake-064F8C?style=flat-square\u0026logo=cmake\u0026logoColor=white)\n![Bash](https://img.shields.io/badge/Bash-4EAA25?style=flat-square\u0026logo=gnu-bash\u0026logoColor=white)\n![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square\u0026logo=linux\u0026logoColor=black)\n\nPriorify is a priority-based task manager built in C++, focused on performance, simplicity, and productivity.  \nWhat started as a basic console app has evolved into a modern, keyboard-driven **Terminal User Interface (TUI)** tailored for terminal-heavy workflows.\n\n---\n\n## Vision\n\nThis project is designed to be:\n- **Fast:** Minimal overhead with in-memory caching and instant operations.\n- **Keyboard-First:** No mouse needed, fully optimised for Vim-style (h/j/k/l) and standard navigation.\n- **Focused:** Prioritisation over clutter.\n- **Native to Programmers:** Created for programmers who enjoy being in the terminal.\n\nThrough this project, I intend to improve the way I track my tasks, solving a personal productivity problem, and I hope it helps others too.\n\n---\n\n## Features (v2.0.0)\n\n- Modern TUI\n- **Vim-like Navigation:** `h`/`j`/`k`/`l`\n- Custom pill toggles for selecting task status and priority.\n- **Task Management:** Add, update, complete, and delete (and clear all) tasks instantly.\n- **Visual Feedback:** Colour-coded priority bars and active-state highlights.\n- **Persistent Storage:** SQLite database safely stores all task data.\n- **Performance Optimised:** In-memory caching minimises database polling.\n- **About Screen:** Press `?` on the dashboard to see what the app is about.\n\n---\n\n## Technologies Used\n\n- **Language:** C++\n- **Database:** SQLite3\n- **TUI Framework:** [FTXUI](https://github.com/ArthurSonzogni/ftxui)\n- **Build System:** CMake\n- **Build Automation:** Bash Scripting\n\n---\n\n## Usage Instructions\n\n### Prerequisites\n- CMake\n- A C++ compiler supporting C++20 or higher\n\n### On Linux, macOS, and Unix-like Systems\n\n#### 1. Clone the Repository\n```bash\ngit clone https://github.com/schak04/priorify.git\ncd priorify\n```\n\n#### 2. Install (Recommended)\n\nRun the install script:\n\n```bash\nchmod +x scripts/install.sh\n./scripts/install.sh\n```\n\nOnce done, you can launch the app from anywhere in your terminal:\n\n```bash\npriorify\n```\n\n*(**Note:** Ensure `~/.local/bin` is in your system's PATH)*\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eClick here if you need help with it\u003c/b\u003e\u003c/summary\u003e\n\nTo add `~/.local/bin` to your PATH, open your shell config file (like `~/.bashrc` or `~/.zshrc`) and add this line at the bottom:\n\n```bash\nexport PATH=\"$HOME/.local/bin:$PATH\"\n```\n\nThen, reload your shell (or just restart your terminal):\n```bash\nsource ~/.bashrc  # or ~/.zshrc\n```\n\u003c/details\u003e\n\n#### Alternative: Build \u0026 Run Locally\n\nIf you prefer not to install it globally, you can build and run it manually:\n\n```bash\nchmod +x scripts/build.sh\n./scripts/build.sh\n```\n\nAlways run the executable from the project root to ensure the database path (`data/tasks.db`) resolves correctly:\n\n```bash\n./bin/priorify\n```\n\n#### Uninstall\n\nIf you ever wish to remove this app from your system, you can run the uninstall script from the cloned repository. It will safely remove the app (and also ask if you want to keep or delete your tasks database):\n\n```bash\nchmod +x scripts/uninstall.sh\n./scripts/uninstall.sh\n```\n\n### Keybindings Guide\n- `a`: Add a new task\n- `e`: Edit selected task\n- `d`: Delete selected task (requires confirmation)\n- `D`: Clear all tasks (requires confirmation)\n- `c`: Toggle completion status\n- `j`/`k` or `Up`/`Down`: Navigate lists and form fields\n- `h`/`l` or `Left`/`Right`: Cycle through radio options or should I say... pills (Status/Priority)\n- `Enter`: Save / Confirm\n- `q`/`Esc`: Quit the app when in the dashboard\n- `?`: Open the About screen\n- `Spacebar` (when on the Due Date field in the **add/edit-task** screens): Open the calendar picker\n- `Esc`: Return to the dashboard when inside the **add/edit-task screens** or **delete/clear-all confirmation screens**\n\n\u003e [!NOTE]  \n\u003e The app is not available for Windows yet.  \n\u003e However, Windows users can use [WSL (Windows Subsystem for Linux)](https://learn.microsoft.com/en-us/windows/wsl) to run the app.\n\n---\n\n## System Design\n\n### High-Level Design\n- **System Architecture:**  \n![System Architecture](docs/diagrams/architecture.png)\n\n- **UML Use Case Diagram:**  \n![UML Use Case Diagram](docs/diagrams/use-case.png)\n\n### Low-Level Design\n- **Sequence Diagram:**  \n![Sequence Diagram](docs/diagrams/sequence-diagram.png)\n\n---\n\n## References\n\n### Main\n- **C++:** [**cppreference**](https://en.cppreference.com/cpp/language)\n- **SQLite:** [**documentation**](https://sqlite.org/docs.html)\n- **FTXUI:** [**documentation**](https://arthursonzogni.github.io/FTXUI)\n- **CMake:** [**documentation**](https://cmake.org/cmake/help/latest/index.html) and [**tutorial**](https://cmake.org/cmake/help/latest/guide/tutorial/index.html#guide:CMake%20Tutorial)\n- **Chrono:** [**GfG**](https://www.geeksforgeeks.org/cpp/chrono-in-c) and [**cppreference**](https://en.cppreference.com/cpp/chrono)\n\n### More\n- [**StackOverflow** - **difference between include guards and #pragma once**](https://stackoverflow.com/questions/22193338/what-is-the-difference-between-ifndef-and-pragma-once-and-what-does-the-same)\n\n---\n\n## ASCII Art\n\n\u003e I tried using different sites (such as: https://patorjk.com/software/taag, https://coddy.tech/tools/ascii-art-generator, etc.) to create ASCII art from typed text, but they were all too gigantic, and even when small, they didn't match the image I had in mind. The sites are great though, no complaints. I just wanted the logo to fit within 2 lines, so I used Unicode block elements to manually create the ASCII art myself for the app's name (visible on the dashboard). \n\u003e Characters Used:\n\u003e - █ (Full Block: U+2588)\n\u003e - ▀ (Upper Half Block: U+2580)\n\u003e - ▄ (Lower Half Block: U+2584)\n\n**Reference:** [**WikiPedia - Block Elements**](https://en.wikipedia.org/wiki/Block_Elements)\n\n---\n\n## Author\n\n\u0026copy; 2025-2026 [Saptaparno Chakraborty](https://github.com/schak04).  \nAll rights reserved.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschak04%2Fpriorify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschak04%2Fpriorify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschak04%2Fpriorify/lists"}