openKB

openKB

openKB is a Markdown Knowledge base application (FAQ) built with Nodejs and ExpressJS. The application uses an embedded database (nedb)
by default but can also use a MongoDB server by changing the config (see below). The application is designed to be easy to use and install and based around search rather than nested categories. Simply search for what you want and select from the results.

Editor: openKB uses Markdown-it which is based off the CommonMark spec. This allows for the very best Markdown experience.

Image management: openKB allows for drag and drop of images into articles. The image is automatically uploaded to the server in the background. Google Chrome users can also paste images directly from the clipboard.

Whether to add HTML anchors to all heading tags for linking within articles or direct linking from other articles

typeahead_search

Add live typeahead search results on the search inputs

index_article_body

Whether to add the body of your articles to the search index (requires restart)

show_website_logo

Controls whether to show the website_title text or a logo located: /public/logo.png (by default).

website_description

A short website description when listing the homepage URL in search engines

database

The database type to use. See Database setup

google_analytics

Adds Google Analytics to public facing pages. Include the entire code from Google including the <script> tags.

Data sorting
You can control the sort order or articles. You can sort on anything but popular fields are kb_viewcount, kb_published_date, kb_last_updated or kb_votes

Setting the sort_by field in the config.js like so:

{field: 'kb_viewcount', order: -1};

Valid order values are: -1 or 1

1 = ascending order

-1 = decending order

Database setup

By default, openKB uses an embedded Javascript database called nedb for easy installation. This works really well for small to medium sized applications but
has it's limitations if you wanted to scale your application to handle many articles and concurrent users. For this reason, openKB also supports using a MongoDB server by simply changing the config file.

Here is the config.js for the embedded database (NeDB):

"database": {
"type": "embedded"
}

Here is an example config.js for a MongoDB server. You can use your own localhost MongoDB instance or you may choose a hosted MongoDB server like mLab.

Note: An API access token is required to be able to use the API. If the API is turned on without a token, all requests will reject. Please use a hard to guess token

The return Object from the API will be as follows:

{
"result": false,
"errors": [
"Any error messages"
]
}

The errors value will have any validation or error message which have occured. The result is an approval boolean. Eg: true was successful and false wasn't.

Migrating from NeDB to MongoDB (experimental)

You can upgrade from NeDB to Mongodb by running the following command:

Note: You will first need to setup a valid MongoDB connection as per the "Database setup" instructions.

npm run-script dbUpgrade

please raise a Github issue if errors are encountered

Typeahead search

The typeahead search is great! Your user types in the word or phrase and the results pop up under the search box. But... One of the things to consider is that
there is a little more data being transmitted from server to browser to enable this functionality. This is not normally a big issue for most browsers
as the data is cached but you may run into issues if the number of articles in your app is quite large.

As a general rule there is about 3KB of compressed data being transferred from server to browser for 20 articles with long titles and keywords. If you have
hundreds of articles, the amount of data will increase and could cause performance issues. It is something to consider if your app seems to slow down once the
article numbers increase. If this is the case, you can simply just turn it off.