JAM Stack
This website is based on a JAM stack, i.e. JavaScript, APIs, and Markup.
The site only consists of static content, without server-side scripting, application servers, database management systems or the like. In contrast to multi-tier web architectures with many layers, a JAM stack only requires a web server, e.g. apache or nginx. Its architecture is therefore akin to the traditional “tim-berners-lee-web”, however, using up-to-date web technologies. This approach is obviously not practical for all applications, e.g. interactive web applications or web services in larger service-oriented architectures require the management of sessions and persisting user data on the server side. However, client-side javascript can be used in many cases for interactive site elements and for creating a responsive design. Page loading times decrease due to reduced latency on the server-side, less http requests/responses and more efficient caching – all elements can be cached locally, or saved and archived locally. Another reason for the JAM stack is security; client-definable payload to be passed to server applications is not required, making the site reasonably secure against exploits relying on code injection.
Static site generators can be used for building a JAM stack site out of a directory structure with markdown and configuration files. Hugo is used here; some popular generators are:
- Jekyll https://jekyllrb.com/ – popular, credited for initiating a trend to static sites
- Hugo https://gohugo.io/ – fast (written in go), good documentation
- Gatsby https://www.gatsbyjs.org/ – complex/powerful, for React.js
- Hexo https://hexo.io/ – complex/powerful
- Grav https://getgrav.org/ – “flat file CMS”
- Kirby https://getkirby.com/ – “flat file CMS”