[{"data":1,"prerenderedAt":202},["ShallowReactive",2],{"paleta":3,"caso-onboarding-erp":28,"viz-onboarding-erp":191},{"projetos":4,"posts":27},[5,9,13,16,20,23],{"path":6,"title":7,"contexto":8},"\u002Fprojetos\u002Fkravva","Kravva","Produto próprio",{"path":10,"title":11,"contexto":12},"\u002Fprojetos\u002Fonboarding-erp","Onboarding digital de um ERP financeiro","Consultoria PJ",{"path":14,"title":15,"contexto":12},"\u002Fprojetos\u002Fpainel-erp","Painel administrativo do ERP",{"path":17,"title":18,"contexto":19},"\u002Fprojetos\u002Fligafest","Ingresso em grupo da LigaFest","LigaMagic · CLT",{"path":21,"title":22,"contexto":19},"\u002Fprojetos\u002Fcircuitos-ligamagic","Circuitos LigaMagic e LigaPokémon",{"path":24,"title":25,"contexto":26},"\u002Fprojetos\u002Fblippy","Blippy","Projeto pessoal",[],{"id":29,"title":11,"body":30,"contexto":12,"cor":156,"description":157,"destaque":158,"extension":159,"link":160,"meta":161,"navigation":162,"numeros":163,"ordem":143,"papel":176,"path":10,"periodo":177,"resumo":178,"seo":179,"stack":180,"stem":189,"__hash__":190},"projetos\u002Fprojetos\u002Fonboarding-erp.md",{"type":31,"value":32,"toc":141},"minimark",[33,38,42,45,49,54,57,65,68,72,75,79,82,86,95,99,105,111,121,125,128,131,135,138],[34,35,37],"h2",{"id":36},"o-problema","O problema",[39,40,41],"p",{},"Num ERP financeiro B2B, o onboarding é o primeiro contato do cliente com o produto. Se ele é longo ou confuso, o cliente desiste antes de usar o sistema.",[39,43,44],{},"O onboarding antigo era uma SPA em Vue 3 que tinha crescido por acúmulo. A jornada se organizava em macroestados com subetapas: contratos, lojas, valores, assinatura e parametrização. O que aparecia mudava conforme o contrato e o status do lead. Parte das entradas ainda passava pelas telas MVC do ERP. Era difícil saber em que ponto o cliente estava e mais difícil ainda mudar o fluxo sem quebrar outro caminho.",[34,46,48],{"id":47},"o-que-eu-fiz","O que eu fiz",[50,51,53],"h3",{"id":52},"um-front-novo-do-zero","Um front novo, do zero",[39,55,56],{},"Comecei o repositório e construí a SPA nova com Vue 3.5, TypeScript, Vite e Pinia, organizada por features. Cada etapa tem a sua página, o seu estado e o seu serviço. Componentes, validação e o cliente HTTP ficam numa camada compartilhada.",[39,58,59,60,64],{},"O onboarding virou uma jornada linear de ",[61,62,63],"strong",{},"oito etapas",": contato, código de confirmação, usuários, empresas, confirmação cadastral, proposta, termos e conclusão.",[66,67],"viz-onboarding",{},[50,69,71],{"id":70},"o-back-end-como-fonte-da-verdade","O back-end como fonte da verdade",[39,73,74],{},"O front valida para orientar a pessoa, mas quem decide é o servidor. Sessão, elegibilidade e progresso ficam no back-end, e a interface só avança quando ele confirma. Isso evita um problema clássico de wizard: o navegador achar que a etapa terminou enquanto o servidor discorda.",[50,76,78],{"id":77},"uma-segunda-jornada-sem-duplicar-o-front","Uma segunda jornada sem duplicar o front",[39,80,81],{},"Depois veio a autocontratação: contato, produtos, resumo, comercial e sucesso. Ela tem regras de navegação e dados diferentes do onboarding. Coloquei as duas no mesmo repositório com routers, stores e builds separados por jornada, e extraí os componentes visuais comuns para uma camada compartilhada. Um checkpoint local permite retomar o rascunho, mas catálogo, preço e conclusão continuam confirmados pelo servidor.",[50,83,85],{"id":84},"back-end-em-net","Back-end em .NET",[39,87,88,89,94],{},"Também trabalho no back-end em C# e .NET com MongoDB. Ajustei os casos de uso de aceite de termos e de sincronização de empresas, com testes. Tornei atômica e ",[90,91,93],"termo",{"id":92},"idempotencia","idempotente"," a geração do link de onboarding, com nova tentativa só no conflito de transação previsto.",[34,96,98],{"id":97},"decisões-e-trade-offs","Decisões e trade-offs",[39,100,101,104],{},[61,102,103],{},"Oito etapas explícitas em vez de estados implícitos."," Cada etapa tem entrada e saída claras, o que facilita medir o funil e mudar uma parte sem mexer no resto. O custo: uma jornada linear é mais rígida, e cada exceção de negócio precisa virar uma regra explícita de navegação.",[39,106,107,110],{},[61,108,109],{},"Isolar as jornadas e compartilhar só a apresentação."," Duplicar o front inteiro seria mais rápido no primeiro dia e caro em todos os outros. Juntar tudo num router só acoplaria regras que mudam por motivos diferentes. Separar estado e navegação e compartilhar componentes é o meio-termo. O custo é disciplina: decidir caso a caso o que é comum de verdade.",[39,112,113,120],{},[61,114,115,116,119],{},"Migrar por entrada, não por ",[90,117,118],{"id":118},"big bang","."," As entradas antigas foram redirecionadas para a experiência nova aos poucos. O legado continua de pé enquanto houver consumidor.",[34,122,124],{"id":123},"resultado","Resultado",[39,126,127],{},"O novo onboarding substitui o antigo nas entradas migradas. O tempo médio de onboarding caiu de 12 para 3–4 minutos, e a conversão até virar cliente subiu 20%.",[39,129,130],{},"A autocontratação ganhou uma jornada própria sem duplicar a base de código.",[34,132,134],{"id":133},"o-que-eu-faria-diferente","O que eu faria diferente",[39,136,137],{},"Instrumentaria o funil por etapa desde o primeiro commit, com eventos padronizados, para conseguir dizer qual mudança pesou mais no ganho de tempo.",[39,139,140],{},"Também escreveria testes de contrato entre o front e o back para as transições de etapa. Os testes unitários cobrem componentes, stores e guards, mas o ponto mais frágil de um wizard é o front e o back discordarem sobre em que etapa a pessoa está.",{"title":142,"searchDepth":143,"depth":144,"links":145},"",2,3,[146,147,153,154,155],{"id":36,"depth":143,"text":37},{"id":47,"depth":143,"text":48,"children":148},[149,150,151,152],{"id":52,"depth":144,"text":53},{"id":70,"depth":144,"text":71},{"id":77,"depth":144,"text":78},{"id":84,"depth":144,"text":85},{"id":97,"depth":143,"text":98},{"id":123,"depth":143,"text":124},{"id":133,"depth":143,"text":134},"oklch(0.68 0.15 250)","Construí do zero o novo front de onboarding de um ERP financeiro em Vue 3 e TypeScript: oito etapas claras, autocontratação no mesmo repositório e back-end em .NET.","12 → 3–4 min de onboarding","md",null,{},true,[164,167,170,173],{"valor":165,"rotulo":166},"8","etapas no novo onboarding",{"valor":168,"rotulo":169},"2","jornadas no mesmo front, isoladas",{"valor":171,"rotulo":172},"12 → 3–4 min","tempo de onboarding",{"valor":174,"rotulo":175},"+20%","conversão até virar cliente","Desenvolvedor full stack, autor de mais de 90% dos commits do front novo","2026","Construí do zero o novo front de onboarding do ERP, em Vue 3 e TypeScript, e depois a autocontratação no mesmo repositório. O onboarding caiu de 12 para 3–4 minutos.",{"title":11,"description":157},[181,182,183,184,185,186,187,188],"Vue 3","TypeScript","Vite","Pinia","C#",".NET","MongoDB","GitHub Actions","projetos\u002Fonboarding-erp","w-ahApkdmmVO41zhAN_LIJ2o9Bjwjk_EtbmWo9ZYgLU",[192,194,195,196,198,200],{"path":6,"title":7,"ordem":193},1,{"path":10,"title":11,"ordem":143},{"path":14,"title":15,"ordem":144},{"path":17,"title":18,"ordem":197},4,{"path":21,"title":22,"ordem":199},5,{"path":24,"title":25,"ordem":201},6,1791915291202]