Pular para o conteúdo
Voltar aos projetos

App mobile · Flutter

Barbú, app de barbearia

App de agendamento para uma barbearia, feito em equipe de 4 pessoas: Flutter, Firebase Auth e Firestore, horários ocupados em tempo real e confirmação por e-mail via n8n.

Minha função
Grande parte do app: Firebase, telas iniciais, login, agendamento e n8n
Período
2026 · disciplina de Dispositivos Móveis
Status
em andamento
Stack
Flutter · Firestore · Firebase Auth · n8n · Dart

Resumo em 30 segundos

Objetivo
Um app para organizar e automatizar o agendamento de cortes de uma barbearia local, como projeto da disciplina de Dispositivos Móveis.
Solução
Login pelo Firebase Auth, agendamento em 3 etapas que consulta no Firestore os horários já ocupados, lembrete no celular 1 hora antes e um webhook para o n8n mandar a confirmação por e-mail.
Resultado
Protótipo com o fluxo completo de agendamento, histórico e avisos. Fidelidade e Produtos ficaram em desenvolvimento. Não há métricas de uso.

Contexto

O Barbú é um protótipo de app para uma barbearia local: o cliente cria a conta, escolhe o serviço, o barbeiro e um horário livre, e acompanha os agendamentos no próprio celular.

Foi um projeto em grupo da disciplina de Dispositivos Móveis, feito por Carlos, Gustavo Alves, Henrique e Kendy.

Minha função

Fiz grande parte do app: a integração com o Firebase (Auth e Firestore), as telas iniciais, o login, o agendamento e a integração com o n8n.

Como funciona

  1. 01LoginFirebase Auth com e-mail e senha
  2. 02AgendamentoServiço, barbeiro, dia e horário
  3. 03FirestoreLê os horários ocupados e grava em bookings
  4. 04LembreteNotificação local 1 hora antes
  5. 05n8nO webhook vira o e-mail de confirmação
Do login ao e-mail de confirmação.
  • Conta. O cadastro cria o usuário no Firebase Auth e guarda nome e telefone em users/{uid}. As regras do Firestore deixam cada pessoa ler e alterar só os próprios dados e agendamentos.
  • Horários em tempo real. Ao escolher o dia, o app consulta em bookings os agendamentos daquele barbeiro na data e mostra só os horários livres.
  • Ao confirmar. O app grava o agendamento em bookings, cria um aviso em notifications/{uid}/items (aparece na aba Avisos), agenda o lembrete local e envia ao webhook do n8n o nome, o e-mail, a data, o horário, o barbeiro e o serviço.
  • Depois. O histórico permite cancelar (o status muda para "cancelado"), e agendamentos que já passaram aparecem como concluídos.

Experimente

O app de agendamento que fizemos em Flutter e Firebase, recriado para o navegador. Entre como visitante, marque um horário e veja o que o app grava no Firestore, o lembrete que agenda e o webhook que manda para o n8n.

Protótipo web recriado a partir do app em Flutter · dados fictícios

O que é igual ao app e o que é simulado

  • Igual ao app: as telas, as cores, os serviços, os barbeiros, os horários, o agendamento em 3 etapas e o formato do documento em bookings e do webhook do n8n.
  • Simulado: o login aceita qualquer dado, os horários ocupados são sorteados por barbeiro e dia, e nada sai do seu navegador. Os dados somem quando a página recarrega.
  • Diferente do app: na demo, os horários de hoje que já passaram ficam desativados, e os ocupados aparecem riscados em vez de sumir da grade.
  • O e-mail de confirmação é uma prévia ilustrativa: o fluxo do n8n não está no repositório.
  • Fidelidade e Produtos aparecem como em desenvolvimento, como no app.

Limites e próximos passos

  • Fidelidade, Produtos e o painel de administração ficaram como "em breve" no app.
  • O webhook aponta para um n8n local (localhost), então o e-mail de confirmação só sai com o n8n rodando na mesma máquina.
  • A consulta de horários não filtra o status, então um horário cancelado continua aparecendo como ocupado. E a gravação não usa transação: dois clientes confirmando o mesmo horário no mesmo instante gravariam os dois. São os primeiros ajustes que eu faria.