Planeje e construa um web app para um salão de unhas local: agendamento e calendário, pagamentos e recibos, e histórico do cliente — projetado para equipes ocupadas e clientes que retornam.

Antes de escolher ferramentas ou desenhar telas, fique claro sobre o que o salão quer resolver. A maioria dos salões de unhas não precisa de “tudo” no primeiro dia — eles precisam de um sistema que elimine atritos diários.
Anote os problemas recorrentes que sua equipe reclama e transforme-os em metas. Os comuns incluem:
Seja específico: “Parar double-bookings” é melhor que “Melhorar o agendamento”.
Um web app para salão de unhas normalmente atende quatro grupos:
Projete pensando no momento mais ocupado: um cliente sem hora chegando junto com dois telefonemas e o checkout acontecendo ao mesmo tempo.
Para a primeira versão, priorize:
Desejáveis para depois: assinaturas/memberships, inventário, multi-local, automação avançada de marketing.
Escolha resultados mensuráveis, como:
Essas métricas mantém o build focado e ajudam a decidir o que melhorar em seguida.
Antes de escrever uma única linha de código, mapeie as funcionalidades que seu web app deve suportar no dia um — e o que pode esperar. Isso mantém o sistema de agendamento simples, reduz o tempo de treinamento e evita que o aumento de escopo atrase o lançamento.
Comece com um fluxo que funcione para clientes e para a recepção:
Garanta que as reservas impeçam double-bookings e considerem a duração do serviço e o tempo de buffer (por exemplo, limpeza entre clientes).
Pagamentos não precisam ser complicados, mas devem ser consistentes:
Mesmo que integre um provedor de pagamentos depois, desenhe o fluxo para que todo agendamento possa ser marcado como “pago”, “parcialmente pago” ou “não pago”.
Um CRM leve de histórico de clientes deve mostrar, de relance:
Complete o núcleo com um editor do cardápio de serviços e preços, escala básica de funcionários e notas internas. Notas de inventário opcionais são úteis, mas mantenha leves a menos que esteja construindo um gerenciamento completo de estoque.
Um app de salão de unhas vive ou morre pela limpeza do modelo de dados. Se mantiver o modelo simples e consistente, agendamento, pagamentos e histórico do cliente ficam mais fáceis de construir — e de confiar.
Comece com o essencial, só adicione mais quando sentir dor real:
Alguns campos carregam a maior parte do valor operacional:
name, price, duration_minutes, e buffer time (ex.: 10 minutos para limpeza). O buffer mantém o calendário realista.start_time, end_time (ou calculado a partir da duração do serviço + buffer), status (booked/checked-in/completed/no-show/canceled), customer_id, staff_id, e location_id.amount, type (deposit/final/tip/refund), method (card/cash), além de impostos, descontos e um link para o agendamento.Torne normal que um agendamento tenha múltiplos pagamentos. Exemplo: um depósito de $20 online, depois $45 na loja, depois $10 de gorjeta — e um reembolso se algo mudar.
Isso significa que sua tabela Payments deve permitir várias linhas por appointment_id, não um único campo “status de pagamento” no agendamento.
Mesmo em um salão pequeno, você vai querer saber o que mudou.
Armazene updated_at e updated_by em Appointments no mínimo. Se quiser uma trilha de auditoria mais forte, adicione um log AppointmentChanges com: appointment_id, changed_by, changed_at e um curto change_summary (ex.: “Hora movida 14:00 → 14:30”). Isso ajuda a resolver disputas sobre não comparecimentos, depósitos e edições de última hora.
Seu fluxo de agendamento é o coração do web app: transforma “quero unhas” em um horário confirmado no calendário sem troca de mensagens desnecessária.
Antes de desenhar telas, defina as regras que o calendário deve impor:
A prevenção de conflitos deve ocorrer em dois pontos:
Mantenha simples e previsível:
Escolher serviço → escolher horário → escolher técnico (opcional) → confirmar.
Se o cliente não se importa com o profissional, o padrão “Qualquer técnico disponível” deve aumentar as opções de horário.
A equipe precisa de velocidade. Forneça um calendário dia/semana onde eles possam:
Um bom próximo passo é conectar integrações depois (veja /blog/integrations-calendar-messaging-payments), mas consolide o fluxo principal primeiro.
Pagamentos é onde o app deixa de ser só um calendário e vira uma ferramenta de negócio. O objetivo: reduzir não comparecimentos, acelerar o checkout e manter registros limpos.
Decida quando um depósito é exigido e torne isso previsível para os clientes:
Adicione também uma configuração para a janela de cancelamento (ex.: 24 horas). Se o depósito for perdido, registre esse resultado explicitamente (não como um “reembolso”).
No fechamento, pré-preencha o que foi agendado, mas permita edições rápidas:
Ofereça recibo por email/SMS e uma visualização imprimível para a recepção. Inclua: data/hora do agendamento, serviços detalhados, gorjeta, desconto, imposto, depósito aplicado e saldo restante.
Nunca sobrescreva pagamentos. Crie um registro de ajuste vinculado ao pagamento original (reembolso, reembolso parcial, void, correção de cobrança) com timestamp, membro da equipe e motivo. Isso mantém os totais precisos e facilita resolver disputas.
Perfis de clientes fazem o app parecer pessoal em vez de apenas uma ferramenta de agendamento. Um bom perfil ajuda a equipe a entregar resultados consistentes, identificar padrões (como não comparecimentos frequentes) e fazer os clientes se sentirem lembrados — sem depender de bilhetes adesivos ou da memória de alguém.
Mantenha o básico leve, mas útil:
Torne campos opcionais realmente opcionais. O perfil mais rápido é criado automaticamente após o primeiro agendamento.
A visualização de histórico deve responder: “O que fizemos da última vez?” e “Quanto esse cliente costuma gastar?” Inclua:
Um pequeno cabeçalho “de relance” (total gasto, visitas, última visita) economiza tempo da equipe.
Notas em texto livre podem virar uma bagunça. Ofereça modelos rápidos como:
Modelos aceleram a entrada e mantêm as notas legíveis entre a equipe.
Nem todo membro da equipe precisa ver tudo. Adicione controles baseados em função como:
Se armazenar fotos, marque claramente quem pode visualizá-las e forneça uma opção simples de exclusão quando solicitado.
Um app de salão precisa de níveis de acesso diferentes para que as pessoas certas façam suas tarefas — sem que todos vejam receita, ferramentas de estorno ou notas privadas. Papéis claros também facilitam o treinamento porque o app se comporta de forma consistente para cada pessoa.
Um conjunto prático inicial é:
Mantenha permissões ligadas a tarefas reais:
Se a recepção usa um tablet compartilhado, adicione um PIN ou alternador de login por toque. Cada pessoa ainda tem conta única; o PIN apenas acelera o login. Auto-lock após inatividade evita acessos acidentais.
Registre ações sensíveis com quem, o quê, quando e de qual dispositivo — especialmente estornos, voids, sobrescritas de preço, exclusão de agendamentos e edição de tickets concluídos. Torne o log legível para proprietários e pesquisável por cliente, data e funcionário.
Um painel admin é a tela inicial para proprietários e gerentes: um lugar para ver o que está acontecendo hoje, o que precisa de atenção e se o negócio está no caminho. Mantenha simples — rápido de carregar, legível em tablet e focado em ações.
Comece com uma visão diária que responda: “O que precisamos fazer agora?” Inclua:
Essa tela deve permitir ações com um clique: marcar chegada, reagendar, estornar/void ou enviar lembrete.
Evite gráficos exagerados. Forneça um pequeno conjunto de relatórios confiáveis e mantenha o seletor de período consistente em todo lugar.
Relatórios essenciais:
Adicione um painel de insights de clientes fácil de entender:
Rotinas de contabilidade e fechamento ainda precisam de arquivos e papel. Ofereça:
Se precisar de inspiração para um layout limpo, mantenha a navegação do painel consistente com o resto do app (ex.: /admin/reports, /admin/schedule).
A melhor stack é aquela que o salão pode pagar para rodar e sua equipe consegue manter. Priorize confiabilidade, atualizações simples e baixos custos mensais em vez de arquitetura sofisticada.
Se a maioria dos agendamentos vem de um link no Instagram/Google, vá mobile-first: páginas rápidas, botões grandes e um fluxo de reserva que funcione em telas pequenas.
Se o salão agenda principalmente no balcão, considere tablet-first para a equipe: visualizações de calendário maiores, busca rápida de clientes e menos toques.
Muitos salões fazem ambos: um site de agendamento mobile-friendly para clientes e uma tela admin otimizada para a equipe.
Para um pequeno negócio, um monólito simples (uma base de código que serve páginas e lida com o banco) geralmente é mais fácil e barato. É mais rápido de construir, mais simples de deployar e mais fácil de depurar.
Uma API + frontend separado é útil se já souber que precisará de app móvel depois, múltiplas localidades ou parceiros externos. Caso contrário, costuma adicionar complexidade cedo.
Use um banco relacional (como PostgreSQL ou MySQL). Agendamentos, escalas, depósitos, gorjetas, reembolsos e recibos são dados conectados. Um banco relacional facilita aplicar regras (evitar double-booking) e gerar relatórios precisos.
Configure dois ambientes: staging (testar mudanças) e production (ao vivo). Automatize backups diários e pratique restaurá-los.
Adicione monitoramento de erros para saber de falhas antes dos clientes (ex.: erros no checkout ou sync do calendário). Mesmo uma configuração simples deve incluir checagens de uptime, logs e um jeito de reverter.
Se quiser um checklist prático, mantenha uma página interna como /blog/launch-checklist para “o que verificar antes de atualizar”.
Se o objetivo é validar o fluxo rapidamente (regras de agendamento, depósitos, recibos, papéis de equipe) antes de investir meses em engenharia customizada, uma plataforma low-code como Koder.ai pode ajudar a obter uma versão funcional mais rápido.
Koder.ai permite construir web apps via interface orientada por chat, com React no frontend e Go + PostgreSQL no backend. Também suporta exportação de código-fonte, hospedagem e deploy, domínios customizados e snapshots com rollback — útil enquanto você itera em um fluxo de agendamento e pagamentos ao vivo. Se depois você superar a primeira versão, pode manter o código e continuar o desenvolvimento por conta própria.
Comece listando os problemas recorrentes do dia a dia (por exemplo, dupla reserva, depósitos perdidos, anotações de clientes desaparecidas) e transforme cada um em uma meta mensurável.
Um escopo prático para a “v1” costuma ser:
Projete em função dos usuários reais e dos momentos de maior movimento:
Clareza de papéis reduz tempo de treinamento e evita acesso acidental a ferramentas sensíveis (como estornos).
Evite conflitos em duas camadas:
Mesmo que duas pessoas cliquem no mesmo horário, o servidor deve rejeitar a segunda reserva e retornar uma mensagem clara: “esse horário acabou de ser ocupado — escolha outro”.
O tempo de buffer torna o calendário realista (limpeza, preparação, atrasos). Armazene-o como parte das regras de agendamento, não como um hábito manual.
Abordagens comuns:
buffer_minutes por serviço (ou por local)end_time = start_time + duration + bufferMantenha o modelo de dados pequeno e consistente. Um conjunto central típico é:
Regra chave de modelagem: permita múltiplos pagamentos por compromisso (depósito, pagamento final, gorjeta, reembolso). Não confie em um único campo “pago/não pago” quando o comportamento real inclui parciais e ajustes.
Torne as regras de depósito previsíveis e configuráveis:
Também acompanhe uma janela de cancelamento (por exemplo, 24 horas) e registre depósitos perdidos explicitamente para relatórios precisos.
Use um fluxo de checkout consistente e mantenha as edições rápidas:
Os recibos devem estar disponíveis por email/SMS e em visualização para impressão, discriminando serviços, imposto, desconto, gorjeta, depósito aplicado e saldo restante.
Comece com papéis claros e restrinja ações de alto risco:
Adicione um log de atividades para ações sensíveis (quem/o quê/quando/de onde). Isso ajuda a resolver disputas sobre depósitos, não comparecimentos e edições.
Adicione integrações apenas quando o fluxo de agendamento + pagamento estiver estável.
Integrações comuns iniciais:
Decida se os recibos vêm do seu app, do provedor ou de uma fonte apenas para evitar recibos duplicados.
Reduza o risco do lançamento com um piloto e um plano de migração limpo:
Acompanhe métricas de sucesso como taxa de não comparecimento, tempo médio de checkout e taxa de rebooking para orientar melhorias.