{"id":16993,"date":"2019-09-09T08:03:32","date_gmt":"2019-09-09T06:03:32","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=16993"},"modified":"2026-02-19T07:31:36","modified_gmt":"2026-02-19T06:31:36","slug":"jamstack-apps-static-dynamic","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/","title":{"rendered":"JAMstack Apps: Static but Dynamic [State of the Web]"},"content":{"rendered":"<p>The JAMstack is not a new technology stack as the name might imply, but a new architecture for web applications. Instead of rendering a web site dynamically in the browser, this approach makes use of an old idea. It suggests to prerender HTML on deploy-time and to distribute the resulting static web app &#8211; but without the static experience. To achieve this the JAMstack makes use of <strong>J<\/strong>avaScript, <strong>A<\/strong>PIs, and <strong>M<\/strong>arkup.<\/p>\n<p><!--more--><\/p>\n<p><span style=\"font-size: 14pt;\"><strong>J<\/strong><\/span>avaScript handles everything that is happening between request-response-cycles and enables elements of a static site to become highly dynamic. Modern JavaScript frameworks such as <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener\">ReactJS<\/a>, <a href=\"https:\/\/angular.io\/\" target=\"_blank\" rel=\"noopener\">Angular<\/a> or <a href=\"https:\/\/vuejs.org\/\" target=\"_blank\" rel=\"noopener\">VueJS<\/a> are well suited, for example.<\/p>\n<p><span style=\"font-size: 14pt;\"><strong>A<\/strong><\/span>PIs are required due to the fact that JAMstack apps are serverless. This means that there is no backend code required to be run on a server. Developers can solely focus on implementing their apps\u2019 frontend logic. Consequently common backend tasks such as saving user input, image processing, or authentication need to be handled by external services providing abstracted, public APIs.<\/p>\n<p><span style=\"font-size: 14pt;\"><strong>M<\/strong><\/span>arkup templates are prebuilt in the deployment process including the site\u2019s content. This can be accomplished with static site generators or other build tools for web applications. The content is stored in the shape of markdown files together with the project\u2019s source code on a version control platform such as GitLab or GitHub.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#JAMstack-Setup-and-Components\" >JAMstack Setup and Components<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#JAMstack-Emergence\" >JAMstack Emergence<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#Benefits-of-JAMstack-Architectures\" >Benefits of JAMstack Architectures<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#-Performance\" >+ Performance<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#-Security\" >+ Security<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#-Robustness-and-Availability\" >+ Robustness and Availability<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#-Scaling\" >+ Scaling<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#-Decoupling\" >+ Decoupling<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#-SEO\" >+ SEO<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#-Offline-Capabilities\" >+ Offline Capabilities<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#Challenges-for-JAMstack-Architectures\" >Challenges for JAMstack Architectures<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#%E2%80%93-User-Generated-Content\" >&#8211; User Generated Content<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#%E2%80%93-Costs\" >&#8211; Costs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#%E2%80%93-External-Dependencies\" >&#8211; External Dependencies<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#%E2%80%93-Atomic-Builds\" >&#8211; Atomic Builds<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#Conclusion\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#Helpful-Resources\" >Helpful Resources<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#Information\" >Information<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#Tools\" >Tools<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#Tutorials\" >Tutorials<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#Read-on\" >Read on<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"JAMstack-Setup-and-Components\"><\/span>JAMstack Setup and Components<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The visualization below shows a common setup of a website applying the JAMstack paradigm. The three main building blocks are a <strong>static site generator (SSG)<\/strong>, a <strong>content management system (CMS)<\/strong>, and a <strong>content delivery network (CDN)<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16995\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/jamstack-300x225.jpg\" alt=\"JAMstack components\" width=\"644\" height=\"483\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/jamstack-300x225.jpg 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/jamstack-400x300.jpg 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/jamstack-360x270.jpg 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/jamstack.jpg 720w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/p>\n<p><strong>Static site generators<\/strong> such as <a href=\"http:\/\/jekyllrb.com\/\" target=\"_blank\" rel=\"noopener\">Jekyll<\/a>, <a href=\"https:\/\/gohugo.io\/\" target=\"_blank\" rel=\"noopener\">Hugo<\/a>, <a href=\"https:\/\/nuxtjs.org\/\" target=\"_blank\" rel=\"noopener\">Nuxt<\/a>, and Gatsby compile content and page templates to static HTML. A collection of static site generators for almost all modern frontend frameworks can be found <a href=\"https:\/\/www.staticgen.com\/\" target=\"_blank\" rel=\"noopener\">here<\/a>. Gatsby for example is built on ReactJS and its command line tool (Gatsby CLI) makes it really easy to setup a project and get started right away. Alternatively, frontend build tools such as Parcel and Webpack can be used to render the HTML.<\/p>\n<p>Content for JAMstack sites can be retrieved from various <strong>data sources<\/strong>. Options are for example markdown files, APIs or headless CMSs. A headless CMS is solely used to generate the content and to provide it through API endpoints. Examples are <a href=\"https:\/\/www.contentful.com\/\" target=\"_blank\" rel=\"noopener\">Contentful<\/a>, <a href=\"https:\/\/strapi.io\/\" target=\"_blank\" rel=\"noopener\">Strapi<\/a>, <a href=\"https:\/\/ghost.org\/\" target=\"_blank\" rel=\"noopener\">Ghost<\/a>, and Netlify CMS. Also the widely used solutions WordPress and Drupal allow fetching content via APIs, which enables the migration of primarily CMS-driven sites to a JAMstack architecture.<\/p>\n<p>To trigger a new release once the content provided by a service has changed, webhooks can be used. These are special API endpoints provided by GitLab and GitHub for example to trigger a new build and consequently a content update.<\/p>\n<p>Static site generators support many different data sources and types. Gatsby, for example, provides a variety of plugins for pulling data, which can then be queried on component level using GraphQL.<\/p>\n<p>Finally a hosting service is required which supports the deployment of static sites. <strong>Content delivery network (CDN)<\/strong> hosting is a good option as it offers minimal latency, high reliability and spatial scalability. Ideally the platform should be connected to an online version control repository such as GitHub, GitLab or BitBucket. The deployment process can then be triggered automatically on merging to the master branch. Hosting services frequently used in a JAMstack setup are Github Pages, Amazon Web Services (AWS), Heroku or Netlify.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"JAMstack-Emergence\"><\/span>JAMstack Emergence<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<figure id=\"attachment_16999\" aria-describedby=\"caption-attachment-16999\" style=\"width: 701px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-16999\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack-Trend-300x98.jpg\" alt=\"JAMstack trends\" width=\"701\" height=\"229\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack-Trend-300x98.jpg 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack-Trend-1024x335.jpg 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack-Trend-768x251.jpg 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack-Trend-400x131.jpg 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack-Trend-360x118.jpg 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack-Trend.jpg 1293w\" sizes=\"auto, (max-width: 701px) 100vw, 701px\" \/><figcaption id=\"caption-attachment-16999\" class=\"wp-caption-text\"><a href=\"https:\/\/trends.google.de\/trends\/explore?date=today%205-y&amp;q=JAMstack\" target=\"_blank\" rel=\"noopener\">Google Trends<\/a> graph showing the worldwide search frequency of the term \u2018JAMstack\u2019 in the past 5 years.<\/figcaption><\/figure>\n<p>Netlify is probably the most convenient platform for hosting a JAMstack application. The founder of Netlify, Matthias Biilmann, was among the first developers building apps in a JAMstack manner. Around 2016 he introduced the term and promoted the approach from then on. Today, Netlify offers a full ecosystem enabling this application architecture. They provide CDN-like hosting, continuous deployment (CD), HTTPS out of the box, dynamic features for handling user input and much more. Around 2017 the JAMstack had its breakthrough and became more popular in the web developer scene as the graph above reflects. The first conference dedicated to the JAMstack\u2014the <a href=\"https:\/\/jamstackconf.com\/\" target=\"_blank\" rel=\"noopener\">JAMstack_conf<\/a>\u2014took place in 2018 in San Francisco. The event was repeated this year in New York, London and San Francisco.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Benefits-of-JAMstack-Architectures\"><\/span>Benefits of JAMstack Architectures<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The reason for the increasing popularity of the JAMstack paradigm is based on the outstanding benefits of this approach, which do not only improve the user\u2019s experience with the respective site but also the developer\u2019s experience implementing and maintaining it.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"-Performance\"><\/span>+ Performance<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Since the site\u2019s markup is not rendered on every request but pre-rendered during deployment, the time to first byte and consequently the time to first meaningful paint (FMP) is much shorter. In addition to that, CDN hosting assures fast loading almost everywhere in the world.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"-Security\"><\/span>+ Security<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The JAMstack architecture eliminates many security vulnerabilities simply by outputting a static site. Since the whole server side code dealing with e.g. authentication or database access is externalized, the website itself has less weak points exposed to malware.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"-Robustness-and-Availability\"><\/span>+ Robustness and Availability<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Externalizing backend functionality and reducing the number of components to maintain and wire up bypasses a common source of errors. Developers don\u2019t need to worry about configuring database connections or tackling faulty requests caused by unexpected user input. Moreover, a static site will behave exactly the same in development and production environment. This makes a web application more robust and assures its availability to users.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"-Scaling\"><\/span>+ Scaling<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Scaling a JAMstack app boils down to the question of how the static files can be distributed as far as possible. CDN hosting is a very good option as it makes an app easily accessible all over the world all the while offering simple and cheap hosting.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"-Decoupling\"><\/span>+ Decoupling<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The clear separation of frontend logic, content and backend functionality makes making changes much easier. Enhancing or changing the app\u2019s content does not even require coding skills as markdown files can simply be edited manually in a text editor. Alternatively a CMS with user interface and actions such as creating, deleting and changing content can be used.<\/p>\n<p>Another advantage of this decoupling is the clear scope from a developer\u2019s perspective. As backend services and data sources are externalized and exchangeable, developers can focus entirely on frontend coding. There is no need for crossing the mental boarder while jumping back and forth between frontend and backend development.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"-SEO\"><\/span>+ SEO<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A JAMstack site is prerendered to HTML on deploy time. The resulting static pages allow search engine optimization which is rather difficult for websites generated from JavaScript in the browser. This can significantly increase a site\u2019s visibility.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"-Offline-Capabilities\"><\/span>+ Offline Capabilities<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In the JAMstack approach all site contents are fetched at deploy-time. This makes it very easy to prepare a JAMstack app for offline use as well. Therefore, more advanced features requiring e.g. external APIs need to be disabled or replaced by offline functionality temporarily and synchronized later on.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Challenges-for-JAMstack-Architectures\"><\/span>Challenges for JAMstack Architectures<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The list of advantages is long, however there are some notable challenges related to the JAMstack architecture.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E2%80%93-User-Generated-Content\"><\/span>&#8211; User Generated Content<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>While predefined content can easily be added during deployment, the integration of user generated content is more difficult. Serverless JAMstack apps need to make use of external services and functions to handle content generation or changes. This might sound limiting at first, but the list of <a href=\"https:\/\/www.thenewdynamic.org\/\" target=\"_blank\" rel=\"noopener\">available solutions<\/a> is growing constantly and services for almost every use case are available. <a href=\"https:\/\/auth0.com\/\" target=\"_blank\" rel=\"noopener\">Auth0<\/a> for example handles authentication and authorization, <a href=\"https:\/\/disqus.com\/\" target=\"_blank\" rel=\"noopener\">Disqus<\/a> adds a commenting system, and <a href=\"https:\/\/snipcart.com\/\" target=\"_blank\" rel=\"noopener\">Snipcart<\/a> enhances any website with a shopping cart.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E2%80%93-Costs\"><\/span>&#8211; Costs<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>As third party services need to be hosted and maintained as well, they most of the time charge money for unlimited use. A better option is to choose suitable open-source software and host it yourself. Even though the advantage of not having to take care of a server is lost, the app and service features remain completely decoupled. Find some examples of free, open-source tools listed here:<\/p>\n<ul>\n<li>Comments: <a href=\"https:\/\/commento.io\/\" target=\"_blank\" rel=\"noopener\">Commento<\/a>, <a href=\"https:\/\/mouthful.dizzy.zone\/\" target=\"_blank\" rel=\"noopener\">Mouthful<\/a><\/li>\n<li>e-Commerce: Flatmarket, <a href=\"https:\/\/github.com\/netlify\/gocommerce\" target=\"_blank\" rel=\"noopener\">GoCommerce<\/a><\/li>\n<li>Forms: <a href=\"https:\/\/formspree.io\/\" target=\"_blank\" rel=\"noopener\">Formspree<\/a>, <a href=\"https:\/\/staticman.net\/\" target=\"_blank\" rel=\"noopener\">Staticman<\/a><\/li>\n<li>Search: <a href=\"https:\/\/lunrjs.com\/\" target=\"_blank\" rel=\"noopener\">Lunr.js<\/a>,<a href=\"https:\/\/listjs.com\/\" target=\"_blank\" rel=\"noopener\"> List.js<\/a><\/li>\n<li>CMS: <a href=\"https:\/\/strapi.io\/\" target=\"_blank\" rel=\"noopener\">Strapi<\/a>, <a href=\"https:\/\/ghost.org\/\" target=\"_blank\" rel=\"noopener\">Ghost<\/a>, Netlify CMS<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%E2%80%93-External-Dependencies\"><\/span>&#8211; External Dependencies<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>On the one hand, externalizing backend functionality can improve a project\u2019s availability and its robustness as explained above. On the other hand, it also creates dependencies. Once a utilized third-party service is down, the functionality is no longer available in your app. Surely it can quickly be replaced by another more reliably service, but you can\u2019t fully control downtime of external software. Relying on several microservices, however, ensures that your app\u2019s features won\u2019t all fail at the same time.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E2%80%93-Atomic-Builds\"><\/span>&#8211; Atomic Builds<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Atomic builds are among the <a href=\"https:\/\/jamstack.org\" target=\"_blank\" rel=\"noopener\">JAMstack best practices<\/a> as building the whole project after a source code\/content change avoids inconsistencies. Of course, hosting platforms also need to make sure that caching is invalidated and all the changes are actually rolled out. Atomic builds might, however, become a problem for large sites. The build process can literally take hours if thousands of web pages are involved. <a href=\"https:\/\/www.smashingmagazine.com\/2016\/08\/using-a-static-site-generator-at-scale-lessons-learned\/\" target=\"_blank\" rel=\"noopener\">Code splitting and incremental builds<\/a> can help tackling this challenge.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In summary, JAMstack architecture has many advantages including high performance, improved security and high scalability. It is best suited for content heavy sites, which require only limited user input. Typical use cases are blogs, online catalogues or online newspapers. Especially small projects are lot of fun as the site is super fast up and running due to the availability of static site generators. Large sites with a huge number of pages can be implemented in a JAMstack manner as well, but might require special deployment strategies.<\/p>\n<p>While frequent or specialized user interaction might be better of with a conventional client-server architecture, a variety of tools can be added to a JAMstack project in order handle common use cases of user input such as authentication, form handling or commenting.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Helpful-Resources\"><\/span>Helpful Resources<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In case this blog post made you curious about JAMstack and inspired you to setup your own JAMstack project, the following links provide further information on the topic. Enjoy!<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Information\"><\/span>Information<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/jamstack.org\/\" target=\"_blank\" rel=\"noopener\">JAMstack.org<\/a>: Introduction to the JAMstack including links to additional resources such as blog articles and videos as well as examples of actual JAMstack applications.<\/li>\n<li><a href=\"https:\/\/www.netlify.com\/blog\/\" target=\"_blank\" rel=\"noopener\">Netlify\u2019s Blog<\/a>: Updates on Netlify, the largest ecosystem supporting the JAMstack.<\/li>\n<li><a href=\"https:\/\/www.heavybit.com\/library\/podcasts\/jamstack-radio\/\" target=\"_blank\" rel=\"noopener\">JAMstack Radio<\/a>: Podcast series on the JAMstack architecture and related tools and services including Serverless, AWS Lambda, GraphQL, and Contentful with guests like Matthias Biilmann (Netlify founder) and Kyle Mathews (founder of Gatsby).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Tools\"><\/span>Tools<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.thenewdynamic.org\/\" target=\"_blank\" rel=\"noopener\">The new Dynamic<\/a>: Collection of useful tools and services related to the JAMstack approach with helpful filtering options.<\/li>\n<li><a href=\"https:\/\/www.staticgen.com\/\" target=\"_blank\" rel=\"noopener\">StaticGen<\/a>: Overview and rating of available site generators including filtering for languages and templates.<\/li>\n<li>HeadlessCMS: List of Content Management Systems suitable for JAMstack applications.<\/li>\n<li><a href=\"https:\/\/www.stackbit.com\/\" target=\"_blank\" rel=\"noopener\">Stackbit<\/a>: A JAMstack builder which lets you choose an arbitrary combination of site generator, CMS and deployment platform and automates their integration.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Tutorials\"><\/span>Tutorials<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/strapi.io\/blog\/building-a-static-website-using-gatsby-and-strapi\" target=\"_blank\" rel=\"noopener\">Gatsby + Strapi<\/a>: A very nice and up to date tutorial on how to setup and deploy your own JAMstack app using Gatsby as a static site generator together with the open-source CMS Strapi.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Read-on\"><\/span>Read on<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Find out more about our <a href=\"https:\/\/www.inovex.de\/en\/our-services\/web\/\">web services<\/a> or consider joining us as a <a href=\"https:\/\/www.inovex.de\/de\/karriere\/stellenangebote\/\">web dev<\/a> yourself!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The JAMstack is not a new technology stack as the name might imply, but a new architecture for web applications. Instead of rendering a web site dynamically in the browser, this approach makes use of an old idea. It suggests to prerender HTML on deploy-time and to distribute the resulting static web app &#8211; but [&hellip;]<\/p>\n","protected":false},"author":129,"featured_media":17049,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[70],"service":[444],"coauthors":[{"id":129,"display_name":"Julia Wayrauther","user_nicename":"jwayrauther"}],"class_list":["post-16993","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-web","service-frontend"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JAMstack Apps: Static but Dynamic [State of the Web] - inovex GmbH<\/title>\n<meta name=\"description\" content=\"The JAMstack is not a new technology stack as the name might imply, but a new architecture for web applications. Instead of rendering a web site dynamically in the browser the JAMstack makes use of JavaScript, APIs, and Markup.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JAMstack Apps: Static but Dynamic [State of the Web] - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"The JAMstack is not a new technology stack as the name might imply, but a new architecture for web applications. Instead of rendering a web site dynamically in the browser the JAMstack makes use of JavaScript, APIs, and Markup.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-09T06:03:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-19T06:31:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Julia Wayrauther\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julia Wayrauther\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Julia Wayrauther\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/\"},\"author\":{\"name\":\"Julia Wayrauther\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/22cdb7e0c5716d830ec884458d73bde6\"},\"headline\":\"JAMstack Apps: Static but Dynamic [State of the Web]\",\"datePublished\":\"2019-09-09T06:03:32+00:00\",\"dateModified\":\"2026-02-19T06:31:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/\"},\"wordCount\":1875,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/JAMstack.png\",\"keywords\":[\"Web\"],\"articleSection\":[\"Applications\",\"English Content\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/\",\"name\":\"JAMstack Apps: Static but Dynamic [State of the Web] - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/JAMstack.png\",\"datePublished\":\"2019-09-09T06:03:32+00:00\",\"dateModified\":\"2026-02-19T06:31:36+00:00\",\"description\":\"The JAMstack is not a new technology stack as the name might imply, but a new architecture for web applications. Instead of rendering a web site dynamically in the browser the JAMstack makes use of JavaScript, APIs, and Markup.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/JAMstack.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/JAMstack.png\",\"width\":1920,\"height\":1080,\"caption\":\"JAMstack Apps\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/jamstack-apps-static-dynamic\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JAMstack Apps: Static but Dynamic [State of the Web]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/22cdb7e0c5716d830ec884458d73bde6\",\"name\":\"Julia Wayrauther\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/279a4c54d45de75a08dd8c9ada0a913f45afc291a4b3a38002e29c903c1bff56?s=96&d=retro&r=gcd292ca9576590f3993a53e2361b80fe\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/279a4c54d45de75a08dd8c9ada0a913f45afc291a4b3a38002e29c903c1bff56?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/279a4c54d45de75a08dd8c9ada0a913f45afc291a4b3a38002e29c903c1bff56?s=96&d=retro&r=g\",\"caption\":\"Julia Wayrauther\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/jwayrauther\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JAMstack Apps: Static but Dynamic [State of the Web] - inovex GmbH","description":"The JAMstack is not a new technology stack as the name might imply, but a new architecture for web applications. Instead of rendering a web site dynamically in the browser the JAMstack makes use of JavaScript, APIs, and Markup.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/","og_locale":"de_DE","og_type":"article","og_title":"JAMstack Apps: Static but Dynamic [State of the Web] - inovex GmbH","og_description":"The JAMstack is not a new technology stack as the name might imply, but a new architecture for web applications. Instead of rendering a web site dynamically in the browser the JAMstack makes use of JavaScript, APIs, and Markup.","og_url":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2019-09-09T06:03:32+00:00","article_modified_time":"2026-02-19T06:31:36+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack.png","type":"image\/png"}],"author":"Julia Wayrauther","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Julia Wayrauther","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten","Written by":"Julia Wayrauther"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/"},"author":{"name":"Julia Wayrauther","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/22cdb7e0c5716d830ec884458d73bde6"},"headline":"JAMstack Apps: Static but Dynamic [State of the Web]","datePublished":"2019-09-09T06:03:32+00:00","dateModified":"2026-02-19T06:31:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/"},"wordCount":1875,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack.png","keywords":["Web"],"articleSection":["Applications","English Content","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/","url":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/","name":"JAMstack Apps: Static but Dynamic [State of the Web] - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack.png","datePublished":"2019-09-09T06:03:32+00:00","dateModified":"2026-02-19T06:31:36+00:00","description":"The JAMstack is not a new technology stack as the name might imply, but a new architecture for web applications. Instead of rendering a web site dynamically in the browser the JAMstack makes use of JavaScript, APIs, and Markup.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/08\/JAMstack.png","width":1920,"height":1080,"caption":"JAMstack Apps"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/jamstack-apps-static-dynamic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"JAMstack Apps: Static but Dynamic [State of the Web]"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/22cdb7e0c5716d830ec884458d73bde6","name":"Julia Wayrauther","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/279a4c54d45de75a08dd8c9ada0a913f45afc291a4b3a38002e29c903c1bff56?s=96&d=retro&r=gcd292ca9576590f3993a53e2361b80fe","url":"https:\/\/secure.gravatar.com\/avatar\/279a4c54d45de75a08dd8c9ada0a913f45afc291a4b3a38002e29c903c1bff56?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/279a4c54d45de75a08dd8c9ada0a913f45afc291a4b3a38002e29c903c1bff56?s=96&d=retro&r=g","caption":"Julia Wayrauther"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/jwayrauther\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/16993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/129"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=16993"}],"version-history":[{"count":6,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/16993\/revisions"}],"predecessor-version":[{"id":66246,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/16993\/revisions\/66246"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/17049"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=16993"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=16993"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=16993"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=16993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}