- Go 77.6%
- CSS 15.9%
- Go Template 6.1%
- JavaScript 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| cmd/kb | ||
| db | ||
| http | ||
| .gitignore | ||
| db.go | ||
| error.go | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| rand.go | ||
| README.md | ||
kb
kb is a simple and secure internal knowledge base for growing teams. It's easy to set up, and it supports markdown and full-text search.
The central data structure is a Page, which has markdown text. Pages may link to any other page. Any logged-in user can edit any page. A history of edits for easy rollback is not currently recorded, but it's planned.
URLs for pages are immutable after create, so links always work.
The database backend is sqlite3 with fts5, since the workload is read-heavy. Note that sqlite3 does not enable full-text search by default -- this guide details how to compile it with full-text search.
Users sign up using their company Google sign-in restricted by the domain hostname. This ensures highly secure logins without needing to reinvent that wheel (2FA, rate limiting, password policies, provisioning, etc.) and dramatically simplifies kb's codebase. This is the only supported authentication mechanism currently, since that's what we use internally. Patches welcome!
HTTPS should be handled by a reverse proxy or some other external mechanism. srp is a great option.
Foreign dependencies are kept to a minimum.
Installation
go get evantann.com/kb/cmd/kb
Usage
kb -h yourcorp.com [-d kb.sql] [-p 8501]