DEV Community

Cover image for Experimentando o jamstack da Vercel com um encurtador de URLs
Leo Yassuda
Leo Yassuda

Posted on

2

Experimentando o jamstack da Vercel com um encurtador de URLs

Ultimamente tenho visto em muitos lugares os seguintes nomes: jamstack, Netlify e Vercel. Como a curiosidade procurei alguns canais e blogs para saber mais a respeito.

Sendo breve o termo jamstack foi criado por Matt Biilmann (CEO da Netlify) onde ele diz "A modern web development architecture based on client-side JavaScript, reusable APIs, and prebuilt Markup"

Alt Text

  • Javascript

    • Funcionalidades dinâmicas tratadas pelo javascript, sem restrições de framework ou bibliotecas.
  • APIs

    • 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.
  • Markup

    • Websites entregues tanto em HTML estáticos, podendo ser gerados dos seus arquivos fonte, Markdown e geradores de site estáticos.

Tanto Netlify quanto Vercel, oferecem um rápido ambiente de desenvolvimento e infraestrutura para deploy de projetos em poucos passos. Sem servidores, sem uma complexa esteira de devops e baixo custo.

Resultando em sites mais rápidos, melhoria na experiência do usuário e na classificação do Google.

Alguns exemplos em ambas plataformas:

O Projeto Chiwawer 🐶

Com base no git flow podemos entregar sites rapidamente e globalmente. 🙌

Como exemplo, me aventurei criando um encurtador de URLs utilizando javascript, mongodb e VueJS para uma simples interface.

Cadastrando uma URL e associando um "apelido" (alias) que servirá como o identificador para a aplicação realizar o redirect.

Alt Text

Links:

Aqui vemos uma estrutura básica do projeto:

Alt Text

Vamos aproveitar e focar na estrutura das pastas de API , 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 index.js ele será a chamada raiz do nosso REST e cada arquivo funcionará com um serviço servless.

Como por exemplo fazendo um GET em https://chiwawer.vercel.app/api o index.js irá responder com uma mensagem como na imagem abaixo.

Alt Text

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.

E como ficam a passagem de parâmetros?

Nos nossos arquivos js podemos pegar os parâmetros de algumas formas:

  • Query Parameters
  • Body Parameters
  • Path Segments

Query Parameters e Body Parameters

module.exports = (req, res) => {
  res.json({
    body: req.body,
    query: req.query,
    cookies: req.cookies,
  });
};
Enter fullscreen mode Exit fullscreen mode

No arquivo index.js 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 https://.../api?name=Leo e assim temos o valor name = "Leo" e para o body, em um POST por exemplo, podemos ter { "sobrenome" : "Yassuda" } .

Aqui contém um exemplo na prática, teste também fazendo um POST passando um body json para ver o resultado.

Path Segment

Passando parametros pelo path da API exige um passo a mais mas nada complicado.

https://.../api/name/Leo - Request de exemplo.

Para receber esse valor, basta criar a estrura de pastas /api/name/ e nela o nosso js com o nome [name].js e sim, o arquivo tem nome entre colchetes pois na abstração de roteamento da vercel saberá encaminha a requisição para este arquivo.

E no arquivo:

module.exports = (req, res) => {
  const {
    query: { name },
  } = req;

  res.send(`Hello ${name}!`);
};
Enter fullscreen mode Exit fullscreen mode

Aqui um link para o teste prático.


Site

Para o front utilizei uma simples app em VueJs com as CDNs diretamente no HTML.

Toda estrutura do VueJs e arquivos estáticos deverão ser alocadas na pasta public.

Sem dores de cabeça e gastos com SSL para o seu site, por de baixo dos panos a Vercel usa o Let's Encrypt para adicionar o certificados aos sites e com renovação automática. Portanto desde o primeiro dia em produção com HTTPS habilitado. 😎


Github + Vercel

Para linkar seu repo com a conta na Vercel, vá em import

Alt Text

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.

Alt Text

Nas variáveis de ambiente, podemos configurar informações para o usa na aplicação como a conexão do mongoDB e node_env.

Alt Text

Feito deploy, já é possível acessar o dashboard com o projeto em execução.

Alt Text

Ao acessar o projeto já temos uma pré-vizualição do deploy.

Alt Text

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.

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 pertecente a essa etapa do flow. Após essa verificação e realizando merge em master, o procedimento de produção será inciado.

Para os detalhes do projeto, visite o repo no github 😊

👉 chiwawer 🐶

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

Top comments (0)

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post