Giter Club home page Giter Club logo

roboclerk's Introduction

buildbadge Coverage Status Open issues license

Welcome to RoboClerk

What's RoboClerk?

RoboClerk is a powerful software package that is specifically designed to meet the needs of smaller teams working on medical device software and SaMD. One of the key advantages of using RoboClerk is that it allows teams to work in the same way they normally would, without having to worry about generating the majority of the documentation needed to show compliance with ISO62304.

Documentation as Code

RoboClerk follows the "Documentation-as-code" philosophy, which means that documentation is treated as a code artifact and managed in the same way as code. The software is also designed to be run as part of a CI/CD pipeline, which further streamlines the development process and ensures that compliance requirements are met at every stage. RoboClerk retrieves the artifacts that are generated as part of the team's normal development process and uses them to automatically generate the necessary documentation. This not only saves time and reduces the risk of errors, but it also ensures that compliance requirements are met without having to take time away from development activities.

Template Based

RoboClerk uses templates to generate the documentation. These are in Asciidoc format to ensure that the generated documentation is consistent and follows a standardized format. These templates can be easily customized to meet the specific needs of each project and, because they are ascii files, are stored with the source code in version control, ensuring precise configuration management of the documentation. This means that teams can easily track changes to the documentation and roll back to earlier versions if necessary, just as they would with their code.

Highly Flexible

RoboClerk utilizes the Asciidoc format, granting users access to its extensive features. This allows for the seamless incorporation of diagrams (e.g., PlantUML through Kroki), images, tables, code snippets, cross-references, and more into the generated documentation, enhancing its overall quality and readability.

Leverage LLMs for Enhanced Documentation Generation

The advent of modern AI, particularly Large Language Models (LLMs), has significantly transformed how we craft and manage textual content. Incorporating LLMs into RoboClerk's framework augments its capabilities. At present, RoboClerk harnesses the power of AI by interpreting AI prompts just as it handles text templates. This approach offers users unparalleled flexibility, enabling them to infuse extensive information into their prompts. Consequently, LLMs can assist in comprehensively analyzing and shaping the documentation. As RoboClerk continues to evolve, future iterations will further amplify its capabilities by permitting direct documentation generation through LLMs.

Getting Started

  1. Pull the RoboClerk docker container for the release you want to use:
   docker pull ghcr.io/meindertn/roboclerk:latest
  1. At the command prompt, in the directory where you want to create a RoboClerk documentation scaffold, use the scaffold demo command to generate a set of demo directories containing templates and everything you need to run RoboClerk for the first time. The precise command to use depends on what commandline you are using:

Linux shell:

    docker run -v $(pwd):/mnt --rm ghcr.io/meindertn/roboclerk:latest scaffold demo

Windows Powershell:

    docker run -v ${PWD}:/mnt --rm ghcr.io/meindertn/roboclerk:latest scaffold demo

Windows Commandline:

    docker run -v %cd%:/mnt --rm ghcr.io/meindertn/roboclerk:latest scaffold demo
  1. RoboClerk will create two directories for you. RoboClerk_input and RoboClerk_output. In RoboClerk_input you will find a set of templates and various other files. RoboClerk_output will contain the finished documentation.

  2. Now generate the documentation by running the following command:

Linux shell:

    docker run -v $(pwd):/mnt --rm ghcr.io/meindertn/roboclerk:latest generate

Windows Powershell:

    docker run -v ${PWD}:/mnt --rm ghcr.io/meindertn/roboclerk:latest generate

