A recent project I've worked on has been the new web-based manual for Avolites lighting consoles which replaces the roughly 350 page PDF version. The new website is written with Docusaurus, which is a Markdown based React driven project created by Facebook for producing open source documentation.
As well as the bits mentioned below, I also formatted a fair bit of the Markdown which was procedurally generated from the original DOCX format; whilst this wasn't the most exciting task it meant that I ended up reading most of the manual so learnt a few new bits about Avolites lighting desks. On top of this, the prohect was a good chance to learn more Node.js, React & Docker.
Some bits I worked on
The desktop version will eventually get shipped with the consoles hopefully, but it is also a useful offline resource for desktop users too. To produce the app I just wrapped the static HTML produced by Docusaurus in an Electron app, running a lightweight web server behind - it's essentially just a browser window pointing at a localhost.
It's designed to be easy to use on a touch screen (as the lighting consoles are mostly used with a touch screen), so we did things like making the scrollbars larger, adding spacing between links in a list and the back & forward buttons in the title bar. Also, as it's Electron based, it's multi-platform - so can be run on Mac too (as seen in the screenshot).
Despite the website replacing the PDF version, there was still a requirement to have a PDF version for legacy reasons and for a paper copy. At the time of writing, Docusaurus doesn't have an integrated way to build PDFs so I wrote a script to take all of the Markdown files and generate one big ol' PDF from these.
This worked by concatenating the Markdown files, fixing bits like the link/image paths (mostly a regex special) then writing it out to a PDF with Pandoc using a LaTeX template.
As this process is a tad involved, requires quite a few dependencies and the output could potentially vary depending on the desktop environment, I created a Docker image using Docker Compose. I also did the same for the app build, making it easier for those updating the docs in future as you only need to download Docker and it can be automated to build much more easily.
My thanks to Fraser Stockley (Avolites Developer) for getting me involved with this project.