Diagrama de arquitetura de software mostrando os serviços da Cloudflare e IA integrada para construir um aplicativo full-stack.

IA e Cloudflare Workers: Construindo Apps Full-Stack | Brasi

Por Pedro W. • 3 min de leitura

Em um mundo cada vez mais digital, criar um portfólio web não deveria exigir conhecimento de HTML. Essa foi a ideia central que impulsionou a criação de um ambicioso projeto.

O objetivo era desenvolver um aplicativo de produção utilizando exclusivamente os serviços da Cloudflare, como D1, R2, Queues, Durable Objects e Workers, sem depender de ferramentas externas como Supabase ou Postgres. O resultado é o clickfolio.me, uma plataforma onde você carrega um PDF do seu currículo e a Inteligência Artificial o analisa para gerar um portfólio web personalizável com uma URL pública.

Apesar da proposta simples, a arquitetura por trás dessa solução é bastante complexa e inovadora.

A Pilha Tecnológica

Antes de mergulharmos nos detalhes mais interessantes, vamos conhecer os pilares tecnológicos que sustentam o aplicativo:

Quem acompanha o Brasil Vibe Coding pode ter visto a discussão sobre as limitações e possibilidades dos Cloudflare Workers. Este projeto enfrentou muitos dos desafios anteriores e incorporou novas funcionalidades, como autenticação, uploads de arquivos, processamento de IA e atualizações em tempo real, além de sete modelos de currículo diferentes.

O Padrão de Reivindicação: Upload Antes da Autenticação

Um dos dilemas da experiência do usuário é: como permitir que o usuário experimente a funcionalidade principal antes de se registrar? A maioria dos aplicativos exige login, o que pode desmotivar o usuário.

A solução adotada aqui, chamada de Padrão de Reivindicação (Claim Check Pattern), funciona como um guarda-volumes. Você entrega algo, recebe um bilhete e pode reivindicá-lo depois.

Passo 1: Upload Anônimo

Não é preciso ter uma conta. O usuário envia o PDF para POST /api/upload. O worker valida o arquivo (tipo de conteúdo, máximo de 5MB, verifica a assinatura PDF com %PDF- nos primeiros bytes).

Em seguida, armazena o arquivo no R2 com uma chave temporária (temp/{uuid}/{filename}) e retorna essa chave. O sistema aplica limite de requisições por IP: 10 por hora, 50 por dia, com IPs anonimizados (SHA-256) para proteger a privacidade.

Passo 2: Autenticação

O processo de autenticação é feito via Google OAuth ou e-mail/senha, utilizando o Better Auth. A chave de upload temporária é mantida em um cookie HTTP-only durante todo esse processo.

Passo 3: Reivindicação

O endpoint POST /api/resume/claim conecta o upload anônimo ao usuário autenticado. É aqui que a magia acontece.

// Fluxo de reivindicação simplificado — o código real lida com muitos mais casos de borda
const fileBytes = await R2.getAsUint8Array(</span>env.R2_BUCKET</span>,</span> tempKey);</span>
const fileHash = await computeSHA256(</span>fileBytes);</span>

// Verifica se este PDF exato já foi analisado para este usuário
const cached = await db.query(</span>...

Este sistema não só melhora a experiência do usuário, permitindo testar a funcionalidade antes do compromisso de login, mas também otimiza o uso dos recursos, evitando reprocessar o mesmo arquivo.

Conclusão

A construção do clickfolio.me demonstra a capacidade dos serviços da Cloudflare em criar aplicações full-stack robustas e inovadoras, com forte uso de Inteligência Artificial. A abordagem de usar a IA para analisar currículos e o Padrão de Reivindicação para o fluxo de autenticação são exemplos claros de como a tecnologia pode simplificar processos complexos.

Continue acompanhando o Brasil Vibe Coding para mais novidades sobre IA, desenvolvimento e soluções de ponta!

Tags: Cloudflare IA Full-Stack Workers D1 R2 Queues Durable Objects Next.js

Perguntas Frequentes

O que é o clickfolio.me?

É uma plataforma que utiliza Inteligência Artificial para analisar um currículo em PDF e gerar um portfólio web personalizável com uma URL pública, construída exclusivamente com serviços Cloudflare.

Quais serviços da Cloudflare foram usados no projeto?

Foram utilizados D1 (SQLite), R2 (armazenamento), Queues (filas de mensagens), Durable Objects (estado distribuído) e Workers (execução de código serverless).

O que é o Padrão de Reivindicação (Claim Check Pattern)?

É uma solução de UX que permite o upload anônimo de um arquivo. O usuário recebe uma 'chave temporária' e só precisa autenticar e 'reivindicar' o arquivo posteriormente, evitando a obrigatoriedade de login inicial.

Qual IA foi utilizada para análise de currículos?

Foi utilizado o Gemini 2.5 Flash Lite para fazer a análise (parsing) dos currículos.