Vender um template de SaaS é uma posição estranha para escrever sobre templates de SaaS. Escrevo assim mesmo, porque a pergunta que mais recebo é honesta e merece resposta honesta: o que exatamente eu estou comprando.

A resposta curta é que você compra tempo em uma parte específica do trabalho, e nenhum tempo nas outras.

A parte que dá para comprar

Existe um conjunto de coisas que todo SaaS precisa e que não diferencia nenhum deles. Cadastro e sessão. Assinatura, cobrança recorrente, upgrade, cancelamento, o webhook que avisa que o pagamento falhou. O painel onde você mesmo mexe no catálogo sem abrir o editor. Um blog com sitemap, hreflang e dados estruturados. Migrations, pipeline, deploy.

Escrever isso não é difícil. É comprido, e cada item tem duas ou três armadilhas que você só descobre depois de cair nelas.

No CastorStack esse conjunto é: API em .NET com 32 migrations e 310 testes, três frontends em React e Next.js, dois provedores de pagamento reais atrás da mesma interface com roteamento por país editável no painel, webhooks assinados dos dois lados, catálogo de produtos e planos com preço em várias moedas, feature flags com kill switch, log de auditoria, blog em banco com a encanação de SEO, três idiomas em tudo, e 70 testes de ponta a ponta rodando no Playwright.

Você conseguiria escrever tudo isso. A questão é se quer gastar os próximos três meses nisso em vez de na parte que é sua.

A parte que não está à venda

Nicho. Nenhum código sabe para quem você vende.

Distribuição. Continua sendo o item mais caro do lançamento, e ficou mais caro no ano em que a busca começou a responder sem mandar ninguém para o seu site.

Preço. Quanto cobrar, quantos planos ter, o que fica em qual. O template tem a mesa posta para qualquer configuração, e a configuração continua sendo sua.

Suporte. No dia em que um cliente escreve dizendo que foi cobrado duas vezes, quem responde é você.

Desconfie de qualquer página de vendas que sugira o contrário. Um template resolve o item mais barato da lista.

Boilerplate de graça e template mantido

Um repositório público com um começo de SaaS é útil e existe aos montes. A diferença aparece uns meses depois.

Quando o provedor de pagamento muda a versão da API, quando o framework lança uma major, quando alguém descobre que uma configuração padrão deixava o banco exposto, o repositório abandonado não muda. Você fica com o problema e sem o contexto de quem escreveu aquilo.

O que se paga em um template mantido é a continuidade: alguém acompanha, corrige, e escreve o guia de migração da versão. É o mesmo motivo pelo qual empresas pagam por bibliotecas que poderiam ter copiado.

Existe também a documentação, que quase nunca acompanha o código de graça. O CastorStack traz quinze passos de onboarding em três idiomas, especificações de arquitetura, guias de blog e de configuração do Paddle, e um inventário de variáveis de ambiente separando o que é público do que é segredo. Nada disso é glamouroso. É o que decide se você está rodando em dois dias ou em duas semanas.

As perguntas que revelam o que é

Se você estiver avaliando qualquer coisa desse tipo, minha ou de outro, pergunte o que ele não faz. Uma resposta específica é bom sinal. "Faz tudo" quer dizer que é folheto.

Pergunte também o que acontece quando você quiser mudar de banco, de provedor de pagamento ou de hospedagem. Se a resposta envolver reescrever a metade do sistema, o preço da compra é só a entrada.

E pergunte quantos testes existem e se eles rodam. Testes são o único jeito de descobrir que o código faz o que a página de vendas diz, sem ter que ler tudo.

O que o CastorStack não faz

Não tem organizações, times nem multi-tenancy. Não tem autenticação de dois fatores, nem login social. A autenticação por chave de API está modelada no banco mas não implementada, e a especificação diz isso com todas as letras justamente para que ninguém a apresente como pronta.

O painel administrativo lê usuários e assinaturas, mas ainda não faz troca de papel, bloqueio de conta nem cancelamento de plano pelo administrador. Não existe painel de webhooks: o que aconteceu está no log de auditoria, e diagnosticar significa consultar o log. Também não existe sincronização automática com o catálogo do Stripe ou do Paddle, então os identificadores externos são digitados à mão e um erro só aparece no checkout.

Essa lista existe porque cada item é uma decisão de escopo, e escopo adiado é mais barato do que escopo mal feito. Prefiro que você leia isso antes de comprar do que descubra depois.

Por que isso mudou de importância

Enquanto escrever software era caro, comprar código pronto era economia de dinheiro. Não é mais o caso: gerar código ficou barato o suficiente para que a economia mude de natureza.

O que um template bem mantido vende hoje não é código, é a lista de decisões já tomadas e testadas. Quais delas você quer tomar de novo é a única pergunta que sobra.