Windows Commandline:

    docker run -v %cd%:/mnt --rm ghcr.io/meindertn/roboclerk:latest generate
  1. The RoboClerk_output directory now has all the output and intermediary files in it. The demo pipeline is set up to produce Microsoft Word documentation. The intermediary files are Asciidoc (*.adoc) and Docbook 5 (*.xml).

  2. Things to try:

  • In normal operation, RoboClerk will connect to a software lifecycle management system like Redmine or AzureDevops but for the demo, it uses a JSON file with all the items in it. You can open the JSON file, make changes to some of the items and re-generate the documentation to see the effect.
  • Within the RoboClerk_input directory are the templates that define the documents. Open the templates with your favorite text editor, make some changes, re-generate the documents and see the effect.
  1. Once you are done using the JSON file as input, connect RoboClerk to a demo SLMS. First, get the demo Redmine container using the following command:
   docker pull ghcr.io/meindertn/redmine-demo:latest
  1. From this point forward, my assumption is that you are using linux, see the earlier examples on how to run these commands in other commandlines. Scaffold a non-demo instance of the RoboClerk directory structure using:
    docker run -v $(pwd):/mnt --rm ghcr.io/meindertn/roboclerk:latest scaffold
  1. Open ./RoboClerk_input/RoboClerkConfig/RoboClerk.toml in a text editor and remove all plugins except the RedmineSLMSPlugin:
   DataSourcePlugin = [ "RedmineSLMSPlugin" ]
  1. Start the demo instance of Redmine:
   docker run -p 3001:3000 -d ghcr.io/meindertn/redmine-demo:latest
  1. Things to try:
  • Log into the demo instance at http://localhost:3001/ with username admin and password password123. Make changes to items or create new items in the demo instance of redmine, re-generate the documents using the following command (note the addition of --network="host" only needed because we need to connect to localhost from the container):
      docker run -v $(pwd):/mnt --rm --network="host" ghcr.io/meindertn/roboclerk:latest generate 
  • Take a look at the redmine configuration file in RoboClerk_input/PluginConfig/RedmineSLMSPlugin.toml to see what configuration options are available.

To learn more details about RoboClerk please check out the documentation in the Wiki.

roboclerk's People

Contributors

meindertn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

roboclerk's Issues

Post processing tag support

In various formats, post processing is needed to create the documentation in a way that matches required look and feel of the documentation in HTML or DOCX. We should support tags that are focused on that. For example:

  • remove line
  • insert TOC
  • insert page break

support for state dump

Roboclerk should be able to serialize its data structures to enable it to save its state at a release. Minor fixes after release would then use the serialized data instead of the live data. It should support pulling in specified new items as well as ignoring certain items from its serialized data.

Refactor test steps

Right now test steps are in a string array. They should be in a dedicated object.

Support internal references

RoboClerk should support referencing internal properties of the document like its title, its abbreviation and its identifier

Create platform independent publishing option

The software solution currently does not have a good method for creating a distributable package. Ideally it should be possible to publish the software for both Windows and Linux from the same solution.

Azure devops plugin should support customization options

The azure devops plugin right now assumes certain types of work items are used to represent certain trace entities. While certain pieces of information need to be present in the workitems, the type of workitem should at least be customizable.

Pipe characters are not escaped

When text fields are placed in tables, pipe characters present in the field are currently not escaped which can lead to messed up tables.

Support redmine network interface

Right now the redmine plugin assumes the items have been dumped to CSV, instead the plugin could use the redmine API directly (or probably support both).

Add support for comment tags

It should be possible to include comments in the templates to help people fill them out. The comments should not show up in the processed documents.

Enable referencing known documents

There should be a standardized way of referencing all documents RoboClerk knows about (the ones that it is generating). In addition to that there should be a way to make RoboClerk aware of documents that it is not generating and reference those. This will be helpful when certain standards are referenced in multiple places or certain documents are referenced in multiple places. Then one only has to update references in one place.

new git client approach has issue with file ownership

When running git on files you don't own the following error is generated:

Git command output "fatal: detected dubious ownership in repository at '/mnt/
To add an exception for this directory, call:

git config --global --add safe.directory /mnt/<projectdir>

Have the ability to change the content creator output without recompiling the software

One element of the software where additional flexibility would be good is allowing users to change the way adoc elements (e.g. a software requirement) are generated. Right now, this is compiled into the software and this makes changing RoboClerk to adapt to different use cases onerous. The proposal is to use Roslyn to allow users to change the way elements are created. A standard set of scripting functions should be developed so that users will have a basic toolkit at their disposal.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.