|
|
|
# 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
|
|
|
|
|
|
|
|
## 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).
|
|
|
|
|