Mimos e Contos: histórias infantis personalizadas com IA
A MVP Plus construiu o Mimos e Contos, app de histórias infantis personalizadas com IA, assinatura via Stripe e programa de afiliados com comissão.
Destaques técnicos
- Geração de história e ilustração por IA a partir da idade e dos interesses da criança
- Assinatura completa via Stripe: checkout, portal do assinante e webhook
- Programa de afiliados próprio, com apuração e liberação de comissão em edge functions
- Rate limiting por usuário na geração de conteúdo por IA
- Pipeline de CI no GitHub Actions rodando a suíte de testes a cada mudança
O Mimos e Contos é um app de histórias infantis personalizadas com IA: a partir da idade e dos interesses escolhidos pelo responsável, a plataforma gera um conto e a ilustração correspondente, e entrega isso como experiência de leitura para a criança. A MVP Plus construiu o produto completo, da geração de conteúdo ao modelo de assinatura.
O desafio
Um produto de conteúdo gerado por IA para o público infantil tem uma exigência que produtos B2B raramente têm: previsibilidade e qualidade de saída muito mais rígidas, porque o consumidor final é uma criança e quem decide assinar é o responsável avaliando se confia no que vai aparecer na tela. Gerar texto e imagem coerentes entre si, a partir da idade e dos interesses informados, sem depender de revisão manual história por história, é o núcleo difícil do problema.
Ao mesmo tempo, um produto B2C de assinatura recorrente precisa resolver, desde o primeiro dia, o ciclo comercial completo: cobrança, cancelamento, portal do assinante e, neste caso, também um canal de aquisição via afiliados, sem o qual o crescimento dependeria só de tráfego pago ou orgânico direto.
O que construímos
O fluxo central do produto começa no formulário de criação: o responsável escolhe a faixa etária da criança, entre poucos anos de idade e a pré-adolescência, seleciona até dois temas de interesse numa lista filtrada pelo gênero da história, e pode indicar uma lição ou valor educativo para o enredo, como coragem, amizade ou bondade. Esses parâmetros seguem para uma edge function dedicada, que gera o texto do conto e a imagem de ilustração por IA a partir deles, e devolve o conteúdo pronto para o app exibir como história ilustrada. Conta de usuário, autenticação, banco de dados e armazenamento dos arquivos gerados rodam sobre Supabase.
A assinatura é resolvida de ponta a ponta com Stripe: checkout para nova assinatura, portal do assinante para gerenciar ou cancelar o próprio plano, e um webhook dedicado para manter o status da assinatura sincronizado no banco a cada evento do Stripe, com uma rota própria de verificação logo após o checkout confirmar o pagamento antes de liberar acesso. Por cima disso, o produto tem um programa de afiliados próprio, com onboarding do afiliado, painel de estatísticas e rotina de apuração e liberação de comissão, tudo como edge functions dedicadas.
Fechar a própria conta também é um fluxo de primeira classe, não um pedido tratado manualmente por e-mail: existe uma edge function dedicada de exclusão de conta, que remove os dados do responsável e da criança do produto.
A engenharia por trás
A geração de história e ilustração, a operação mais cara do produto em chamada de IA, tem rate limiting por usuário aplicado diretamente na edge function, apoiado numa tabela própria no banco que guarda contagem por usuário e janela de tempo, criada justamente para essa finalidade. A separação da lógica de negócio em edge functions do Supabase, uma para cada responsabilidade (gerar história, checkout, verificação de checkout, portal, webhook do Stripe, onboarding de afiliado, estatística de afiliado, apuração de comissão, exclusão de conta), mantém cada fluxo isolado e testável de forma independente.
O projeto tem uma suíte de testes cobrindo essas funções e roda num pipeline de CI no GitHub Actions, executado a cada push e a cada pull request contra a branch principal, encadeando checagem de tipo, lint, testes com cobertura e build antes de qualquer mudança ser considerada pronta. É o tipo de disciplina que evita que um ajuste na lógica de comissão de afiliado quebre silenciosamente o checkout, por exemplo, ou que um erro de tipo em uma edge function só apareça depois de publicado.
Stack e decisões
Vite com React e TypeScript no front, Supabase cobrindo autenticação, banco, armazenamento e as edge functions no back, formam uma stack enxuta para um produto B2C que precisa de iteração rápida sem operar servidor próprio. O Stripe resolve toda a complexidade de cobrança recorrente e portal do assinante sem reconstruir essa camada, essencial num produto de assinatura onde qualquer falha de cobrança afeta receita diretamente.
Construir o programa de afiliados como conjunto próprio de edge functions, em vez de depender de um serviço terceiro, foi decisão de controle: apuração de comissão é lógica de negócio sensível, e mantê-la no mesmo ecossistema do restante do produto facilita auditar e ajustar regra sem depender de integração externa. Colocar rate limiting justamente na geração de história, com tabela e teste próprios, também reflete uma escolha consciente: é a rota que mais custa chamada de IA por uso, então é ela que precisa de controle desde o início, não como reforço posterior.
Produtos B2C novos, que precisam nascer com geração de conteúdo por IA, cobrança e canal de aquisição já resolvidos, são o tipo de desafio que o VibeMVP da MVP Plus ataca de ponta a ponta. Para saber mais sobre como estruturar um SaaS desse tipo desde o início, veja o artigo sobre como criar um SaaS com IA.