Building a super simple document management system

At Olyro we have implemented a ISO 9001:2015 conformant quality management system (QMS). It is basically a mix of word/pdf files for the procedures and notion.so documents for the actual project specific documents and records. And while notion provides a lot features for building a document management system we are not 100% happy with it.

The API has just arrived in Beta form (even after over 2 years of using notion), the responsiveness even though it has been improved is still lacking and we have had one or two outages (thankfully not during an audit). It also lacks features for versioning/tagging documents properly (QMS documents/procedures must have a version + be released properly by an authorized person). It can be build manually of course, but that is far from ideal.

That got me thinking of a more simple solution. I wanted a statically generated document management system that is very simple and provides only a couple of features:

It took me about a week to build a simple prototype with about 100 lines of python for the static site generator and another 100 lines of Go for the server (static file serving + endpoints for converting/searching etc.). The heavy lifting of converting is done by pandoc. Search is done with ripgrep (--json to the rescue). The system works without javascript and uses only a bit of css (mostly taken from mvp.css). I am quite happy with the result. It works as intended and is small enough to be ported to pretty much any language. It obviously won’t scale beyond a couple of thousand documents, but for a lot of QMS implementations that would be plenty.

For now we will of course keep using notion, since all of our existing documents already live there. And notion provides superior editing capabilities (let alone the database functionality which is super powerful). But I will explore this system further for private use.

The tree on the left side, the search in the center and the versions on the right
The tree on the left side, the search in the center and the versions on the right
Export and editing functionality at the bottom
Export and editing functionality at the bottom