
Desenvolva um app no Ghost + Fly.io por $2/mês
Colocar um aplicativo público real na internet não deveria custar $25/mês apenas para o Postgres gerenciado — antes mesmo de você adicionar computação ou enviar um recurso. O Ghost fornece o banco de dados, o Fly.io fornece o host, e seu agente de IA faz a parte de encanamento.
Você pode lançar um aplicativo de hobby com tráfego esparso voltado para o público, apoiado pelo Postgres, por aproximadamente o custo de um café por mês.
Para quem isso é
Este guia é para desenvolvedores que usam um agente de codificação de IA (Claude Code, Cursor, Codex, Windsurf, etc.) e querem enviar um pequeno aplicativo público de forma rápida e barata. Você não precisa saber SQL ou Docker — o agente cuida de ambos — mas deve estar confortável em aprovar comandos de shell que o agente executa em seu nome.
Você vai precisar de:
- Um agente de codificação de IA com suporte a MCP e uma ferramenta Bash/shell (Claude Code, Cursor em modo agente, Codex, Windsurf, Gemini CLI, VS Code, Kiro ou Antigravity). A ferramenta de shell é o que permite que o agente execute
flyctlenpmem seu nome — a maioria dos agentes modernos possui isso. - macOS, Linux ou Windows (WSL recomendado no Windows para
flyctl). - Uma conta Fly.io com um cartão de crédito cadastrado.
- Uma conexão com a internet. O agente instalará todo o resto (
flyctl, Node, etc.) por conta própria.
O que é o Ghost
Ghost é o Postgres para construtores e seus agentes. Bancos de dados ilimitados, medidos por horas de computação ativa. Tudo via CLI e MCP, sem necessidade de GUI.
Crie um em segundos, faça um fork como no git quando quiser experimentar com segurança, compartilhe com um link simples como um documento do Google. Gradue-se para produção com um comando ou jogue fora quando terminar.
A camada gratuita cobre 100 horas de computação ativa por mês e 1TB de armazenamento. A computação é medida em blocos de 15 minutos quando algo consulta o banco de dados; um banco de dados ocioso não consome computação. Um aplicativo de hobby com tráfego esparso — um punhado de visitas humanas por dia — se encaixa confortavelmente na camada gratuita.
Você pode fazer isso com alternativas ao Postgres gerenciado como Neon, Supabase ou RDS — mas esses cobram uma taxa mensal fixa, limitam a contagem de projetos ou o forçam a passar por uma GUI para alterações que o agente poderia fazer em segundos. O Ghost é a maneira mais barata e nativa para agentes de enviar um aplicativo público com um verdadeiro Postgres.
O que você fará
Neste guia, vamos implantar um aplicativo de tarefas públicas no Fly.io com um banco de dados Ghost Postgres. Após um bootstrap único, o agente faz todo o resto — você apenas cola os prompts.
-
Bootstrap (você): instale o Ghost CLI e
flyctl, faça login, configure o servidor Ghost MCP em seu agente. -
Estruture o aplicativo + crie o banco de dados + defina o esquema (agente): gere um pequeno aplicativo de tarefas Express, crie um banco de dados Ghost, defina uma tabela
todos. -
Conecte o aplicativo ao banco de dados e teste localmente (agente): defina
DATABASE_URL, execute o aplicativo emlocalhost, faça uma viagem de ida e volta de uma tarefa pelo banco de dados. -
Implante no Fly.io (agente): crie o aplicativo Fly, envie a string de conexão como um segredo, implante em uma URL
*.fly.dev. - Verifique o aplicativo público (agente): faça um curl na URL ao vivo, adicione uma tarefa via HTTPS, confirme que ela chegou ao Ghost.
- Abra no seu navegador (você): use o aplicativo ao vivo e compartilhe a URL.
- Limpe (agente): destrua o aplicativo Fly e exclua o banco de dados Ghost.
Passo 1 — Bootstrap (você, uma vez)
Esta é a única parte que você não pode delegar.
Instale o ghost CLI:
curl -fsSL https://install.ghost.build | sh
No Windows, execute irm https://install.ghost.build/install.ps1 | iex no PowerShell.
Instale o flyctl:
curl -L https://fly.io/install.sh | sh
No Windows, execute pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex".
Faça login em ambos:
ghost login
flyctl auth login
Cada um abre seu navegador. flyctl auth login solicita que você adicione um cartão de crédito se ainda não o fez.
Configure o Ghost como um servidor MCP em seu agente. Para Claude Code:
ghost mcp install claude-code
Substitua claude-code por cursor, codex, windsurf, gemini, vscode, kiro-cli ou antigravity se você usar um agente diferente. Execute ghost mcp install sem argumento para um seletor interativo.
Reinicie seu agente para que ele reconheça o novo servidor MCP.
Saída esperada:
$ ghost --version
ghost version 1.x.x
$ flyctl version
flyctl v0.x.x ...
Uma vez que ambos os CLIs estejam instalados, você esteja logado e o agente tenha sido reiniciado, o resto é com o agente.
Passo 2 — Estruturar o aplicativo, criar o banco de dados, definir o esquema (agente)
Diga ao agente:
Construa um aplicativo de tarefas público mínimo que eu possa implantar no Fly.io.
Crie um diretório vazio chamado `todo-app` e trabalhe dentro dele.
Stack: Node.js com Express e o pacote `pg`. Um arquivo de servidor. HTML renderizado no servidor — sem framework frontend. Leia DATABASE_URL do ambiente.
Rotas:
- GET / renderize a lista de tarefas com um pequeno formulário para adicionar uma nova
- POST /todos insira uma nova tarefa a partir dos dados do formulário, em seguida, redirecione para /
- POST /todos/:id/done marque uma tarefa como concluída, em seguida, redirecione para /
Arquivos a serem escritos:
- package.json express + pg + dotenv
- server.js o aplicativo
- Dockerfile runtime mínimo do Node, copia package.json + server.js, executa `node server.js`
- fly.toml app = "todo-app", primary_region = "iad", [http_service] com internal_port=3000, force_https=true, auto_stop_machines="stop", auto_start_machines=true, min_machines_running=0. Sem bloco [[services]]. Sem [[mounts]]. Sem Postgres gerenciado.
- .dockerignore node_modules, .env, .git
Então, usando o Ghost MCP:
1. Crie um novo banco de dados Ghost chamado "todo-app". Aguarde até que esteja pronto.
2. Crie uma tabela `todos` com colunas: id (chave primária serial), texto (texto não nulo), concluído (booleano padrão falso), created_at (timestamptz padrão agora()).
3. Imprima a string de conexão para que eu possa usá-la na próxima etapa.
Não use um framework de migração. Não adicione autenticação. Mantenha o server.js com menos de 100 linhas.
O agente irá:
- Escrever
package.json,server.js,Dockerfile,fly.toml,.dockerignore, e HTML mínimo. - Criar o banco de dados Ghost.
- Criar a tabela
todos. - Imprimir a string de conexão.
Saída esperada:
Banco de dados "todo-app" criado (status: em execução).
Tabela "todos" criada com 4 colunas.
Conexão: postgres://tsdbadmin:...@...tsdb.cloud.tim
Este artigo oferece um tutorial prático para desenvolvedores brasileiros que desejam utilizar agentes de IA para simplificar o processo de desenvolvimento de aplicativos. A abordagem de baixo custo pode democratizar o acesso a soluções de hospedagem e banco de dados, tornando mais fácil para pequenas empresas e startups lançarem seus produtos.

