Headless TYPO3 vs Next.js + Supabase: Um Guia Prático para Arquitetos

Passei os últimos dois anos migrando instalações TYPO3 empresariais para arquiteturas headless. E sabe qual pergunta surge o tempo todo? Devemos manter o TYPO3 e ficar headless com EXT:headless ou abandoná-lo pelo Next.js com algo como Supabase? É um tanto quanto confuso, não é? Como a maioria das decisões de arquitetura, a resposta se resume a, "depende." Mas vamos decompor exatamente do que depende.

Isso não é acadêmico para mim. Lancei sites em produção com ambas as abordagens, suei com aqueles casos extremos irritantes, e vi times triunfar ou lutar—às vezes espetacularmente—com cada stack. Vamos conversar sobre o que aprendi ao longo do caminho.

Entendendo as Duas Abordagens

Primeiro as coisas primeiro, o que estamos comparando aqui? Esses dois são completamente diferentes.

TYPO3 + EXT:headless (Desacoplado)

Com isso, TYPO3 permanece seu CMS, tratando todas as tarefas de backend de gerenciamento de conteúdo. A reviravolta é que você troca a antiga renderização Fluid/TypoScript por uma API JSON. Seu novo frontend brilhante? Poderia ser React, Vue, o que quiser, consumindo essa API. TYPO3 continua gerenciando coisas boas como modelos, permissões e fluxos de trabalho.

A extensão EXT:headless? Esse é o passe VIP nos bastidores que entra no processo de renderização do TYPO3 e produz JSON em vez de HTML. Não é uma API de add-on qualquer—é o negócio de verdade funcionando diretamente com as entranhas do conteúdo do TYPO3.

Next.js + Supabase (Totalmente Headless)

Por outro lado, você tem o Next.js gerenciando seu frontend e lógica do lado do servidor. Supabase (uma combinação selvagem de PostgreSQL, autenticação, armazenamento de arquivo e coisas em tempo real) cuida do seu backend. Nenhum TYPO3 aqui, pessoal. Você está abandonando o antigo CMS por pura flexibilidade e uma configuração moderna nativa de JS.

Como EXT:headless Realmente Funciona

Quando você coloca ext:headless no TYPO3, ele registra um novo tipo de página que muda tudo. Sem mais passar conteúdo através de templates Fluid; em vez disso, ele fornece JSON.

Aqui está uma amostra do que você receberá:

{
  "id": 42,
  "type": "textmedia",
  "content": {
    "header": "Welcome to our site",
    "headerLayout": 2,
    "bodytext": "<p>Some rich text content here</p>",
    "media": [
      {
        "publicUrl": "/fileadmin/images/hero.webp",
        "properties": {
          "width": 1920,
          "height": 1080,
          "alt": "Hero image"
        }
      }
    ]
  },
  "appearance": {
    "layout": "default",
    "frameClass": "default",
    "spaceAfter": "medium"
  }
}

O frontend então conecta esses pontos a componentes React/Vue. Se você já mexeu com qualquer CMS baseado em componentes, isso parecerá seu suéter antigo favorito.

Configurando EXT:headless

Uma configuração típica começa assim:

composer require friendsoftypo3/headless

E em seu TypoScript:

plugin.tx_headless {
  settings {
    debug = 0
  }
}

page = PAGE
page {
  typeNum = 0
  10 = USER
  10.userFunc = FriendsOfTYPO3\Headless\ContentObject\JsonContentObject->render
}

Aqui está o problema: Para cada elemento de conteúdo customizado no TYPO3, você precisa de serializadores JSON. Para um site com, digamos, uma pequena quantidade de elementos customizados? Você está procurando alguns dias de trabalho. Uma gigantesca configuração empresarial com dezenas de elementos? Prepare-se—isso pode levar semanas.

O Que TYPO3 Headless Faz Bem

  • A experiência do editor permanece intacta. O backend familiar do TYPO3 significa sem retreinamento para editores de conteúdo.
  • Preservar conteúdo existente. Suas configurações não desaparecem. Todo seu conteúdo, traduções e mídia? Eles permanecem.
  • Suporte multi-idioma excelente. TYPO3 tem um dos melhores tratamentos de idioma que já vi.
  • Recursos prontos para empresas. Desde espaços de trabalho até publicação agendada, tudo está pronto.

