Presenting Chimera-md

Chimera-md screenshot

Over the last few weeks I have been building my first Rust-based web application. There’s still some work to be done, but it is ready enough for a public debut. I am proud to present Chimera-md, a Markdown-aware web server.

My intention is to build it as a Docker image to run on my NAS, but so far it’s only distributed as source through Github. Like most Rust projects, it can be built with cargo run, although you may want to configure some settings before you do that.

Parameters are set either via command line or environment (as is common with Docker images).

--document-root <DOCUMENT_ROOT>  [env: CHIMERA_DOCUMENT_ROOT=/var/chimera-md/www]
--template-root <TEMPLATE_ROOT>  [env: CHIMERA_TEMPLATE_ROOT=/var/chimera-md/template]
--site-title <SITE_TITLE>        [env: CHIMERA_SITE_TITLE=Chimera-md]
--index-file <INDEX_FILE>        [env: CHIMERA_INDEX_FILE=index.md]
--log-level <LOG_LEVEL>          [env: CHIMERA_LOG_LEVEL=INFO]
--port <PORT>                    [env: CHIMERA_HTTP_PORT=8080]

Features

  • Transparent serving of markdown files in HTML form
  • Full support for other file types, provided by tower-http
  • Sidebar index linking to headings/anchors within the document
  • Sidebar index of neighboring documents
  • Full text search, provided by Tantivy

Organization

My NAS device is positively littered with little pockets of markdown files. It’s how I’ve been keeping notes for years. But I also use it for writing documentation, recording recipes, writing stories, writing screenplays, planning, and so on. It is my go-to format for anything textual. Because of that, I don’t have anything you could clearly designate as a “document root” to serve as a website. My expectation isn’t that you should reorganize your files to conform to the web model. I suggest adding softlinks from the designated document root folder to wherever you happen to store your files. The server is capable of following those links and serving from them transparently. And when the planned Docker image comes online, volume mapping will make that even easier.

Want to contribute?

I’d love that. I’m pretty new at the open source world, but if you want to file issues or pull requests, I’m game. There are a number of different ways this project could grow.