Construímos um app de agendamentos funcional — login, um calendário de horários disponíveis, pagamentos e lembretes por e-mail — do início ao fim em 30 minutos, e registramos cada passo. Não uma demo que para num preview bonito. Um de verdade, num domínio real. Aqui está a stack e os prompts.
A stack
Você não precisa de muito, e os construtores com IA conectam a maior parte para você:
- Supabase — banco de dados Postgres, além de Auth (e-mail/senha, magic links e OAuth com Google ou GitHub) e segurança em nível de linha. Essa é a espinha dorsal.
- Stripe — a etapa de pagamento para um agendamento pago.
- Resend — os e-mails de confirmação e lembrete.
O Supabase é a peça que importa: ele te dá um banco de dados real, auth real e armazenamento a partir de um único painel, e é por isso que a maioria dos construtores com IA o integra diretamente.
O build, prompt por prompt
Mais ou menos cinco prompts te levam lá:
- Scaffold — “Um app de agendamentos. Login por e-mail. Um calendário mostrando horários abertos de 30 minutos.” Você obtém um app rodando com auth em minutos.
- Modelo de dados — uma tabela
slotse uma tabelaappointments, com segurança em nível de linha para que um usuário logado só veja os próprios agendamentos. - Pagamentos — uma etapa de checkout do Stripe antes de um horário ser confirmado.
- Notificações — um e-mail do Resend na confirmação, e um lembrete antes do compromisso.
- Admin — uma página listando os agendamentos de hoje.
A parte que a IA erra
Aqui está o bug que os construtores com IA entregam por padrão, toda vez: reserva duplicada. Ingenuamente, o código gerado lê os horários disponíveis e então grava o agendamento — e se duas pessoas clicarem no mesmo horário no mesmo instante, as duas gravações têm sucesso. Você vendeu um horário duas vezes.
A correção é tornar a reserva uma única transação de banco de dados com travamento em
nível de linha — trave a linha do horário, verifique se ainda está livre, grave o
agendamento, libere. No Supabase, isso é uma transação Postgres (um SELECT ... FOR UPDATE
dentro de uma função), não duas consultas separadas a partir do cliente. A IA quase nunca
vai buscar isso a não ser que você peça. Então peça:
“Faça a reserva do horário ser uma única transação Postgres com travamento em nível de linha para que dois usuários não possam reservar o mesmo horário.”
Essa é a diferença entre uma demo e algo em que você deixaria um cliente tocar — e é exatamente o tipo de lógica crítica para a correção que a IA ainda precisa de um humano para pegar.
Publique
Um app funcional numa URL de preview ainda não é um produto. Aponte-o para o seu domínio — isso é um trabalho de 10 minutos — e você está no ar.
Conclusão
Trinta minutos é real, com um asterisco: a IA te leva 95% do caminho rápido, e os últimos 5% — concorrência, regras de segurança, os casos extremos de que o dinheiro depende — é onde você ganha o seu salário. Saiba onde estão esses 5% e você lança algo real, não uma captura de tela.