O Problema com EXT:headless

  • TYPO3 não vai a lugar nenhum. Você precisará de pessoas com conhecimento em PHP que entendam TYPO3, e elas não estão exatamente em todo lugar.
  • Hospedagem complexa. Você está se equilibrando entre PHP (TYPO3) e Node.js (seu frontend). Dobro da diversão, dobro da complexidade.
  • Interface de API limitada. É JSON, não GraphQL. Customização significa mergulhar de volta no desenvolvimento de extensão TYPO3.
  • Dor de cabeça na visualização. Integrar uma visualização em tempo real com TYPO3 e Next.js? Não é para os fracos de coração.

TYPO3 Headless Mode vs Next.js + Supabase: A Real Comparison

Next.js + Supabase: O Stack Totalmente Headless

O Layout

Com essa configuração, Next.js cuida de sua camada de aplicação, e Supabase entra para todas as tarefas de banco de dados e backend.

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│   Next.js   │────▶│   Supabase   │────▶│ PostgreSQL  │
│  (App Router)│     │   (BaaS)     │     │  (Database)  │
└─────────────┘     └──────────────┘     └─────────────┘

Gerenciamento de Conteúdo Sem TYPO3

É aqui que as coisas ficam complicadas. Como os editores gerenciam conteúdo?

  1. Painel de administração customizado. É mais trabalho do que você pensaria.
  2. Supabase Studio. Ótimo para devs, editores podem odiar.
  3. Adicione um CMS. Agora gerenciando três serviços.
  4. Use Payload com seu próprio banco de dados. Bem elegante, na minha opinião.

Para que você veja, aqui está uma implementação básica de busca de conteúdo com Supabase:

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.SUPABASE_SERVICE_ROLE_KEY!
)

export async function getPage(slug: string) {
  const { data, error } = await supabase
    .from('pages')
    .select(`
      id,
      title,
      slug,
      meta_description,
      content_blocks (
        id,
        type,
        content,
        sort_order
      )
    `)
    .eq('slug', slug)
    .eq('status', 'published')
    .single()

  if (error) throw error
  return data
}

O Que Next.js + Supabase Brilha

  • Desempenho estratosférico. Geração estática, ISR, renderização de borda — seu playground para velocidade.
  • Desenvolvedores em abundância. Pessoal de JavaScript/TypeScript está em todo lugar.
  • Supabase's Row Level Security. Sério, muito legal para quando você quer controle apertado.
  • Recursos em tempo real. Integre atualizações ao vivo como uma brisa.
  • Implantação fácil. Use Vercel para Next.js e Supabase Cloud para backend ou auto-hospede se necessário.

As Lutas Aqui

  • CMS DIY. A menos que você jogue outro CMS headless na mistura, você está basicamente fazendo seu próprio.
  • Buraco negro editorial. Sem fluxos de trabalho integrados. Estados de rascunho, publicação agendada? Você tem que fazer isso acontecer.
  • Gerenciamento de idioma. Suporte de conteúdo multilíngue? Você vai suar construindo isso internamente.
  • Problemas de gerenciamento de mídia. Armazenamento Supabase não é adaptado para ativos digitais. Tenha isso em mente.

Comparação Lado a Lado

Veja como eles se comparam:

Recurso TYPO3 + EXT:headless Next.js + Supabase
UX de Edição Excelente CMS Customizado ou Adicionado
Multi-idioma Nativo Implementação DIY
Fluxos de Trabalho Integrado Construção Customizada Necessária
Desempenho Bom Excelente
API Limitada Controle Total
Tempo Real Ausente Suportado
Autenticação Legado Moderno e Flexível
Complexidade Alta Médio
Oferta de Talentos Escassa Abundante
Migração de Conteúdo Desnecessária Migração Completa
Recursos Integrados Construir ou Comprar
Tempo de Configuração 2-4 semanas 4-8 semanas
Custo (hospedagem) €150-500 €45-200

Benchmarks de Desempenho

Vamos ver alguns números de um site que testei—site corporativo, 200 páginas, suporte multilíngue:

Métrica TYPO3 Headless + Next.js Next.js + Supabase (SSG)
TTFB (não cacheado) 280ms 45ms
TTFB (CDN cacheado) 35ms 32ms
LCP 1.8s 1.2s
CLS 0.02 0.01
Lighthouse Score 92 98
Tempo de Build (completo) 4m 20s 1m 45s
Resposta da API (p95) 180ms 22ms

Em poucas palavras? Embora o TTFB não cacheado seja melhor com Supabase, o cache da CDN praticamente nivela o campo. Ambos, quando configurados corretamente, funcionam rápido o suficiente para o usuário final.

TYPO3 Headless Mode vs Next.js + Supabase: A Real Comparison - architecture

Experiência do Desenvolvedor e Considerações de Time

Mergulhando no TYPO3

Você ainda precisará de profissionais TYPO3 para projetos headless. Pense em serializadores PHP, testes de upgrades e tratamento de problemas de compatibilidade. Em 2025, esses especialistas podem custar €80-120/hora. E alguns devs não estão entusiasmados com configurações headless—tira a alegria da templating Fluid.

O Clube Next.js + Supabase

Devs JavaScript são abundantes, mas lembre-se que projetar sistemas de gerenciamento de conteúdo não é fácil para todos. A experiência de desenvolvimento do Supabase é bem elegante: tipos TypeScript gerados automaticamente, subscrições em tempo real e helpers de autenticação sólidos. Mas toda modelagem de dados e decisões arquitetônicas? Tudo está em você.

Pensando nessa rota? Nosso time aperfeiçoou expertise em desenvolvimento Next.js para ajudar você a evitar surpresas desagradáveis.

Estratégias de Migração

Do TYPO3 Tradicional para TYPO3 Headless

Menor risco, conteúdo permanece intacto. Principalmente uma reescrita de front-end.

  1. Implante EXT:headless
  2. Mapeie elementos de conteúdo para JSON
  3. Crie o frontend Next.js/Nuxt
  4. Organize integração de visualização
  5. Vá ao vivo!

Prazo: 8-16 semanas para um site corporativo de tamanho decente.

De TYPO3 para Next.js + Supabase

Prepare-se bem, essa é uma reconstrução completa.

  1. Audite configurações de conteúdo atuais
  2. Esboce seu schema PostgreSQL
  3. Escreva scripts de migração
  4. Mova referências de mídia e arquivo
  5. Construa ferramentas editoriais ou integre outro CMS
  6. Construa novamente para o frontend
  7. Lide com redirecionamentos de URL
  8. Propague conteúdo multilíngue

Prazo: 16-32 semanas. Desenvolvimento headless complexo? Traga profissionais para tornar a vida mais fácil.

Análise de Custos

Vamos contar para uma configuração corporativa de médio porte: 200 páginas, 3 idiomas, 5 editores, 50K visitantes mensais.

TYPO3 Headless — Custos do Ano 1

Item Custo
Hospedagem TYPO3 (Gerenciada) €3.600/ano
Hospedagem Next.js (Vercel Pro) €240/ano
Desenvolvimento de Frontend €25.000-45.000
Integração EXT:headless €8.000-15.000
Total Ano 1 €36.840-63.840
Anual Contínuo €5.000-8.000

Next.js + Supabase — Custos do Ano 1

Item Custo
Supabase Pro €300/ano
Vercel Pro €240/ano
Adicionar CMS (se necessário) €0-3.600/ano
Migração de Conteúdo €10.000-20.000
Desenvolvimento Frontend + Backend €40.000-70.000
Ferramentas Editoriais €10.000-25.000
Total Ano 1 €60.540-119.140
Anual Contínuo €2.000-6.000

Ficar totalmente headless custa muito antecipadamente, mas reduz as despesas mensais já que você abandona hospedagem TYPO3. Apenas não subestime a construção extra de CMS por cima.

Quando Escolher Qual

TYPO3 + EXT:headless

  • Mantenha conteúdo legado e fluxos de trabalho estabelecidos.
  • Mantenha configurações editoriais familiares e recursos ricos.
  • Beneficie-se do suporte nativo multilíngue sofisticado.
  • Retenha desenvolvedores TYPO3.

Next.js + Supabase

  • Quando começar do zero.
  • O aplicativo precisa de muitos recursos interativos.
  • Seu time de dev já é focado em JavaScript.
  • Manter desempenho no topo é um foco importante.
  • Confortável em adicionar um CMS headless.

