You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.8 KiB
125 lines
2.8 KiB
# 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. |
|
|
|
## Requirements |
|
|
|
I don't want to re-invent the wheel. The following tools are used within this |
|
project: |
|
|
|
### FZF |
|
|
|
https://github.com/junegunn/fzf |
|
|
|
This is used for the fuzzy searching |
|
|
|
### Git |
|
|
|
https://git-scm.com/ |
|
|
|
Git is used for version controlling the knowledge base. If you don't want to use |
|
git, you can use the --nogit option |
|
|
|
### Git-LFS |
|
|
|
https://github.com/git-lfs/git-lfs |
|
|
|
Vanilla git is not very good at version controlling binary files. Git LFS allows |
|
assets to be stored separately from the main repository but referenced. |
|
|
|
### Bat |
|
|
|
https://github.com/sharkdp/bat |
|
|
|
This is used to provide syntax highlighting in previews |
|
|
|
### Sqlite3 |
|
|
|
This is used to index the documents in the knowledge base, making it fast to |
|
search by tag etc. |
|
|
|
## 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). |
|
|
|
|