{"componentChunkName":"component---gatsby-theme-mdx-deck-src-templates-deck-js","path":"/","matchPath":"/*","webpackCompilationHash":"3380ed8409f244165033","result":{"data":{"deck":{"id":"04463502-5ce9-5a36-aab1-defb6ccda85f","body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar theme = themes.yellow;\nvar _frontmatter = {};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar layoutProps = {\n  theme: theme,\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(Head, {\n    mdxType: \"Head\"\n  }, mdx(\"title\", null, \"Introduction to JAMStack\")), mdx(\"h1\", null, \"Introduction to JAMStack\"), mdx(\"p\", null, \"based on the book \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.netlify.com/oreilly-jamstack/\"\n  }), \"Modern Web Development on the JAMstack\")), mdx(\"hr\", null), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"If you tend to feel delivering great websites should be more about the craft of markup and JavaScript than server setup and administration, you\\u2019ve found your book.\")), mdx(\"h1\", null, \"\\uD83E\\uDD73\\uD83C\\uDF77\"), mdx(\"hr\", null), mdx(\"h2\", null, \"JavaScript\"), mdx(\"h2\", null, \"API\"), mdx(\"h2\", null, \"Markup: content + template\"), mdx(\"hr\", null), mdx(\"h2\", null, \"\\u274C server\"), mdx(\"hr\", null), mdx(\"img\", {\n    src: Compare\n  }), mdx(\"hr\", null), mdx(\"h2\", null, \"\\u2705 CDN\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"TTFB\\u26A1\\uFE0F \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"stable (no SPoFs)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"cache invalidation\")), mdx(\"hr\", null), mdx(\"h2\", null, \"\\u2705 Git\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"versioning\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"CI/CD\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"webhook\")), mdx(\"hr\", null), mdx(\"h2\", null, \"\\u2705 API\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"microservice\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"serverless\")), mdx(\"hr\", null), mdx(\"h2\", null, \"\\u2705 Deployment\"), mdx(\"hr\", null), mdx(\"h2\", null, \"Site Generator\"), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.staticgen.com/\"\n  }), \"https://www.staticgen.com/\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Gatsby\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Hugo\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Next.js\"))), mdx(\"hr\", null), mdx(\"h2\", null, \"Headless CMS\"), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://headlesscms.org/\"\n  }), \"https://headlesscms.org/\")), mdx(\"hr\", null), mdx(\"h3\", null, \"API based CMS\"), mdx(\"img\", {\n    src: \"https://www.contentful.com/developers/_assets/get-started/starter-tech-stack.51443baad4.png\"\n  }), mdx(\"hr\", null), mdx(\"h3\", null, \"Git based CMS\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Netlify CMS\")), mdx(\"hr\", null), mdx(\"h2\", null, \"Case Study: Smashing Magazine\"), mdx(\"p\", null, \"blog, ecommerce, membership...\"), mdx(\"hr\", null), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"static site generator: Hugo\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"frontend framework: Preact\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"assets pipeline: victor-hugo\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"CMS: Netlify CMS\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"API\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"GoTrue\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"GoCommerce\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"API gateway\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Stripe\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"MailChimp\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Lambda Function\")))), mdx(\"hr\", null), mdx(\"h2\", null, \"Case Study: our course CMS\"), mdx(\"hr\", null), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Lucy fills in course content in CMS\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"staticman\"), \" creates a merge request which modifies \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"courses.yml\"), \" \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"gitlab\"), \" notifies Jackie of the change via \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"slack\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Jackie merges the request\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"During the deployment of some particular branch, a backend job alters course data in database\")), mdx(\"hr\", null), mdx(\"h1\", null, \"\\uD83D\\uDC7B Are you OK?\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},"pageContext":{"matchPath":"/*","isCreatedByStatefulCreatePages":false,"id":"04463502-5ce9-5a36-aab1-defb6ccda85f","slug":"","title":"Introduction to JAMStack"}}}