Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →O relato de Cesar Eduardo Sturmer, apresentado como engenheiro de software sênior, descreve como ele construiu sozinho a SurfaAI, uma plataforma que conecta alunos a instrutores ou prestadores de serviço e concentra agendamento, pagamento e repasse automático. O trecho mais útil para quem constrói algo parecido é a integração financeira: cobrança com destination charges no Stripe Connect Express, emissão de créditos apenas depois do webhook payment_intent.succeeded e backend em Supabase. Segundo o autor, o produto está em produção, com usuários e pagamentos reais, e migrou de Asaas para Stripe quando já tinha usuários ativos.
Todas as afirmações sobre implementação e operação são do autor, sem auditoria independente. Este texto organiza as decisões do relato original publicado no DEV Community em 30 de setembro de 2026, explica os trade-offs de cada uma e aponta o que precisa ser verificado antes de reaproveitar o desenho.
As an Amazon Associate I earn from qualifying purchases.
O que a SurfaAI se propõe a resolver
A proposta, segundo o autor, é que cada prestador não precise montar o próprio checkout, o faturamento nem a divisão de valores. O aluno agenda e paga dentro do produto, e a plataforma cuida do repasse ao prestador já descontada a sua taxa.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Essa centralização é o núcleo do produto e também o principal custo. Ao receber o dinheiro de vários prestadores, a plataforma passa a responder pelo fluxo de cobrança, pelos repasses e pelo que acontece quando algo falha no meio do caminho. Quase todas as decisões relatadas derivam dessa escolha.
#1 Best Overall
A stack declarada
O autor descreve as camadas abaixo. A coluna da direita resume o papel que o texto atribui a cada peça.
| Camada | Tecnologia declarada | Papel descrito pelo autor |
|---|---|---|
| Frontend e rotas de API | Next.js, React e TypeScript | Interface e endpoints no mesmo projeto |
| Interface | Tailwind | Construção da UI |
| Backend | Supabase com Postgres, Auth e RLS | Banco de dados, autenticação e controle de acesso por linha |
| Pagamento e repasse | Stripe Connect Express | Cobrança e transferência aos prestadores |
O critério declarado é produtividade para um time pequeno sem abrir mão de segurança e correção financeira. É um raciocínio do autor, não um resultado medido. Vale entender o que RLS (Row Level Security) faz nessa arquitetura: o próprio banco decide quais linhas cada usuário pode ler ou alterar. Isso centraliza a regra de acesso, mas as políticas passam a ser código de segurança que também precisa de testes.
Rank #2
Destination charges: como o autor descreve o fluxo
O autor chama o desenho de destination charges. Pelo texto, a plataforma cria o PaymentIntent e define dois parâmetros: application_fee_amount, para a taxa da plataforma, e transfer_data.destination, para apontar a conta Connect do prestador. Depois que o pagamento é confirmado, a Stripe faz a transferência líquida ao prestador, segundo a descrição do autor.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Os três elementos da cobrança
- Cobrança criada pela plataforma: o
PaymentIntentnasce do lado da plataforma, que mantém o controle da transação. - Taxa da plataforma:
application_fee_amountdefine quanto fica com a plataforma. Na Stripe, esse valor é expresso na menor unidade da moeda; em reais, em centavos. - Destino do repasse:
transfer_data.destinationaponta a conta Connect do prestador que recebe o restante.
O que o leitor precisa checar é o que esse modelo implica legal e fiscalmente no seu país e no tipo de serviço que vende. O relato apresenta o desenho como descrição da própria implementação, não como configuração validada para qualquer marketplace ou jurisdição.
Rank #3
Crédito só depois do webhook
Para as compras de créditos, o autor é direto:
“Desde o início, decidimos que créditos de compra nunca são criados no client-side — só no evento
payment_intent.succeededdo webhook do Stripe.”
Segundo o autor, a regra tem dois objetivos: evitar concessões duplicadas causadas por atualizações repetidas da tela de confirmação e manter uma origem rastreável para cada crédito. Na prática, isso separa a experiência visual do estado financeiro. A tela pode mostrar sucesso antes de o saldo ser gravado, e a concessão depende apenas do evento recebido pelo servidor.
Essa separação elimina a duplicação vinda do cliente, mas não elimina a repetição de eventos: um webhook pode ser reenviado. O relato não detalha como o sistema trata esse caso.
Migração de Asaas para Stripe com usuários ativos
O produto começou com o Asaas e foi migrado para a Stripe quando já havia usuários. Essa é a parte do relato com maior risco operacional e a menos detalhada. O texto não descreve o plano de migração, os controles usados, a duração, os impactos para os usuários nem qualquer evidência de ausência de indisponibilidade.
Para quem lê, a pergunta prática é o que acontece com cobranças pendentes, repasses ainda não concluídos e prestadores já cadastrados no processador antigo quando o gateway troca. Nada disso aparece no relato, então ele não serve como guia de migração.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.O que o relato não estabelece
- Números: não há dados publicados sobre usuários, receita, conversão, custo, latência ou redução de erros. O autor fala em usuários e pagamentos reais sem quantificá-los.
- Código: o texto não mostra a implementação de destination charges.
- Comparações: não há comparação entre alternativas de stack ou de gateway.
- Balanço do que mudaria: o título promete “o que eu faria diferente”, mas o próprio autor descreve este primeiro texto como relato de decisões e trade-offs. Mudanças concretas não aparecem como lista.
- Temas futuros: o autor anuncia publicações sobre destination charges com código, idempotência em webhooks de pagamento e migração de gateway sem downtime. Nenhum deles é desenvolvido neste texto.
Perguntas para avaliar um desenho parecido
Use o relato como ponto de partida para um checklist. Cada item é uma pergunta para o seu próprio projeto, não um resultado medido no texto.
- Onboarding e verificação: quem coleta e verifica os dados dos prestadores, e quem responde quando a verificação falha?
- Cobrança e repasse: em que momento o prestador recebe, e o que acontece com a taxa e o repasse quando há estorno ou contestação?
- Falhas e duplicidade: como o sistema trata evento repetido, queda entre a confirmação do pagamento e a gravação do crédito, e reprocessamento?
- Migração de gateway: como cobranças em andamento, saldos e repasses pendentes atravessam a troca, e como você comprova que nenhuma transação ficou sem destino?
- Carga operacional: quanto trabalho de reconciliação e suporte uma equipe pequena assume quando o dinheiro passa pela plataforma?
The Bottom Line
O relato vale a leitura como registro de decisões de um desenvolvedor sobre um produto que, segundo ele, opera com pagamentos reais. Trate-o como descrição de um caminho, não como prova de que a arquitetura está correta. Antes de reaproveitar qualquer decisão financeira, confirme os detalhes na documentação atual da Stripe e com quem conhece as regras do seu mercado.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallQuick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




