{"componentChunkName":"component---src-templates-blog-post-js","path":"/jamstack-vercel/","result":{"data":{"markdownRemark":{"html":"<h1 id=\"Criando-uma-simples-aplicacao-com-jamstack-da-Vercel-com-um-encurtador-de-URLs\" style=\"position:relative;\">Criando uma simples aplicação com jamstack da Vercel com um encurtador de URLs<a href=\"#Criando-uma-simples-aplicacao-com-jamstack-da-Vercel-com-um-encurtador-de-URLs\" aria-label=\"Criando uma simples aplicacao com jamstack da Vercel com um encurtador de URLs permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h1>\n<h3 id=\"Vamos-ver-na-pratica-o-uso-dessa-nova-stack-web\" style=\"position:relative;\">Vamos ver na prática o uso dessa nova stack web<a href=\"#Vamos-ver-na-pratica-o-uso-dessa-nova-stack-web\" aria-label=\"Vamos ver na pratica o uso dessa nova stack web permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h3>\n<p>Ultimamente tenho visto em muitos lugares os seguintes nomes: <em>jamstack, Netlify e</em> <em>Vercel</em>. Como a curiosidade procurei alguns canais e blogs para saber mais a respeito.</p>\n<p>Sendo breve o termo <em>jamstack</em> foi criado por <a href=\"https://twitter.com/biilmann\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Matt Biilmann</a> (CEO da Netlify) onde ele diz ”<em>A modern web development architecture based on client-side JavaScript, reusable APIs, and prebuilt Markup</em>”</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADk0lEQVQ4y3VV/XMTRRjOf+I4WnVGR51xHOUHFL8mAgLShlz2vnb37pK0SS4hbW0KR9JGnNYOSjV+NBWdEYsdUyqtgJSCdvygxR/5jx7evdy1CcUfnnl293afez/2fTfxZrUChUOEt06X8cbo6XCu+GCEY6WPkBqeRJCqoHW4hC+P+MQ+viJ8myyjnaxggViNE4bjIOO60IktKaF5LjIExUO5HAbzORwfyeNYYRgm7XFtgawlQxQMB+PpLM6m8pgaHMYnJ0aQEJxDEkSE3rETzR2bw+U2pODgQkBIxRw2waSxIW0ypjtPqA2PIhSxLHCbRIhdmuumBDNIwORguoBNlkolzvuREJGIskixsiZNrh/0S3iV4neg4uOwcFCrMCxcYPjhC4bPz+vIZy2YFp1TVj8quCtGPEixey6YxFPNBp5p1vHE1BTcdhmb6wa213TcWzOws67jxmWGctHsEaUwiV4LFdPiyxNjGJiu44V6gIGgjnfnxrGymUVnI4uNjo4twt0OwzaJLi8wcr0rpET7BEPrXInXJhuY9dtoFRbByhcx8l0Ft+646NzK4fYqx9bVDB60JnD/xxzurmjwC5QQ638EU66D588FeD2YxgHCs7UGvI6H1raDmX88LN1O469fGP5dksQW/lxhqPp7sXysyy/WxvFk8xyerp/BK98XUVi8gPPz62jMbeDj5Qbad07hD3L572vdOLpOlJQ+wd0M2/gwn8XAmQAvtcaQ3HRx4ucA1RujmLs+hpnfi6j/p6FzM4OdVYZmYMIwRXg/91u4m2kbg46H9xYdHL0pkfzNxNC6hsrWSdS3h1Df0fDp9TSaNbPH1djKHkEeZSq82KYN46IG46oO+4oO5ycL4rINvmyAX2PIzGvQ2V5297m8J8q7ZWUIGNM6NLKsukjZrLWwUZtH6RLV+Br9aIpBGGqviO5fLN4jKKIyCkWJbccGa2dgr1JVLAnkrlDZ/cqgqzX61ru3V6NPMN4QMtWq7ZHrszoyl7QQxowerqlvfXv7BPn+AhdxTOigMLqHQpgijNfjGkqMhEmtR7WguP3E4NHfuey2MNeywxsgQ+y1uPh2xOPExKkcRjUPPnORixqnR1BikkRdqlXN83C0OIyT1GxTuWw4Nx1JhsiwKSshm0QVEqp1f/N+GV8TVFtXmD9SwuzxAj77oETjIs6mq5BOjZ6GavgkqOfhUPR0vE3PRpJa3TuVMsHHQz/KeFI36ajFAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"jamstack\"\n        title=\"jamstack\"\n        data-src=\"/static/340cdb9056c5600c1249391a879e37e3/a6d36/jamstack.png\"\n        data-srcset=\"/static/340cdb9056c5600c1249391a879e37e3/222b7/jamstack.png 163w,\n/static/340cdb9056c5600c1249391a879e37e3/ff46a/jamstack.png 325w,\n/static/340cdb9056c5600c1249391a879e37e3/a6d36/jamstack.png 650w,\n/static/340cdb9056c5600c1249391a879e37e3/e548f/jamstack.png 975w,\n/static/340cdb9056c5600c1249391a879e37e3/302a4/jamstack.png 1080w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<ul>\n<li>\n<p>Javascript</p>\n<ul>\n<li>Funcionalidades dinâmicas tratadas pelo javascript, sem restrições de framework ou bibliotecas.</li>\n</ul>\n</li>\n<li>\n<p>APIs</p>\n<ul>\n<li>Operações executadas no servidor para serem reutilizáveis e acessadas por HTTPS podendo ser de terceiros ou a sua própria função customizada.</li>\n</ul>\n</li>\n<li>\n<p>Markup</p>\n<ul>\n<li>Websites entregues tanto em HTML estáticos, podendo ser gerados dos seus arquivos fonte, Markdown e geradores de site estáticos.</li>\n</ul>\n</li>\n</ul>\n<p>Tanto Netlify quanto Vercel, oferecem um rápido ambiente de desenvolvimento e infraestrutura para deploy de projetos em poucos passos. Sem a necessidade configurações de servidores, sem uma complexa esteira de devops e tudo isso a baixo custo.</p>\n<p>Resultando em sites mais rápidos, melhoria na experiência do usuário e também na classificação do Google.</p>\n<p>Alguns exemplos em ambas plataformas:</p>\n<ul>\n<li><a href=\"https://jamstack.org/examples/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://jamstack.org/examples/</a></li>\n<li><a href=\"https://vercel.com/docs/introduction\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://vercel.com/docs/introduction</a></li>\n</ul>\n<h2 id=\"O-Projeto-Chiwawer-\" style=\"position:relative;\">O Projeto Chiwawer 🐶<a href=\"#O-Projeto-Chiwawer-\" aria-label=\"O Projeto Chiwawer  permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>Com base no git flow podemos entregar sites rapidamente e globalmente. 🙌</p>\n<p>Como exemplo, me aventurei criando um encurtador de URLs utilizando javascript, mongodb e VueJS para uma simples interface.</p>\n<p>Cadastrando uma URL e associando um “apelido” (alias) que servirá como o identificador para a aplicação realizar o redirect.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 89.57055214723925%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAEjklEQVQ4y3WU2U+UVxiHv9ve9KJJY9ILk7YWwcpmKQoVmQFlk4JoQNkUFFBApKjsy7CjAsKwDcM2bMowwzAsoyKCoCCLCCqCLNq0/8nTtzZp0jRePDlfzkmevO95f+dT3LzCcVVfwOVYJC7yvd89DLVvMH4+KnxUKnxV/6yf8Fah/hdv1H/vqX3w8w/C3z8A9fEglK9DstlzKo+9wSnYhySyPySJAyEJfOcbyb7jUdgJ9ieiOeAXw0H/WJwCYnEJPI9LwHncguM5cuoKfpdKUJ1LQx2dg/JFrpEvha/yTOzJM7O3wMK+IisOxWM4lthwr5jA69YkPtVTBNydIVT7nDON80TqFohpXeKCfol4/TLxumeUG5+hfJMzwF7hW5Ha5Q1yIN+MR9koEU1TRDU/5ULrLAltz0numCfNsEBq1wKZfSJofk6Cbp7L+hekti+SpF+k1PgK5XsR/SA4SIVOInOTCj2LRzhRaSO0eoKwmknO1k0T2zjDxU+SOZJFcqV1nhT9Amkiy+hclnWZWyYR2ucO4igy1/whDmtG8Sqz4VvxiABpM7R6moi6WWIa5ohvWZAqlkhpf8m1zhWuG1bJ7HlNVs8a2YYVbnatUDu0huIsMjeRHSkYwjOjHa90Pb43OgjMMhCS28vpgn4iiu4TVWzkfKmJuDITlyrMJFZaSKocIr1+gsK+NXINa2iH36L8LIPwLLTglW/CRRXOT0d/5ZBXCAfd/QT/z+LoEYj9ITUBkTepML5H0/OGlpF1FE+5N2+Zqm+BGVefs7j7nMHdNxw39WkcPYM+y0E3P+x+PEpQVCbVpm0q+tdpH9tA8ZZWT2hGCNJYOCRCpyOBOP8S/Aknz5P/x0OEcuZxOQP3hKsEx+WiNe9Qc3+D7vFNFL/CYU6WjBJabMXZ6xT2zsdwkFYcXFXYC/td/ou9izd2cu6Zlc/hrBwCYzPRWXbRGje592AL5aS0G1YyRoRMNzS9hbC0RsIzWjh3XcfF3A6SNQaSi7pJLe7lWmkfKUU9JBf2kpLXRUpOO0V1D2gb3qbVvMXgo22UMInK2ZJxYioeklgzw1XtPNebFsnSLaPpWqWyd53b/RvUDmxSP7iNdnCHBtMurdbf6Rz7g66Rj3QObwk7WB7voJyVJxZdaiNehElVE1ytfkLG3adka2fJa5yjqHmB0tZFytskuJ2vqOmWePS9ofn+OvrBDTqH3tNr3RF2GZ3cRYmWCuNEmChhTr31mAwJc7a82XwJc7HIyqXSKv1LqjtWqZOsNfS+peXeO9qMGxikzT7LNgMjOxhHd3k4JcI4zRiJJQ9IKX9EetUkmXemybs7i0ZaL2taoKpliWoR1omwQYQtImwXYbcMoV+qG7RuYRnbwTr+gcnpDyiJmnGSRXitfIIbVU/IvfMUTa38OUR4W+6yVreEtm2F5s5V2rpf09X/lt6BdwyYNjFb3mMd2WbctovN9pG5uT9RkvKHSS0c5bficbLKH1JQ9ZiSO1NUSds19c+ol3ts0r2gtW2R9q5lDN0r9PWtMjDwGrPpDVbLO2wjm9ism8zN7PIXsmKBqeOdMCEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"chiwawer\"\n        title=\"chiwawer\"\n        data-src=\"/static/ce95562d09c6c66c5182f72869e1bc72/a6d36/chiwawer.png\"\n        data-srcset=\"/static/ce95562d09c6c66c5182f72869e1bc72/222b7/chiwawer.png 163w,\n/static/ce95562d09c6c66c5182f72869e1bc72/ff46a/chiwawer.png 325w,\n/static/ce95562d09c6c66c5182f72869e1bc72/a6d36/chiwawer.png 650w,\n/static/ce95562d09c6c66c5182f72869e1bc72/98b29/chiwawer.png 937w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Links:</p>\n<ul>\n<li><a href=\"https://chiwawer.vercel.app/#/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Site</a></li>\n<li><a href=\"https://github.com/leoyassuda/chiwawer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Github</a></li>\n</ul>\n<p>Aqui vemos uma estrutura básica do projeto:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 269px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 212.88343558282205%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAYAAAB4pah1AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADr0lEQVRIx6VXSW/bZhT0uUB7aBNJ1MJ9X0VSoiQnliW5qGIXLYoCbVH4FnQBckvO/e+T9x61wDZik+zhM0ng83DeN+/NUBeK6WHkhJh4CcZujImfYuxEcj+0fPR1B4Omy3BxMbRDaFGJYLmBW75BuNrCLVbwqmuYSSkb+aVN14URF5he7zGgh7EXCzPFdNHXbHkjb+JrkyWAapATmy2VFxBgXbZind943PjSOgEOow2U4ncYVB6z7anWg02tARW6GWW3UJMraGF2KPl/MFR0YpR8j1f+FmY6F5YD3a7VNZqDngB7mgs78PHfv3sE0xzGdEnAlSjciSEz0UiY3WYBI0yphQqoYU7lT6HIGXptSzYxLH/DV8476FQuN/jriXFoG09aqFXJfd2F4Ue4/3ULJ84wCaZQaVpGNC1Ny30CqLo+/vpjI4B6MoM9XRDbshvg14qJD/c73P1wiZ6Tw8lrsKEdPAB8CfzM0PCxvKyQ5BlGbipiaCQKAz7e/BzoCdCi9vjlwwbjICCnqRt74tXAXD6L1EqUob+Etbqlf4zO7fKFzQ0BF+hHewIrYGWVTMtjh2ky1+dJUQ2kVzcIFmuo1DKPxWjNkCfFIUM1s7nYF7t3ExGeYWghI4bhcg2N2sVICpoSq7vb9DUTRnEDs1yLfbEv1ibrd5wUlQBLBiQ/DGpAnQyiaf89AfxWdbGbx7iaUZ7ElYydJRY278bwO9XB9ZsS1TzHwIlJ6fQgTlTbV1vAb4YW/vlzh59v32IUziRKOZdZrE4lv9IcFGWGtMgx9nPxRJXOkte4hYWdS57YWF/NUC3IYbxcMoVFYcdpOsdPRLkhUdbzBEpYin2xIHa+FJatAXtk9T6p6k7nGFL/sTmwKMyOw7894FiDPruDvdpTqTkxW4lJGOLYTntR2AO9y508MKsu1vUQkM4pWO+lvKMIx0+zNp8jZ8emqLyhNSambvkWFonBZfNZHktuxdCLYvy0W2BE7LgHa1FiYdym/BPgbJHj4997KBRQtrRMRbmcoEcWxl5ZL/vFqTkBOmRT76JMPoW5mWUdPkf4qkV5nYIv2Nn5DE0f99sV7KwG46Y205m8gFvHoGcGbgwYUYb8aPsUo1OZDu5BvjIwnylvfPx5/CygTm1Tbe/A7SMhT2yYId8zy9ai6MTm8v0nCXmJ0UOUGhTyDNx0Wk6AI/pj0vnw/PLoMUMtLMRojz8p2gU9gRliBqmcmS7JN5N8GZgdIkAO3ah/CfXl2/q4nE6j9xmvl8KViwE0cAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"folder structure\"\n        title=\"folder structure\"\n        data-src=\"/static/e4ea468fc653acdb3f8771c8a20dbd0b/98fe2/folder-structure.png\"\n        data-srcset=\"/static/e4ea468fc653acdb3f8771c8a20dbd0b/222b7/folder-structure.png 163w,\n/static/e4ea468fc653acdb3f8771c8a20dbd0b/98fe2/folder-structure.png 269w\"\n        sizes=\"(max-width: 269px) 100vw, 269px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Vamos aproveitar e focar na estrutura das pastas de <em>API</em> , pela documentação do Vercel, para criarmos nossa camada de REST, basta incluir nossos arquivos diretamente na pas API. Dentro da pasta API, criamos o arquivo <code class=\"language-text\">index.js</code> ele será a chamada raiz do nosso REST e cada arquivo funcionará com um serviço servless.</p>\n<p>Como por exemplo fazendo um GET em <a href=\"https://chiwawer.vercel.app/api\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://chiwawer.vercel.app/api</a> o index.js irá responder com uma mensagem como na imagem abaixo.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 12.269938650306749%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAACXBIWXMAAAsSAAALEgHS3X78AAAAhUlEQVQI1z3JSw6CMAAAUa5jlJ/RkxldQFvtIYyX0CO4MYAba4RNA0jxJiN+wuIlk4zXNC11XWOtHfV9P3A453h2LV374nTZczwfyLMreZFRVeWoLB8Yc8PcDd5iGRPPA6LY//t1GPkE4ZSZPxl+yHqzQimBkAlCJEiVovWWnVZImX7fxxtU1GzlDmBszAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"chiwawer get api 200\"\n        title=\"chiwawer get api 200\"\n        data-src=\"/static/c6c04a3483475982095e8eca0bbe082e/a6d36/chiwawer-get-api-200.png\"\n        data-srcset=\"/static/c6c04a3483475982095e8eca0bbe082e/222b7/chiwawer-get-api-200.png 163w,\n/static/c6c04a3483475982095e8eca0bbe082e/ff46a/chiwawer-get-api-200.png 325w,\n/static/c6c04a3483475982095e8eca0bbe082e/a6d36/chiwawer-get-api-200.png 650w,\n/static/c6c04a3483475982095e8eca0bbe082e/e548f/chiwawer-get-api-200.png 975w,\n/static/c6c04a3483475982095e8eca0bbe082e/f4281/chiwawer-get-api-200.png 1016w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Então para estruturar a sua camada de API, as pastas serão os paths, a pasta URLS será associada ao path /urls e quem irá responder será o index.js pertencente a ela.</p>\n<p>E como ficam a passagem de parâmetros?</p>\n<p>Nos nossos arquivos js podemos pegar os parâmetros de algumas formas:</p>\n<ul>\n<li>Query Parameters</li>\n<li>Body Parameters</li>\n<li>Path Segments</li>\n</ul>\n<h2 id=\"Query-Parameters-e-Body-Parameters\" style=\"position:relative;\">Query Parameters e Body Parameters<a href=\"#Query-Parameters-e-Body-Parameters\" aria-label=\"Query Parameters e Body Parameters permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">module<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">exports</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">req<span class=\"token punctuation\">,</span> res</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  res<span class=\"token punctuation\">.</span><span class=\"token function\">json</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n    body<span class=\"token operator\">:</span> req<span class=\"token punctuation\">.</span>body<span class=\"token punctuation\">,</span>\n    query<span class=\"token operator\">:</span> req<span class=\"token punctuation\">.</span>query<span class=\"token punctuation\">,</span>\n    cookies<span class=\"token operator\">:</span> req<span class=\"token punctuation\">.</span>cookies<span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>No arquivo <code class=\"language-text\">index.js</code> da nossa API, podemos receber os parâmetros req e res manipularmos conforme a nossa necessidade. Dentro do objeto req temos os objetos body e query são respectivos das chamadas REST, sendo uma query parameter <code class=\"language-text\">https://.../api?name=Leo</code> e assim temos o valor <code class=\"language-text\">name = &quot;Leo&quot;</code> e para o body, em um POST por exemplo, podemos ter <code class=\"language-text\">{ &quot;sobrenome&quot; : &quot;Yassuda&quot; }</code> .</p>\n<p><strong><a href=\"https://node-echo-api.now-examples.now.sh/api/?name=Leo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Aqui</a></strong> contém um exemplo na prática, teste também fazendo um POST passando um body json para ver o resultado.</p>\n<h2 id=\"Path-Segment\" style=\"position:relative;\">Path Segment<a href=\"#Path-Segment\" aria-label=\"Path Segment permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>Passando parametros pelo path da API exige um passo a mais mas nada complicado.</p>\n<p><code class=\"language-text\">https://.../api/name/Leo</code> - Request de exemplo.</p>\n<p>Para receber esse valor, basta criar a estrura de pastas <code class=\"language-text\">/api/name/</code> e nela o nosso js com o nome <code class=\"language-text\">[name].js</code> e sim, o arquivo tem nome entre colchetes pois na abstração de roteamento da vercel saberá encaminha a requisição para este arquivo.</p>\n<p>E no arquivo:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">module<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">exports</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">req<span class=\"token punctuation\">,</span> res</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span>\n    query<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span> name <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> req<span class=\"token punctuation\">;</span>\n\n  res<span class=\"token punctuation\">.</span><span class=\"token function\">send</span><span class=\"token punctuation\">(</span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">Hello </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>name<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">!</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p><a href=\"https://path-segment-with-node.now-examples.now.sh/api/name/Leo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Aqui um link</a> para o teste prático.</p>\n<hr>\n<h2 id=\"Site\" style=\"position:relative;\">Site<a href=\"#Site\" aria-label=\"Site permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>Para o front utilizei uma simples app em VueJs com as CDNs diretamente no HTML.</p>\n<p>Toda estrutura do VueJs e arquivos estáticos deverão ser alocadas na pasta <code class=\"language-text\">public</code>.</p>\n<p>Sem dores de cabeça e gastos com SSL para o seu site, por de baixo dos panos a Vercel usa o <a href=\"https://letsencrypt.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Let’s Encrypt</a> para adicionar o certificados aos sites e com renovação automática. Portanto desde o primeiro dia em produção com HTTPS habilitado. 😎</p>\n<hr>\n<h2 id=\"Github--Vercel\" style=\"position:relative;\">Github + Vercel<a href=\"#Github--Vercel\" aria-label=\"Github  Vercel permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>Para linkar seu repo com a conta na Vercel, vá em <a href=\"https://vercel.com/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">import</a></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 648px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 46.62576687116564%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABCUlEQVQoz51SS2uGQAz0//+kXsoHvSgeCkWLh0oVsSDq+n6v005aZfEkDQybZLOTZFhr33fcMdaZWNcVmv7fndaEhsULz/PgOA6CIIDv+7BtG67rCng3z/NJyke058cDH/4b8Ong5b3B02steWvbNjRNg6Io0HUd+r5HVVUS13UNpZRMY05JK0uFrm2AQSGrF3yp5adA/xL+Z+XDtFHDxkJYliXyPEcURUjTFHEcIwxDJEki+SzLzimvDUAZxAfIZVGTtm1lXa5InxJwbZ7MMzcMA6ZpwjiOoul1YuIkZHcGPK8+sSyLkBynqalpQsgik+gujnqzCX2LwbEqfa51F6ynJPwRfE85vgHq6bupEQLz/AAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"chiwawer import github vercel\"\n        title=\"chiwawer import github vercel\"\n        data-src=\"/static/7b4ac67c60c8359f31694ab868585ccf/3996e/chiwawer-import-github-vercel.png\"\n        data-srcset=\"/static/7b4ac67c60c8359f31694ab868585ccf/222b7/chiwawer-import-github-vercel.png 163w,\n/static/7b4ac67c60c8359f31694ab868585ccf/ff46a/chiwawer-import-github-vercel.png 325w,\n/static/7b4ac67c60c8359f31694ab868585ccf/3996e/chiwawer-import-github-vercel.png 648w\"\n        sizes=\"(max-width: 648px) 100vw, 648px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Insira a url do seu repo, nas próximas etapas de projeto é onde feita a configuração do framework usado, build e a localização da pasta do código.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 64.41717791411043%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABRUlEQVQ4y32T6XKDMAyE8/5vmKYp4XchkIC5E4VPsB5ytJ5ZJOvyWha7cRjser1aXdeOqqoshEWC2+1mrPv9btvFXtjadnVV236/t1Nysp8kscP3wdI0tePxaF+zvW07D5ym6QkcJMjmBcdxXNkFZya2YliWpRVFYefz2YEOyrKIdnKaplkKDvOVs+x3Rm55ns+MWuv7PkpAjAABpOxIXdsLQjmE4EymcXrr01P/1DeztzgO4tq7mPRPsz+tTw8Se8j1YNl1XXxVXRvQH3zao4vRMPSeGxnyIYAkiqgg/VEBFflccPDcp4IYOCWsDhZJ2OTTgwjsyYUEUyG/P4oCFIxt+5KvxQTNn/zOEEUzp/nD0XbL1aZ1cF+LiSExzGFkKCYCAUD6tmd/sUQS7wVJ0MQjsyxb/4TlD2HY0beHvoI+Xy4X1x9E2PgDSWzFVAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"chiwawer build github vercel\"\n        title=\"chiwawer build github vercel\"\n        data-src=\"/static/69360ff4e4eece2ec501fb8ea2ecba11/a6d36/chiwawer-build-github-vercel.png\"\n        data-srcset=\"/static/69360ff4e4eece2ec501fb8ea2ecba11/222b7/chiwawer-build-github-vercel.png 163w,\n/static/69360ff4e4eece2ec501fb8ea2ecba11/ff46a/chiwawer-build-github-vercel.png 325w,\n/static/69360ff4e4eece2ec501fb8ea2ecba11/a6d36/chiwawer-build-github-vercel.png 650w,\n/static/69360ff4e4eece2ec501fb8ea2ecba11/8ae3e/chiwawer-build-github-vercel.png 756w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Nas variáveis de ambiente, podemos configurar informações para o usa na aplicação como a conexão do mongoDB e node_env.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 45.39877300613497%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsSAAALEgHS3X78AAAA+0lEQVQoz3VS23GEMBBzc1SVK4ZCaIA++AYM2GD8UNDebeJcuJ3RDF7bsqTFWGsxjiNCCHDeIcaIdV2xOYecM+6qlPIHKSW5x28zTRPmeZYmQRJu6oF6fZ6ngL2asC7jLyVKVsp/RSSiC6oW5dv2OvtL1nUd2rbFMAwwJ61epEQIESkXxPREzkUeYRxUdmeZ9fV4oGka9H0Ps+87CO89Vp9gXcZyYd6ykNeW3rO7tUwLVFdnRBzHIRbrNbMmVDFBIQS/GYUotHYRlToEnRwfIpH238E+yQldG15YluUno6cNyAEl/GSXpUq1Z8JrKPXkVBHJuP8pO6L+xYhvweK+fj/9yggAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"chiwawer variaveis ambiente\"\n        title=\"chiwawer variaveis ambiente\"\n        data-src=\"/static/b5643772fc8ce998f65665af9e43b525/a6d36/chiwawer-variaveis-ambiente.png\"\n        data-srcset=\"/static/b5643772fc8ce998f65665af9e43b525/222b7/chiwawer-variaveis-ambiente.png 163w,\n/static/b5643772fc8ce998f65665af9e43b525/ff46a/chiwawer-variaveis-ambiente.png 325w,\n/static/b5643772fc8ce998f65665af9e43b525/a6d36/chiwawer-variaveis-ambiente.png 650w,\n/static/b5643772fc8ce998f65665af9e43b525/4971b/chiwawer-variaveis-ambiente.png 784w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Feito deploy, já é possível acessar o dashboard com o projeto em execução.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 595px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 70.5521472392638%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABxUlEQVQ4y6VUy27TUBD13xZWrAFViF+BBUQqGySkBClb2rDJMpumRYmfOH7EseO3D3OmuLiN2w0jzZ07vp4z586MbUClQxpFSNNCvaqqcTweRXNE+jyVZ5XaLMvQti3qukbXdXfRfy3FaLsW2SHFpw8TfPz8DablIgoDfJ/NcLVY4OryBy4uvmA+n2MymWA6nUmSGK7jKPAJYNPUuFz8xPs35zh79Rpfp3M9IBMyrKoSlbBp/8U8ABjuFZDLzc0aL16e4e35O7iuh6LI8ev2FqZpYmtaqHMBj3YIhRlLMGT2WI0+Q5IkaIQNhfVhvfqaoW1QpAn28s7hcBi9au8bwwOapmlOX8SpjLHTKw+doZDFWNBTQLSMMXi9siyxWq2wXC5VN5sNHjI/bUJvGR/v9+pztAyCccPahGGoytoNr/XcnqyIQZ9WAUsZnaQuEQY77WIs6v32NInv+6qZDDrZPK7fUBSwkqUQQP+YwtxuYVkWPM/FVq7tyQjZtiWj5CCOY/i7HfI8RzMyNveAXJiZ1Nnhp7Q/f65Zdwylfsy6Xl/r52TbNhzbgSUDzWKPjQuF4GEQIJCaB2JTmdf7pvBHwAH+XyWxP3zfN4tl/P0VAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"chiwawwer project dashboard vercel\"\n        title=\"chiwawwer project dashboard vercel\"\n        data-src=\"/static/e5392416238bd4a0da753d8ad0ab1a8d/3dd3e/chiwawwer-project-dashboard-vercel.png\"\n        data-srcset=\"/static/e5392416238bd4a0da753d8ad0ab1a8d/222b7/chiwawwer-project-dashboard-vercel.png 163w,\n/static/e5392416238bd4a0da753d8ad0ab1a8d/ff46a/chiwawwer-project-dashboard-vercel.png 325w,\n/static/e5392416238bd4a0da753d8ad0ab1a8d/3dd3e/chiwawwer-project-dashboard-vercel.png 595w\"\n        sizes=\"(max-width: 595px) 100vw, 595px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Ao acessar o projeto já temos uma pré-visualização do deploy.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 49.079754601226995%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACMElEQVQoz12Sy08TURTG519xb3TlAo2JKx+JCSFRcachBNPoShYaMYYAiVWxKroQMSnBwALQAuWhiG2M0QRKUNOmrUWYYul0pkynpTNt59GZz3svDime5MuZe2bub75z7uXyeQmCICCXy7GczWZRVlVYlgXDMPZkmtB1HeVyGZVqFbVaDSr5RtMqrK5pGlTyThQlcJIkIs3z2M5kkE6nsUVUKBTYJpOATNNgmYJpjYpC3Gdad6HUFGdSJ65Mi7mp0Q1EhmGytcHAe6LO6/X6vujarTmODW6Zl3DmxSIuDYbQ7v+K2+Nr6JuO4tFsHP3BOHzBGB4GooikRJQUGYpSZM6qpHUKoeE4DsuWVQcXimdwqHMMx7re4nT3FFq9c2h78hGegU+4MRDCLf8qOoci+PxTgF5RCUxnrdFZuzAXSH/AfUtmcepeABe973GyxYMjTWdx9MR5HG46h+MtbXgwsoJn40lEEhI5lBKbV7FYJE4VNjfarhsMuJIU0Nw9g/b+JVy4/hjNV++i9VovLnv60NEzhNeTUQwHUoiuy2SWNfwzw4K2btv2QeDarxyu9M7hpi+Mnler8L2JYXAihdEgj3fzPKY/bGJqfgOJpAhZzu+7chrIB1r+kRDQ0TWDO/eX4H36Bc9fLsM/8h2TEzEszKYQXtxAeGEdGV5B3baYK/cw/g8GLO1WkPotYZPfwZ+tArLbCnJCCXlxF3K+DGVHhUJyVdNhk2tBW2y8Lo2i1+ovAJ/GF/11EVgAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"chiwawer production deployment\"\n        title=\"chiwawer production deployment\"\n        data-src=\"/static/bc91a8b0c972430d9bdfe7f39ed48d1d/a6d36/chiwawer-production-deployment.png\"\n        data-srcset=\"/static/bc91a8b0c972430d9bdfe7f39ed48d1d/222b7/chiwawer-production-deployment.png 163w,\n/static/bc91a8b0c972430d9bdfe7f39ed48d1d/ff46a/chiwawer-production-deployment.png 325w,\n/static/bc91a8b0c972430d9bdfe7f39ed48d1d/a6d36/chiwawer-production-deployment.png 650w,\n/static/bc91a8b0c972430d9bdfe7f39ed48d1d/e548f/chiwawer-production-deployment.png 975w,\n/static/bc91a8b0c972430d9bdfe7f39ed48d1d/b6529/chiwawer-production-deployment.png 1049w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Como o projeto está associado ao repo do github, a cada atualização na branch master, automaticamente será feito o build e deploy em produção.</p>\n<p>Um bom jeito para o desenvolvimento é seguir um git flow e fazendo os pull request, a cada pull request é possível realizar testes do que foi alterado um uma url pertencente a essa etapa do flow. Após essa verificação e realizando merge em master, o procedimento de produção será inciado.</p>\n<p>Para os detalhes do projeto, visite o repo no github 😊</p>\n<p>👉 <a href=\"https://github.com/leoyassuda/chiwawer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">chiwawer</a> 🐶</p>","fields":{"slug":"/jamstack-vercel/"},"frontmatter":{"date":"05 de setembro de 2020","description":"Criando uma aplicação com jamstack e fazendo deploy na arquitetura da Vercel","title":"Experimentando o jamstack da Vercel","tags":["Javascript","Jamstack","Verce","Servless"],"author":"Leo Yassuda","image":{"id":"fd1b5650-d3d3-5881-badb-b15aad2889e1","publicURL":"/static/340cdb9056c5600c1249391a879e37e3/jamstack.png","childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADk0lEQVQ4y3VV/XMTRRjOf+I4WnVGR51xHOUHFL8mAgLShlz2vnb37pK0SS4hbW0KR9JGnNYOSjV+NBWdEYsdUyqtgJSCdvygxR/5jx7evdy1CcUfnnl293afez/2fTfxZrUChUOEt06X8cbo6XCu+GCEY6WPkBqeRJCqoHW4hC+P+MQ+viJ8myyjnaxggViNE4bjIOO60IktKaF5LjIExUO5HAbzORwfyeNYYRgm7XFtgawlQxQMB+PpLM6m8pgaHMYnJ0aQEJxDEkSE3rETzR2bw+U2pODgQkBIxRw2waSxIW0ypjtPqA2PIhSxLHCbRIhdmuumBDNIwORguoBNlkolzvuREJGIskixsiZNrh/0S3iV4neg4uOwcFCrMCxcYPjhC4bPz+vIZy2YFp1TVj8quCtGPEixey6YxFPNBp5p1vHE1BTcdhmb6wa213TcWzOws67jxmWGctHsEaUwiV4LFdPiyxNjGJiu44V6gIGgjnfnxrGymUVnI4uNjo4twt0OwzaJLi8wcr0rpET7BEPrXInXJhuY9dtoFRbByhcx8l0Ft+646NzK4fYqx9bVDB60JnD/xxzurmjwC5QQ638EU66D588FeD2YxgHCs7UGvI6H1raDmX88LN1O469fGP5dksQW/lxhqPp7sXysyy/WxvFk8xyerp/BK98XUVi8gPPz62jMbeDj5Qbad07hD3L572vdOLpOlJQ+wd0M2/gwn8XAmQAvtcaQ3HRx4ucA1RujmLs+hpnfi6j/p6FzM4OdVYZmYMIwRXg/91u4m2kbg46H9xYdHL0pkfzNxNC6hsrWSdS3h1Df0fDp9TSaNbPH1djKHkEeZSq82KYN46IG46oO+4oO5ycL4rINvmyAX2PIzGvQ2V5297m8J8q7ZWUIGNM6NLKsukjZrLWwUZtH6RLV+Br9aIpBGGqviO5fLN4jKKIyCkWJbccGa2dgr1JVLAnkrlDZ/cqgqzX61ru3V6NPMN4QMtWq7ZHrszoyl7QQxowerqlvfXv7BPn+AhdxTOigMLqHQpgijNfjGkqMhEmtR7WguP3E4NHfuey2MNeywxsgQ+y1uPh2xOPExKkcRjUPPnORixqnR1BikkRdqlXN83C0OIyT1GxTuWw4Nx1JhsiwKSshm0QVEqp1f/N+GV8TVFtXmD9SwuzxAj77oETjIs6mq5BOjZ6GavgkqOfhUPR0vE3PRpJa3TuVMsHHQz/KeFI36ajFAAAAAElFTkSuQmCC","aspectRatio":1,"src":"/static/340cdb9056c5600c1249391a879e37e3/b37ff/jamstack.png","srcSet":"/static/340cdb9056c5600c1249391a879e37e3/c67b7/jamstack.png 320w,\n/static/340cdb9056c5600c1249391a879e37e3/d3930/jamstack.png 640w,\n/static/340cdb9056c5600c1249391a879e37e3/b37ff/jamstack.png 1080w","sizes":"(max-width: 1080px) 100vw, 1080px"}}}},"timeToRead":5}},"pageContext":{"slug":"/jamstack-vercel/","previous":{"fields":{"slug":"/como-decidi-virar-desenvolvedora/"},"frontmatter":{"title":"Como decidi virar Desenvolvedora","date":"02 set, 2020"}},"next":{"fields":{"slug":"/minha-experiencia-com-a-laboratoria/"},"frontmatter":{"title":"Minha experiência com a Laboratória","date":"08 set, 2020"}}}},"staticQueryHashes":["63159454"]}