Como o Ghost construiu uma plataforma de publicação aberta em Node.js
O Ghost é uma plataforma de publicação de código aberto mantida por uma fundação sem fins lucrativos, usada para blogs, newsletters e assinaturas pagas. O núcleo é uma API JSON em Node.js com MySQL, um painel separado que está sendo refeito em React e serviços de fora como Stripe, Mailgun e Tinybird para pagamentos, e-mail e análise.
Copiar stackghost.org Plataforma de publicação para newsletters e assinaturas pagas · SG · fundada em 2013
O Ghost foi feito como uma API JSON no padrão REST, dividida em Content API e Admin API. O painel é um cliente totalmente separado dessa API, então o editor continua rápido sem pesar no site público, e quem escreve não precisa de Git para publicar.
O site público sai de uma camada de temas servida pelo Express, com templates em Handlebars. O Ghost diz que escolheu ficar todo em JavaScript para que times acostumados com esse tipo de código se sintam em casa.
Durante anos o painel rodou em Ember. A troca para React foi feita tela por tela, com apps novos em React rodando dentro do painel antigo. Hoje o app do painel no monorepo é um projeto React montado com Vite, estilizado com Tailwind e testado com Vitest, e o guia para quem contribui manda fazer toda tela nova em React.
O servidor passa por uma faxina parecida. A prioridade declarada é segurança de tipos: levar o código de JavaScript para TypeScript, validar os dados que chegam com Zod e trocar aos poucos o ORM Bookshelf por serviços, repositórios e Knex direto.
Ghost 6.0: análise e rede social como serviços à parte
Até o Ghost 6.0, lançado em agosto de 2025, o Ghost era um único app num servidor com um banco MySQL. A versão 6 trouxe análise de visitas própria e sem cookies, feita sobre ClickHouse numa parceria com a Tinybird, e a ligação com a rede social aberta pelo protocolo ActivityPub.
Os dois recursos rodam como serviços independentes ao lado do Ghost. Foi por isso também que o Docker Compose virou um jeito oficial de instalar e rodar o Ghost, e a previsão é que ele vire o padrão no Ghost 7.0.
O Ghost não tenta mandar e-mail em massa sozinho. As newsletters saem pelo Mailgun, o único serviço de envio em massa suportado, porque disparar muito e-mail por SMTP comum pode colocar o IP do servidor em lista de bloqueio. O SMTP normal continua para mensagens do dia a dia, como links de login e convites.
As assinaturas pagas rodam no Stripe: depois que o site conecta a conta, os preços criados no painel do Ghost aparecem lá automaticamente.