{"id":13559620,"url":"https://github.com/yashs662/rust_kanban","last_synced_at":"2025-04-03T15:30:38.888Z","repository":{"id":63545446,"uuid":"547284911","full_name":"yashs662/rust_kanban","owner":"yashs662","description":"A kanban board for the terminal built with ❤️ in Rust","archived":false,"fork":false,"pushed_at":"2024-04-22T07:07:27.000Z","size":1429,"stargazers_count":89,"open_issues_count":0,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-04-23T10:33:03.636Z","etag":null,"topics":["hacktoberfest","kanban","rust","tui"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/rust-kanban","language":"Rust","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/yashs662.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2022-10-07T12:36:58.000Z","updated_at":"2024-06-04T03:20:13.764Z","dependencies_parsed_at":"2024-05-04T18:52:02.157Z","dependency_job_id":null,"html_url":"https://github.com/yashs662/rust_kanban","commit_stats":{"total_commits":153,"total_committers":1,"mean_commits":153.0,"dds":0.0,"last_synced_commit":"d324b1f697738cee528c1a3fbe4b77942a04e002"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yashs662%2Frust_kanban","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yashs662%2Frust_kanban/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yashs662%2Frust_kanban/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yashs662%2Frust_kanban/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yashs662","download_url":"https://codeload.github.com/yashs662/rust_kanban/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247027675,"owners_count":20871571,"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":["hacktoberfest","kanban","rust","tui"],"created_at":"2024-08-01T13:00:30.012Z","updated_at":"2025-04-03T15:30:38.849Z","avatar_url":"https://github.com/yashs662.png","language":"Rust","funding_links":[],"categories":["Applications","💻 Apps","Dev-Utilities"],"sub_categories":["Productivity","🚀 Productivity and Utilities"],"readme":"[![License](https://img.shields.io/crates/l/rust-kanban)](https://github.com/yashs662/rust_kanban/blob/main/LICENSE.md)\n[![Build](https://github.com/yashs662/rust_kanban/actions/workflows/build.yml/badge.svg)](https://github.com/yashs662/rust_kanban/releases)\n[![Issues](https://img.shields.io/github/issues/yashs662/rust_kanban)](https://github.com/yashs662/rust_kanban/issues)\n[![Crates.io](https://img.shields.io/crates/v/rust-kanban.svg)](https://crates.io/crates/rust-kanban)\n[![Downloads](https://img.shields.io/crates/d/rust-kanban)](https://crates.io/crates/rust-kanban)\n[![Stars](https://img.shields.io/github/stars/yashs662/rust_kanban)](https://github.com/yashs662/rust_kanban/stargazers)\n![rust_kanban](https://user-images.githubusercontent.com/66156000/232308620-3e96d818-81f3-4229-b58e-c09bc0b067e4.png)\n\n## Kanban App for the terminal written in rust\n\nThis kanban app will allow the user to be more productive by prioritizing tasks and achieving goals faster\n\n## Why?\n\nI am new to rust and wanted to learn the language in a project-oriented manner, feel free to drop feedback on my code😁. Another reason for building a TUI is that I spend the majority of my time in the terminal whether it is testing or running code or writing code in neovim. I haven't been able to find any other alternatives so I have started to make my own!\n\n## Contribution\n\nFeel free to make a pull request or make a new issue, I am open to suggestions ✌️\n\n\u003e I currently do not own a Mac so I am unable to test the app on Mac, if you can test it on Mac, please let me know if there are any issues.\n\n## TODO\n\n- [ ] BYODB - Bring your own DB (As I am not able to keep the free supabase db online at all times, an option for multiple database backends that can be configured)\n- [ ] Create a vs code extension, for adding quick notes and tasks, with / commands for specific boards cards or types etc (think more about this in future)\n- [ ] Create a parallel web ui for the app that can be hosted from the app itself with a startup flag (e.g. --web-ui --port 8080)\n- [ ] Optimize logger to handle high volumes of logs (app becomes sluggish when there are a lot of logs)\n- [ ] Make configuration for integer values more user-friendly (e.g. when changing the number of columns in the kanban board)\n- [ ] Implement animations for UI elements\n- [ ] Implement a way to sync with other services like notion\n- [ ] Write Tests\n- [ ] Add a Tutorial for new users (Preferably in the app itself with animations and highlighting of UI elements)\n- [ ] (Chore) Add documentation to functions and useful comments\n- [ ] (Chore) Refactor convoluted functions with many nested statements\n\n## Completed Features\n\n- [X] Add ability to move boards (e.g. move a board to the left or right)\n- [X] While adding a new tag show a list of existing tags to choose from (like a context menu)\n- [X] Implement selection in text input mode for editing text\n- [X] Add a date picker for the date field\n- [X] Unify all text input fields and improve the way they are handled (currently there are multiple ways to handle text input)\n- [X] Drag and Drop cards with the mouse\n- [X] Allow for vertical movement in text fields (e.g. card description)\n- [X] Encryption for Cloud Saves\n- [X] Implement Cloud saves\n- [X] Ability to scroll through logs\n- [X] Ability to Undo and Redo actions\n- [X] Ability to change date formats\n- [X] Ability to search for cards and boards in the command palette\n- [X] Ability to filter cards by tags\n- [X] Allow Card to be modified in Card View\n- [X] Implement a way to add custom colors (Theme support)\n- [X] Implement a way to interact with the kanban board using the mouse (Clicking, Scrolling are supported as of now)\n- [X] Added ability to export kanban data to JSON\n- [X] Implement a Command Palette (like in vs code (Ctrl + Shift + P)) as a way to interact with the app instead of using keybindings\n- [X] Implement previews for loading a save\n- [X] Toast Message Implementation -- (Inspired by [nvim-notify](https://github.com/rcarriga/nvim-notify))\n- [X] Improve Help Messages\n- [X] Custom Keybindings\n- [X] Implement the Kanban Boards ( the main UI basically )\n- [X] Auto Save on exit\n- [X] Save/Load Kanban state\n- [X] Hide/Un-hide UI elements\n- [X] Refactoring UI Logic\n- [X] Focusing and highlighting UI elements\n- [X] Input Handling\n- [X] Logging\n\n## Known Issues\n\n- [ ] Cursor for Card Tags and Comments is incorrect when tag is longer than available space\n\n## PSA (i.e. Public service announcement)\n\n- Cloud saves are now encrypted. Please keep your generated key safe. It is usually located in \"config/rust_kanban/kanban_encryption_key\" after signing up. If you lose your key, you will not be able to access your data (I Cannot see your data nor edit it/decrypt it). If you have lost your key, you will have to delete your data and generate a new key using the -g flag.\n- You can also provide an alternate key with the --encryption-key flag when starting the app. This will allow you to store your key in a password manager or a file that is not on disk.\n- linux example : rust-kanban --encryption-key $(cat ~/.config/rust_kanban/kanban_encryption_key)\n\n## How to use\n\n### Default Keybindings\n\n| Keybinding                 | Action                                    |\n| -------------------------- | ----------------------------------------- |\n| 'Ctrl + c' or 'q'          | Quit                                      |\n| 'Tab'                      | Next Focus                                |\n| 'BackTab'                  | Previous Focus                            |\n| 'c'                        | Configure                                 |\n| 'Up'                       | Move Up                                   |\n| 'Down'                     | Move Down                                 |\n| 'Right'                    | Move Right                                |\n| 'Left'                     | Move Left                                 |\n| 'i'                        | Take User Input (when filling out a form) |\n| 'Insert'                   | Exit user input mode                      |\n| 'h'                        | Hide UI Element                           |\n| 'Ctrl + s'                 | Save State                                |\n| 'b'                        | New Board                                 |\n| 'n'                        | New Card                                  |\n| 'd'                        | Delete Card                               |\n| 'D' or 'Shift + d'         | Delete Board                              |\n| '1'                        | Change Card Status to Completed           |\n| '2'                        | Change Card Status to Active              |\n| '3'                        | Change Card Status to Stale               |\n| '4'                        | Change Card Priority to High              |\n| '5'                        | Change Card Priority to Medium            |\n| '6'                        | Change Card Priority to Low               |\n| 'r'                        | Reset UI to Default                       |\n| 'm'                        | Go to Main Menu                           |\n| 'Ctrl + p'                 | Toggle Command Palette                    |\n| 'Esc'                      | Go to Previous View                       |\n| 't'                        | Clear Toast Messages                      |\n| 'Mouse Left Click'         | Select UI Element                         |\n| 'Mouse Middle Click'       | Open Command Palette                      |\n| 'Mouse Right Click'        | Go to Previous View                       |\n| 'Mouse Scroll Up'          | Scroll Up Cards                           |\n| 'Mouse Scroll Down'        | Scroll Down Cards (for cards)             |\n| 'Ctrl + Mouse Scroll Up'   | Scroll to the right (for boards)          |\n| 'Ctrl + Mouse Scroll Down' | Scroll to the left (for boards)           |\n| 'Ctrl + z'                 | Undo                                      |\n| 'Ctrl + y'                 | Redo                                      |\n\n## Available Themes\n\n- Default Theme\n  ![Default Theme](https://user-images.githubusercontent.com/66156000/232308319-125e990e-98e0-4960-ba7e-9492a2b4eaa7.png)\n- Light\n  ![Light](https://github.com/yashs662/rust_kanban/assets/66156000/7130e87a-b9bb-4a7f-8acb-b762e5f8522e)\n- Midnight Blue\n  ![Midnight Blue](https://user-images.githubusercontent.com/66156000/232308318-d61a84f3-0108-4572-8421-537c34c2f080.png)\n- Slate\n  ![Slate](https://user-images.githubusercontent.com/66156000/232308315-ed65cd3f-0b3d-49fa-9e56-2b684191bbdc.png)\n- Metro\n  ![Metro](https://user-images.githubusercontent.com/66156000/232308314-e735f84b-75f6-4c20-9196-81618040e7b6.png)\n- Matrix\n  ![Matrix](https://user-images.githubusercontent.com/66156000/232308312-56cebb9f-eb93-4a20-8758-4a1e9db96c35.png)\n- Cyberpunk\n  ![Cyberpunk](https://user-images.githubusercontent.com/66156000/232308321-4eeec180-6f05-4b49-948a-1166792ad25e.png)\n- Dracula\n  ![Dracula](https://github.com/yashs662/rust_kanban/assets/66156000/70d3cb2f-3373-419d-9fa7-dc772bf8fdad)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyashs662%2Frust_kanban","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyashs662%2Frust_kanban","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyashs662%2Frust_kanban/lists"}