Customização Extrema do Strapi 5: Integrando Quill e Multi-Tenant
O Strapi 5 é um ótimo headless CMS, mas eu o modifiquei muito para o kuro.boo, substituindo Lexical por Quill e adicionando multi-tenant.
Em setembro de 2025, o lançamento do "Strapi 5" trouxe grandes atualizações para os desenvolvedores. Com uma ruptura limpa com as estruturas de dados do Strapi 4, ele introduziu alterações incompatíveis, APIs multilíngues reformuladas e melhorou o desempenho. Embora tenha se tornado uma ferramenta mais simples e poderosa, algumas configurações padrão deixaram a desejar.
Especificamente, o editor "Blocks" padrão (baseado em Lexical) é moderno, mas carece de ferramentas avançadas de edição de tabelas e decoração de texto frequentemente necessárias para um design rico em layout. Ele não conseguia sequer construir uma tabela simples por padrão. Embora as bordas de tabela possam ser menos comuns em designs ocidentais, elas são essenciais no Japão para criar páginas estruturadas e fáceis de ler.
Além disso, o Strapi 5 carece de multi-tenancy nativo. Para alcançar multi-tenancy econômico, customizei o backend. Veja como modifiquei o ambiente do Strapi 5 para o blog "kuro.boo" para obter uma excelente experiência de edição e alta eficiência de gerenciamento.
1. Transição para o Quill
Como o Lexical e o TipTap não atendiam às minhas necessidades, investiguei o Quill. Com o lançamento da versão v2, o Quill oferece excelente flexibilidade. Os recursos WYSIWYG pareciam promissores, mas ainda faltava suporte nativo para tabelas avançadas. Para corrigir isso, integrei o "quill-better-table" (após um dia de depuração). Este plugin permite adicionar/excluir linhas e colunas através do clique com o botão direito, mesclar células e estilizar células personalizadas diretamente dentro do painel de administração do Strapi. Crucialmente, essas tabelas são salvas como HTML padrão, facilitando a renderização no frontend Astro.
Isso resolveu a edição de tabelas e os problemas de entrada do idioma japonês (IME), nos dando um painel editor WYSIWYG altamente funcional dentro do Strapi.
2. Multi-Tenancy Baseado em Esquema
Para gerenciar vários sites em uma única instância do Strapi sem iniciar contêineres de banco de dados separados, implementei a alternância de esquema de banco de dados (DATABASE_SCHEMA) na mesma instância de banco de dados. Isso mantém os custos de banco de dados baixos, mantendo ambientes de banco de dados separados e seguros para cada inquilino.
3. Fluxo de Trabalho de Geração de Site Estático (SSG) Local
Embora executar um servidor CMS 24 horas por dia, 7 dias por semana seja ideal para equipes colaborativas, isso adiciona custos desnecessários e riscos de segurança para blogs pessoais. Portanto, alterei a arquitetura de implantação:
- Inicie a instância local do Strapi apenas ao escrever ou editar.
- Execute uma compilação de desenvolvimento que compila o conteúdo do Strapi em páginas Astro estáticas, copiando imagens para a pasta de compilação e atualizando os links de imagem.
- Pare a instância local do Strapi e implante o site totalmente estático no Cloudflare Pages.
Essa configuração significa que nosso site público está hospedado inteiramente na rede de borda da Cloudflare. Ele carrega extremamente rápido, não custa nada para hospedar e elimina os riscos de segurança de bancos de dados públicos.
Comparação de Configurações Padrão vs. Customizações no kuro.boo
Recurso | Configuração Padrão | Customização kuro.boo |
Core do Editor | Lexical (Blocks) | Quill (v2+) |
Edição de Tabelas | Limitado | quill-table-better (Mesclar e estilizar células) |
Tenancy | Banco / Esquema Único | Multi-Tenancy Baseado em Esquema |
Arquitetura | CMS Sempre Ativo | CMS Local com Geração de Site Estático (SSG) |
[Fontes]
1. Documentação de Desenvolvedor do Strapi 5
2. Site Oficial do Editor Rich Text Quill
3. Repositório quill-table-better no GitHub