Considere um Terceiro Ângulo

Talvez misturar um pouco tenha lhe passado pela mente? Next.js, um CMS headless, mais Supabase para dados de aplicação podem combinar o melhor. Oferece ferramentas editoriais bem-arredondadas sem o peso do TYPO3. Se você também está considerando opções como desenvolvimento Astro para sites leves focados em conteúdo, vale a pena dar uma olhada.

Quer conversar sobre suas necessidades específicas? Estamos aqui para ajudar a avaliar o que faz sentido para seu cenário único—entre em contato, e prometemos uma avaliação honesta, mesmo que seja "fique com o que conhece."

FAQ

O TYPO3 EXT:headless está pronto para produção em 2025? Sim, absolutamente. EXT:headless tem sido estável desde a versão 3.x e é ativamente mantido. Versão 4.x cobre TYPO3 v12 e v13 com serialização de conteúdo sólida, geração de menu e tratamento de formulários. Um monte de sites empresariais gigantescos o executam em configurações de produção, incluindo setores como governo e banco na Alemanha e Áustria.

Posso usar Next.js para um frontend TYPO3 headless? Com certeza, é uma combinação clássica. Você utilizará Next.js App Router com componentes do servidor para reunir informações da API JSON do TYPO3. Integração de visualização é o bit mais complicado: configurar modo de rascunho e direcionar TYPO3 para chamá-lo via URLs de visualização. Felizmente, a documentação útil da comunidade o guia através do emparelhamento Next.js.

Como Supabase se compara à configuração de banco de dados do TYPO3? Ah, esses são maçãs e laranjas. TYPO3 é executado em Doctrine DBAL com um schema mais rigoroso gerenciado por TCA. Supabase dá aquela doce liberdade do PostgreSQL com Row Level Security. Supabase oferece uma capacidade de consulta flexível e poderosa, mas TYPO3 é cuidadosamente estruturado para evitar erros que editores poderiam introduzir acidentalmente. É tudo sobre controle versus segurança.

Preocupações de SEO com TYPO3 headless? Tratando meta tags e dados estruturados? EXT:headless serializa propriedades de página como meta tags e dados Open Graph. Seu frontend precisa renderizá-los como tags HTML. Use a API Metadata do Next.js em layouts. Contanto que sua configuração TYPO3 seja sólida, dados de SEO devem acompanhá-lo. Integre extensões como EXT:yoast_seo e ele funcionará bem com configurações headless.

Supabase está à altura de entrega de conteúdo em nível empresarial? Claro que sim. Supabase Cloud, rodando em AWS, oferece uptime de 99,9% em planos Pro e aumenta para 99,95% em planos Team (verifique as taxas de 2025). Para cache CDN (Edge Network Vercel, Cloudflare), Supabase garante principalmente confiabilidade de recurso de escrita e tempo real. Para uso empresarial crítico, auto-hospede Supabase para máximo controle.

Como abordamos o processamento de imagem sem TYPO3? TYPO3 processa imagens nativamente—crop, redimensionamento, flip de formato. Sem ele, configure seu fluxo de trabalho de imagem. Os principais contendores de 2025 são: Next.js Image Optimization (integrado, suportado por Vercel), Cloudinary (iniciando grátis, uso sério exige planos pagos), ou imgix (começando em $100+/mês). Supabase Storage lida com originais mas não transformações.

Podemos migrar incrementalmente de TYPO3 Headless para totalmente headless? Absolutamente, pense em um plano suave. Comece com TYPO3 headless, isolando seu frontend. Transite lentamente conteúdo de TYPO3 para Supabase ou seu CMS escolhido — comece com tipos mais simples. Durante a fase, seu frontend Next.js opera com dados de ambas as fontes.

Qual é a curva de aprendizado para um time TYPO3 transitando para Next.js + Supabase? Uma rampa realista é cerca de três a seis meses. Dito isto, o desafio não é JavaScript ou TypeScript—é a mudança de paradigma. Desenvolvedores TYPO3 estão acostumados com o framework dirigindo estruturas de conteúdo, caching e rotas. No modelo Next.js + Supabase, essas chamadas são suas. É libertador mas esmagador no início. Programação em pares com pessoal Next.js experiente torna esse salto muito mais suave.