# Knowledge Base This is a script that I use to manage my personal knowledge base. I have yet to find a tool that fits my requirements / desires so I decided to build one. This is still in early stages of development so expect braking changes to come if you use it. ## Setup After cloning the repository, you can run ``` sudo make install ``` To initialise, run ``` kb init ``` This will create the necessary folders and create an sqlite database to store the index in ## Usage List tracked files with `kb list` ![Listing Files](./assets/list.rec.gif) View a file with `kb view`. You can use the filename, the title or the id to specify the file. ![View a file](./assets/view.rec.gif) Create a new file with `kb new`. This will open your default editor. ![New file](./assets/new.rec.gif) Delete a file with `kb delete`. ![Delete a file](./assets/del.rec.gif) Fuzzy search for files using `kb fuzzy` (or just `kb` without augments). From the fuzzy search, you can use `ctrl-v` to view, `ctrl-e` to edit, `ctrl-d` to delete or `ctrl-n` to create a new file with the current query as the name. ![Fuzzy search](./assets/fuzzy.rec.gif) ## Goals ### Mostly Plain Text Most of my notes are currently in Markdown. This has a couple of advantages for me: * I can read them anywhere * I can version control them with Git * They can be grepped There may be some exceptions. I may wish to include links or images which I will version control with Git LFS; but for the most part, my notes are plain text. ### Tags Before starting this project, my notes were organised into folders. Unfortunately, this makes storing articles or notes that apply to different areas difficult. I would prefer a tag based system. This would allow a file to have multiple tags assigned to it. ### Fast I want to be able to retrieve my notes quickly by tag or by title. To do this, this tool will index notes using an SQLite database. This will not be version controlled. ### Don't re-invent the wheel I will be building on top of already great, fast tools such as [RipGrep](https://github.com/BurntSushi/ripgrep) and [FZF](https://github.com/junegunn/fzf).