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.
