Back

Val Town: JavaScript Serverless no Navegador

Val Town: JavaScript Serverless no Navegador

Se você já precisou de um endpoint de webhook rápido, uma busca de dados agendada ou uma API leve—mas não queria provisionar um servidor, configurar roles IAM ou mexer com um pipeline de deployment—Val Town foi construído exatamente para essa situação.

Val Town é uma plataforma baseada no navegador para escrever e fazer deploy de JavaScript e TypeScript serverless. Você escreve código no navegador, e ele é executado em um runtime Deno gerenciado na nuvem. Seu código nunca é executado no navegador do usuário final—essa é uma distinção importante. O navegador é apenas o editor. A execução acontece no lado do servidor, em um ambiente Deno isolado (sandboxed) totalmente gerenciado pelo Val Town.

Principais Pontos

  • Val Town é uma plataforma baseada no navegador para escrever e fazer deploy de JavaScript/TypeScript serverless em um runtime Deno gerenciado
  • O código é organizado em vals—unidades versionadas e instantaneamente deployáveis, acionadas por requisições HTTP, agendamentos cron ou emails recebidos
  • Serviços integrados como SQLite, blob storage, email e um cliente OpenAI eliminam a necessidade de infraestrutura externa em projetos pequenos
  • Val Town é ideal para APIs leves, webhooks, jobs agendados e código de integração, mas não para workloads de longa duração ou com uso intensivo de computação

O Que É um Val? A Unidade Central do JavaScript Serverless do Val Town

Tudo no Val Town é organizado em torno de vals—unidades de código versionadas e deployáveis. Pense em um val como uma função ou serviço pequeno e autocontido. Cada val é armazenado, versionado e instantaneamente deployado no momento em que você o salva.

Vals suportam três tipos de gatilhos:

  • HTTP: Responde a requisições web. Seu val recebe um objeto Request e retorna um Response—semântica padrão da Fetch API, familiar para quem já usou Cloudflare Workers.
  • Cron: Executa em um agendamento usando sintaxe cron ou agendamentos simples baseados em intervalos. Útil para tarefas periódicas como envio de relatórios ou sincronização de dados.
  • Email: Dispara quando um email é recebido em um endereço do Val Town. Bom para construir automações leves acionadas por email.

O Runtime Deno do Val Town: Onde Seu Código Realmente Executa

Val Town usa Deno como seu runtime, não Node.js. Isso importa na prática. Você importa módulos via URL ou usando especificadores npm: em vez de usar package.json. Muitas APIs específicas do Node.js (fs, path) se comportam de forma diferente ou não estão disponíveis.

A vantagem: o modelo de permissões e o sistema de módulos do Deno são bem adequados para um ambiente isolado e multi-tenant. A contrapartida: alguns pacotes npm que dependem de internals do Node não funcionarão sem ajustes.

Capacidades Integradas para Desenvolvimento Backend Leve

Val Town inclui uma biblioteca padrão de serviços hospedados para que você não precise configurar infraestrutura externa para necessidades comuns:

  • SQLite — Armazenamento de dados persistente e estruturado por val. Bom para pequenos datasets, contadores e estado.
  • Blob Storage — Armazene e recupere dados arbitrários: arquivos JSON, imagens, texto.
  • Email — Envie emails diretamente de um val com uma única chamada de função.
  • OpenAI — Um cliente OpenAI pré-configurado, pronto para usar sem gerenciar chaves de API no seu código.

Aqui está um val HTTP mínimo para ilustrar o padrão:

export default async function handler(req: Request): Promise<Response> {
  const data = { message: "Hello from Val Town", timestamp: Date.now() }
  return new Response(JSON.stringify(data), {
    headers: { "Content-Type": "application/json" },
  })
}

Salve-o, e ele estará disponível em uma URL pública imediatamente. Sem etapa de build, sem comando de deploy.

Quando Usar Val Town—e Quando Não Usar

Val Town se encaixa bem quando você precisa de:

  • Uma API serverless rápida ou receptor de webhook sem configuração de infraestrutura
  • Jobs agendados que executam em um cronograma cron
  • Código de integração conectando serviços de terceiros
  • Prototipagem rápida de lógica backend

É menos adequado para:

  • Processos de longa duração (limites de tempo de execução se aplicam)
  • Workloads de computação pesada
  • Aplicações que requerem pacotes Node.js específicos com bindings nativos
  • Arquiteturas complexas multi-serviço onde uma plataforma completa (AWS, GCP) faz mais sentido

Desenvolvimento Local e Ferramentas

O desenvolvimento baseado no navegador é conveniente, mas Val Town também suporta workflows locais. A CLI do Val Town permite editar e fazer deploy de vals do seu terminal. Há também um guia MCP para desenvolvimento assistido por LLM, e um SDK JavaScript para acesso programático via API REST.

Conclusão

Val Town ocupa um nicho específico e útil: desenvolvimento serverless baseado no navegador para pequenos serviços, automações e APIs. Ele remove quase todo o atrito de deployment para os tipos de tarefas backend leves que desenvolvedores frontend regularmente precisam. Se seu caso de uso se encaixa dentro do modelo de execução e do runtime Deno, é uma das formas mais rápidas de ir da ideia ao endpoint em execução.

Perguntas Frequentes

Sim, mas com ressalvas. Val Town executa em Deno, então você importa pacotes npm usando a sintaxe de especificador npm: em vez de instalá-los via package.json. A maioria dos pacotes npm de JavaScript puro funciona bem. No entanto, pacotes que dependem de internals do Node.js ou bindings nativos C++ podem não funcionar corretamente no ambiente Deno isolado.

Val Town oferece um plano gratuito com limites em execuções e recursos. Por exemplo, enviar emails para destinatários externos e limites de uso mais altos são reservados para planos pagos. Planos pagos estão disponíveis para limites aumentados, tempos de execução mais longos e recursos adicionais como vals privados. Consulte a página de preços do Val Town para detalhes atuais sobre limites de planos e custos.

Val Town fornece um gerenciador de secrets integrado onde você pode armazenar chaves de API e valores sensíveis. Esses secrets são acessíveis dentro dos seus vals como variáveis de ambiente através de Deno.env.get ou process.env, mantendo credenciais fora do seu código-fonte. Secrets são vinculados à sua conta e não são visíveis para outros usuários.

Val Town impõe limites de tempo de execução que variam por plano. Vals do plano gratuito normalmente têm uma janela de timeout mais curta, enquanto planos pagos oferecem tempos de execução estendidos. Esses limites tornam Val Town inadequado para processos em background de longa duração, mas perfeitamente adequado para handlers de API, tarefas agendadas e automações rápidas.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay