Mark Stratmann
ABout Background

Sobre este site

Porque criei este site

Porque é que este site existe?

Um problema recorrente ao aprender qualquer tecnologia nova é que a maioria da documentação e dos exemplos que se encontram na internet ou que vêm das IAs são tão triviais que não dão qualquer noção de se a tecnologia — ou a sua implementação — vai aguentar uma carga de trabalho real e complexa. Um exemplo disso são os inúmeros exemplos de listas de tarefas.

Tenho planeado um projeto SASS baseado em várias suposições tecnológicas que precisam de ser testadas antes sequer de tentar construir o projeto real, e um site de perfil pessoal como este, suportado por um backend completo de CMS, é suficientemente complexo para justificar uma construção de produção adequada e suficientemente simples para não demorar demasiado a montar; com a vantagem adicional de que, se tudo correr bem, fico com um site de perfil que tem bom desempenho e será uma boa plataforma de testes para experiências técnicas mais avançadas.

Cloudflare como alvo de deployment

O Cloudflare Workers https://workers.cloudflare.com/ parece, à primeira vista, ser uma forma extremamente barata de fazer o deployment de uma aplicação complexa. O desenvolvimento de back-end parece simples e robusto, e o pacote OpenNext https://opennext.js.org/ aparenta fornecer uma forma eficiente de desenvolver o front-end em Next.js https://nextjs.org/ e fazer o deployment para a Cloudflare.

Duvido que este site atraia muito tráfego humano; no entanto, vou tentar encaminhar para ele o máximo de tráfego possível de pesquisa web e de crawlers de IA. Dessa forma, devo conseguir perceber o custo real de executar um site muito movimentado na plataforma da Cloudflare.

Tornar este site mais complicado do que deveria ser

Backend de Gestão de Conteúdos (CMS)

Com toda a honestidade, este site, tal como está atualmente, podia ser montado à pressa com um agente de código em poucas horas; no entanto, um sistema sério não deve precisar de um deployment para alterar conteúdo básico. Por isso, este site usa um CMS completo baseado no Payload CMS (https://payloadcms.com/) implementado como um Cloudflare Worker separado.

O próprio Payload usa uma base de dados SQL, que por sua vez precisa de ser implementada como uma instância de base de dados CloudFlare D1 SQLite https://developers.cloudflare.com/d1/, e devidamente gerida com migrações de base de dados para suportar o ciclo de vida de desenvolvimento.

Traduções automatizadas

Este site suporta 20 idiomas. Dado que o website é um scaffold simples para o conteúdo do CMS, a parte de i18n é tratada com um agente de código (Co-pilot e Claude Opus 4.5) durante o desenvolvimento.

Isto deixa todo o conteúdo atual e futuro do CMS a precisar de ser traduzido automaticamente sempre que qualquer conteúdo em inglês seja alterado.

Worker baseada em Queue e Cron

O requisito de tradução exige um processo razoavelmente complicado que:

  • Será acionado por um temporizador Cron.
  • Identifica qualquer conteúdo que precise de uma nova tradução.
  • Executa uma tradução de forma fiável.
  • Recupera de uma falha de forma fiável.

Por isso, é usada outra instância de CloudFlare D1 para acompanhar o trabalho de tradução, e são usadas as Cloudflare queues (https://developers.cloudflare.com/queues/) com um padrão produtor-consumidor baseado em cron para gerir e escalar as tarefas. A API gpt-5.2 da OpenAI é chamada para fazer as traduções e a AI.SDK https://ai-sdk.dev/ integra tudo.

Para este site, é demasiado, mas qualquer sistema em produção, a qualquer escala, precisa de um padrão robusto para orquestrar o processamento em background.

Versões anteriores deste site

Já fiz este site duas vezes como ferramenta para aprender novas tecnologias:

2013 - Aprender Ruby e AWS

  • Ruby on Rails v4.0.0.
  • Estilização Bootstrap v3.
  • CoffeeScript para a UI.
  • Padrão de front-end Backbone Marionette VMC.
  • Implementado num host AWS.

2017 - Aprender React

  • React v16.0.0 para UI.
  • Redux e Thunk para operações assíncronas.
  • Semantic UI para estilização.

O que se segue

O site está devidamente configurado para SEO, e é necessária uma cadência regular de novo conteúdo para gerar tráfego de crawlers. Vou publicar artigos mais detalhados sobre as várias tecnologias e soluções utilizadas.