Skip to content
Ioan Eugen Stan edited this page May 5, 2016 · 2 revisions

JBake Domain Model

This document describes the JBake Domain Model. You will find here all the concepts relevant for static website generation and the relationship between them. This document should name the concepts used in the application and create a vocabulary that developers and users can use to describe how features should work.

Note
Names should evolve to express with precision their purpose. As we better understand what things do and how they should be used we can name them better. Feel free to propose better definitions or names.

Concepts

Concepts apply to the whole project. Some of them are focused more to the End User side, some of them are more Developer/Contributor friendly. All of them are important.

User focused concepts

Project

A website build with jbake. Projects in jbake contain templates, content, assets and data. Final users of jbake will write content and data most of the time. Designers and website developers will write templates and assets. Jbake will take all that information and generate static websites.

Template

A file/document written in a supported template language used to style, layout a piece of content and generate an HTML page. Current list of supported template languages are: Groovy, Thymeleaf, Freemaker.

Content

A piece of information that people wish to put on the web. Content and templates are used to generate the final HTML pages. Content is written in a supported format. Currently that is: HTML, Markdown, AsciiDoc.

Assets

Static files needed to style and make the web pages work. This includes CSS, JavaScript, fonts, small images, etc. If you have big assets like movies or big images, it is recommended to host them using another platform. You can treat them as assets but it is not efficient.

Data

Structured data (CSV, JSON) that can bu used in templates. This type of information is something that can be updated easily by end customers. For examples: product prices or product information that changes once a month or so. Support for data is currently in planning.

Developer focused concepts

Crawler

Jbake component that iterates over content (and data) and triggers the rendering.

Renderer

Part of Jbake that takes content in a supported format and a template and generates the HTML page.

How JBake works

Jbake reads the list of files that make up content and merges each if them with a template to generate an HTML page.