Design

Philosophy

Understand the Unique and Universal Carbone templating language

Our vision

Each new version of Carbone follows these rules:

What makes Carbone unique?

Carbone is a universal low-code templating language.

This templating language works virtually with all documents (docx, odt, ods, md, xml, html, ...) even if Carbone does not know the specification of the document. For computer scientists, it is an XML-agnostic algorithm.

It uses a simple declarative programming language, which is not intrusive. You don't need to insert control flow codes such as if or start/end-loop tags in your document.

This way of programming provides more flexibility for traveling data. You can transform your original JSON array directly in the template. See examples:

In computer science, declarative programming is a programming paradigm, a style of building the structure and elements of computer programs, that expresses the logic of a computation without describing its control flow.

Many languages applying this style attempt to minimize or eliminate side effects by describing what the program should accomplish in terms of the problem domain, rather than describing how to go about accomplishing it as a sequence of the programming language primitives (the how being left up to the language's implementation).

This is in contrast with imperative programming, in which algorithms are implemented in terms of explicit steps. Wikipedia source

Why did we create Carbone?

In my first company (2011), we were only two developers and had many client demands. All clients wanted a personalized PDF showing the menu of their restaurant.

Maintaining hard-coded reports with Wkhtml2pdf or Pdfkit was time-consuming and error-prone. Birt, Jasper Report and Talend tools were too complex to use and deploy.

So, I came up with an idea:

  • We already have battle-tested JSON APIs for our web app
  • Our clients are not computer scientists, but they know how to use Microsoft Office or LibreOffice

Could we create a simple templating language which injects data inside a document without modifying our JSON APIs?

After working hard for three twenty weekends, Carbone was born!

Ten years later, my first company became the leading ERP software provider for hotels and restaurants in Europe, offering 100% highly personalized reports and serving millions of meals every day.

And Carbone became an independent company with many new features and more supported template types, such as HTML.

David. Main author of Carbone.

Me in 2011