Uma aplicação web completa para gerenciamento de barbearias, desenvolvida com Flask e integrada com inteligência artificial para otimizar agendamentos e estratégias de negócio.
APP_BARBEARIA é uma plataforma web moderna e intuitiva, construída com o framework Flask em Python, destinada a revolucionar a gestão de barbearias. O sistema oferece uma experiência completa tanto para clientes quanto para administradores, combinando funcionalidades tradicionais de agendamento com recursos avançados de análise de dados e automação.
- Para Clientes: Facilitar o agendamento de serviços de forma rápida e personalizada, com lembretes automáticos e sugestões inteligentes baseadas no histórico de uso.
- Para Administradores: Fornecer ferramentas poderosas de gestão, incluindo dashboards analíticos, controle de serviços e segmentação de clientes para estratégias de marketing direcionadas.
- Diferencial Inovador: Integração de Machine Learning para previsões de agendamento e análise RFM (Recência, Frequência, Valor Monetário) com clustering K-means, transformando dados em insights acionáveis.
O sistema inclui notificações automáticas via e-mail e WhatsApp, garantindo que nenhum agendamento seja esquecido, e utiliza um banco de dados SQLite robusto com migrações via Alembic para manter a integridade dos dados.
- Autenticação Segura: Sistema completo de cadastro, login, logout e recuperação de senha com envio de e-mails seguros.
- Perfil Personalizado: Gerenciamento de informações pessoais, incluindo upload e edição de foto de perfil.
- Agendamento Inteligente:
- Formulário dinâmico com validação em tempo real.
- Prevenção de conflitos de horário.
- Sugestão automática da próxima data ideal usando RandomForestRegressor, baseado no padrão histórico de agendamentos do cliente.
- Notificações Automáticas:
- Confirmação imediata por e-mail após agendamento.
- Lembretes via WhatsApp 24h, 2h, 1h e 30min antes do serviço, enviados automaticamente por um serviço em background.
- Histórico Completo: Visualização de todos os agendamentos passados e futuros.
- Controle de Acesso: Rotas protegidas com decorator personalizado para permissões de admin.
- Gestão de Agenda:
- Visualização da agenda diária com opção de exclusão de agendamentos.
- Consulta histórica por data específica.
- CRUD de Serviços: Interface completa para adicionar, editar, excluir e gerenciar preços de serviços oferecidos.
- Dashboards Analíticos:
- Gráficos interativos com Chart.js mostrando agendamentos por dia, serviços mais populares e lucros acumulados.
- Filtros de período para análise temporal.
- Segmentação de Clientes com IA:
- Análise RFM automática para classificar clientes em "Alto Valor", "Intermediário" e "Novo Cliente".
- Algoritmo K-means para agrupamento inteligente, auxiliando em campanhas de marketing personalizadas.
- Ferramentas Administrativas: Scripts para promoção de usuários a admin, reset de banco e verificação de senhas.
- Modelo de Previsão: RandomForestRegressor treinado com dados históricos para sugerir datas de agendamento otimizadas, reduzindo faltas e melhorando a satisfação do cliente.
- Segmentação RFM/K-means: Análise estatística para identificar padrões de comportamento, permitindo estratégias de fidelização direcionadas.
-
Backend:
- Python 3.8+ - Linguagem principal
- Flask - Framework web leve e flexível
- Flask-SQLAlchemy - ORM para interação com banco de dados
- Flask-Migrate & Alembic - Sistema de migrações para versionamento do banco
- Flask-Login - Gerenciamento de sessões de usuário
- Flask-Bcrypt - Hashing seguro de senhas
- Flask-Mail - Envio de e-mails via SMTP
- Flask-WTF - Validação e geração de formulários
-
Banco de Dados:
- SQLite - Banco de dados relacional leve para desenvolvimento
- SQLAlchemy - ORM para consultas e manipulação de dados
-
Frontend:
- Jinja2 - Engine de templates para renderização dinâmica
- HTML5, CSS3, JavaScript - Tecnologias web padrão
- Bootstrap 5 - Framework CSS responsivo para UI moderna
- Chart.js - Biblioteca para gráficos interativos
-
Machine Learning:
- Pandas - Manipulação e análise de dados
- Scikit-learn - Algoritmos de ML (RandomForestRegressor e KMeans)
-
Outras Bibliotecas:
- python-dotenv - Carregamento de variáveis de ambiente
- Pillow - Processamento de imagens para uploads
- PyWhatKit - Automação de WhatsApp para lembretes
- WTForms - Validação avançada de formulários
Para instruções detalhadas de instalação e configuração do ambiente local, consulte o arquivo SETUP_LOCAL.md.
- Python 3.8 ou superior
- Conta Gmail para notificações por e-mail
- WhatsApp Web logado para lembretes
Após a instalação, execute:
python app.pyAcesse http://localhost:5000 no navegador.
- Cadastro/Login: Novos usuários se cadastram; admins são promovidos via script.
- Agendamento: Cliente seleciona serviço, data e hora; recebe sugestão IA e confirmação por e-mail.
- Lembretes: Sistema envia notificações automáticas via WhatsApp em intervalos pré-definidos.
- Administração: Acesse
/adminpara visualizar agenda, gerenciar serviços e analisar relatórios.
- Sugestão IA: Após alguns agendamentos, o sistema sugere datas baseadas em padrões pessoais.
- Segmentação: Admins visualizam clusters de clientes para campanhas direcionadas.
- Relatórios: Dashboards com gráficos de lucros e popularidade de serviços.
APP_BARBEARIA_PI/
├── App_Barbearia/ # Pacote principal da aplicação
│ ├── static/ # Arquivos estáticos (CSS, imagens, JS)
│ ├── templates/ # Templates HTML (Jinja2)
│ ├── __init__.py # Fábrica da aplicação e inicialização das extensões Flask
│ ├── decorators.py # Decorators personalizados (ex: controle de acesso admin)
│ ├── forms.py # Definição dos formulários via Flask-WTF
│ ├── ml_model.py # Modelos de Machine Learning (previsão e segmentação)
│ ├── models.py # Modelos do banco de dados com SQLAlchemy
│ ├── routs.py # Rotas e controladores (lógica das views)
│ └── instance/ # Configurações da instância e scripts auxiliares
│ ├── reset_banco.py # Reset de tabelas, exclusão e atualização no banco
│ ├── reset_usuario.py # Reset da tabela usuário (ex: senha padrão)
│ └── verificar_senha.py # Ferramenta para checar hash de senha
├── migrations/ # Scripts de migração do banco via Alembic
│ └── versions/ # Versões das migrações
├── tests/ # Testes unitários e funcionais da aplicação
│ ├── conftest.py # Configuração para o ambiente de testes
│ ├── test_auth.py # Testes para autenticação e registro
│ └── test_admin.py # Testes para funcionalidades administrativas
├── app.py # Arquivo principal para iniciar a aplicação
├── ler_db.py # Script para consulta rápida ao banco SQLite (debug)
├── set_admin.py # Script CLI para promover usuários a admins
├── requirements.txt # Arquivo de dependências do projeto
├── SETUP_LOCAL.md # Guia detalhado de instalação e execução
└── readme.md # Este arquivo
O sistema utiliza SQLite com três tabelas principais:
| Coluna | Tipo | Restrições | Descrição |
|---|---|---|---|
| id | Integer | PK | Identificador único |
| username | String(30) | Único, não nulo | Nome do usuário |
| String(120) | Único, não nulo | ||
| foto_perfil | String(20) | Não nulo, padrão 'default.jpg' | Nome arquivo foto perfil |
| senha | String(60) | Não nulo | Senha (hash bcrypt) |
| role | String(20) | Não nulo, default 'cliente' | Papel do usuário (admin/cliente) |
| Coluna | Tipo | Restrições | Descrição |
|---|---|---|---|
| id | Integer | PK | Identificador único |
| nome | String(100) | Único, não nulo | Nome do serviço (ex: Corte) |
| valor | Float | Não nulo | Preço do serviço |
| Coluna | Tipo | Restrições | Descrição |
|---|---|---|---|
| id | Integer | PK | Identificador único |
| username | String | Não nulo | Nome do cliente para o agendamento |
| cell | String | Não nulo | Número de celular do cliente |
| servico | String | Não nulo | Nome do serviço agendado |
| valor | Float | Não nulo, default 0.0 | Valor do serviço no momento do agendamento |
| hora | String | Não nulo | Hora agendada |
| data | Date | Não nulo | Data do agendamento |
| id_usuario | Integer | FK para usuario.id | Referência ao usuário que agendou |
Contribuições são bem-vindas! Para contribuir:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
- Siga os padrões de código Python (PEP 8)
- Adicione testes para novas funcionalidades
- Atualize a documentação conforme necessário
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Desenvolvido com ❤️ para barbearias modernas que querem crescer com tecnologia.
- instance/verificar_senha.py
Verifica se uma senha em texto plano confere com o hash bcrypt armazenado no banco para um usuário específico.
-
Previsão de Próxima Visita:
Modelo baseado emRandomForestRegressorque usa dados históricos de agendamento para sugerir a próxima data para um cliente, considerando a média de dias entre visitas e o dia da semana. -
Segmentação de Clientes (K-means):
Análise dos clientes usando as métricas RFM para agrupá-los em três segmentos: "Alto Valor", "Intermediário" e "Novo Cliente".
Os modelos são treinados a partir dos dados da base e integrados à aplicação para fornecer sugestões no fluxo de agendamento e análise administrativa.
- Framework e extensões Flask: flask.palletsprojects.com
- SQLAlchemy ORM: docs.sqlalchemy.org
- Flask-Migrate & Alembic: flask-migrate.readthedocs.io
- Uso do Flask-Login: flask-login.readthedocs.io
- Flask-Mail para envio de e-mails: flask-mail.readthedocs.io
- Machine Learning com scikit-learn: scikit-learn.org
- Pandas para manipulação de dados: pandas.pydata.org
- Chart.js para gráficos: chartjs.org
- Bootstrap 5 para UI responsiva: getbootstrap.com
Para dúvidas, sugestões ou contribuições, entre em contato com o desenvolvedor responsável pelo projeto.
APP_BARBEARIA - Gerencie sua barbearia com estilo e inteligência!