Code Monkey home page Code Monkey logo

techdoc-md's Introduction

techdoc-md

The opinionated tool to generate technical documents such as requirements, architecture and design specifications using Markdown. The predefined layout, built-in support for UML diagrams, uniform approach for documents styling and customization allow authors to concentrate on the content of the documents instead of spending time fiddling with look and feel. Packaging of the tool as a Docker container allows documentation to be generated on virtually any platform without worrying about incompatibilities.

This tool is based on excellent open-source projects Pandoc and PlantUML. They do all the heavy lifting while techdoc-md provides plumbing and default templates.

Features

  • Generation of PDF document from set of Markdown files
  • Support for conversion of *.uml PlantUML source files into images that could be included into final document. The included images are vector-based
  • Support for defining document metadata such as author, title and even abstract in an separate *.yaml file
  • Support for changing the style (colors and fonts) of documents via separate *.yaml file. These changes also affect generated UML diagrams making the process of adjusting style throughout entire document very straightforward.
  • Support for including of source code listings from separate files (color and font settings are honored as well)
  • Support full redefinition of the Pandoc template if required

Document project structure

.
├── *.md - set of Markdown files compiled into final document
├── include
│   └── *.(java,cpp,rb,etc.) - source code files to include
├── media
│   └── *.(png,jpg,pdf,etc.) - media files to include
├── meta
│   ├── metadata.yaml - document metadata
│   └── skin.yaml - styling parameters (fonts and colors)
└── uml
    └── *.uml - PlantUML source code for UML diagrams

Simple example

To see example output, run following command in sample folder:

docker run --rm \
	-v `pwd`:/source:ro \
	-v `pwd`/output:/output \
	oiavorskyi/techdoc-md

Note: make sure that you have Docker installed on your machine first and that you have connected to it.

The sample folder should provide overview of major customization points and examples of usage. It will be enhanced over time to show as much capabilities as possible. You could copy skin.yaml file from the default template and play with fonts and colors to see the effect on the document.

Customizing template

If you wish to make additional customizations to the template used to generate the PDF documentation you could make a copy of templates/default directory and change files there. Then you could point the tool to the new template directory:

docker run --rm \
	-v `pwd`:/source:ro \
	-v `pwd`/output:/output \
    -v <path_to_template>:/templates \
	oiavorskyi/techdoc-md

Todo

  • Support for nested directories in uml directory
  • Change default image extension to *.png
  • Complete support of skin parameters for all types of PlantUML diagrams
  • Add support for *.svg files in media folder
  • Substitution of variables in Markdown sources files
  • Change-list page generation from Git commits
  • Enhance example to include most common types of markup and customizations
  • Add basic support for MS Word export (for collaboration with those who cannot annotate PDF files)
  • Add support for MS Word tables in sources

techdoc-md's People

Contributors

arunmrao avatar monstrenyatko avatar obatiuk avatar oiavorskyi avatar

Watchers

 avatar  avatar

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.