Sistema de agendamento e gestão para barbearias, desenvolvido como Projeto Integrado Multidisciplinar (PIM III) do curso de Análise e Desenvolvimento de Sistemas.
Desenvolvido por: Scarlletti Alyssandra Ramos
O BarberSys é uma aplicação web fullstack voltada para barbearias, permitindo que clientes realizem agendamentos online, barbeiros gerenciem seus atendimentos e administradores acompanhem métricas e previsões de demanda geradas por inteligência artificial. O sistema também conta com uma seção de acessibilidade com dicionário de LIBRAS para incluir clientes com deficiência auditiva.
- Next.js 14 (App Router)
- React 18
- Tailwind CSS 4
- Lucide React — ícones
- ASP.NET Core (.NET 10) — API RESTful
- Entity Framework Core 8 — ORM para SQL Server
- MongoDB.Driver — banco de dados NoSQL
- JWT Bearer Authentication — autenticação stateless
- BCrypt.Net — hash de senhas
- Microsoft.ML 3 — machine learning para previsão de demanda
- Swagger (Swashbuckle) — documentação da API
- SQL Server — dados relacionais (usuários, agendamentos, serviços)
- MongoDB — dados não-relacionais (catálogo de cortes, histórico de fluxo para ML, logs de auditoria)
BarberSys/
├── Backend/ # API ASP.NET Core
│ ├── Controllers/
│ │ ├── AuthController.cs # Login e autenticação
│ │ ├── AgendamentosController.cs
│ │ ├── UsuariosController.cs
│ │ ├── InteligenciaController.cs # Previsão de demanda (ML)
│ │ └── AcessibilidadeController.cs # Dicionário LIBRAS
│ ├── Models/
│ │ ├── SQL/ # Entidades do banco relacional
│ │ │ ├── Usuario.cs # Classe abstrata (herança/POO)
│ │ │ ├── Cliente.cs
│ │ │ ├── Barbeiro.cs
│ │ │ ├── Servico.cs
│ │ │ ├── Agendamento.cs
│ │ │ └── ApplicationDbContext.cs
│ │ └── NoSQL/ # Documentos MongoDB
│ │ ├── CatalogoCorte.cs
│ │ ├── HistoricoFluxoML.cs
│ │ ├── AuditoriaLog.cs
│ │ └── MongoDbContext.cs
│ ├── Services/
│ │ ├── AuthService.cs
│ │ ├── AgendamentoService.cs
│ │ └── InteligenciaService.cs
│ ├── DTOs/
│ ├── Middleware/
│ │ └── ExceptionMiddleware.cs
│ └── Program.cs
│
└── barbersys/ # Frontend Next.js
├── app/
│ ├── page.jsx # Página inicial
│ ├── login/
│ ├── registro/
│ ├── dashboard/ # Painel do usuário/barbeiro/admin
│ ├── agendamento/
│ ├── agendar/
│ ├── meus-agendamentos/
│ ├── perfil/
│ ├── admin/
│ └── acessibilidade/ # Dicionário LIBRAS
├── components/
│ ├── Navbar.jsx
│ ├── Sidebar.jsx
│ ├── PageWrapper.jsx
│ ├── StatusBadge.jsx
│ └── Toast.jsx
└── lib/
├── api.js # Camada de comunicação com a API
├── auth.js
└── useAuth.js
- Cadastro e login com autenticação JWT
- Agendamento de horários com escolha de barbeiro e serviço
- Visualização e cancelamento dos próprios agendamentos
- Perfil pessoal
- Painel com agendamentos do dia
- Atualização de status dos atendimentos (Pendente → Concluído / Cancelado)
- Visualização da própria agenda
- Dashboard com métricas gerais
- Previsão de demanda gerada por Microsoft.ML com base no histórico de atendimentos
- Registro de histórico diário para alimentar o modelo de ML
- Gerenciamento de usuários e barbeiros
- Dicionário de LIBRAS integrado, com vídeos explicativos categorizados por tema (Navegação, Autenticação, Ações, Conceitos)
- Busca e filtragem por categoria de termos em Língua Brasileira de Sinais
O sistema utiliza JWT (JSON Web Tokens) com três papéis de acesso:
| Papel | Acesso |
|---|---|
Admin |
Acesso total, incluindo painel de IA |
Barbeiro |
Gerenciamento dos próprios agendamentos |
Cliente |
Agendamento e visualização própria |
Usuarios— tabela base com herança (TPH):ClienteseBarbeirosAgendamentos— com statusPendente,ConcluidoeCanceladoServicos— catálogo de serviços com duração e preço
CatalogoCortes— imagens e estilos de corte (degradê, social, militar...)HistoricoFluxoML— dados históricos de movimento para treinar o modelo de previsãoAuditoriaLogs— rastreamento de ações no sistema
- .NET 10 SDK
- Node.js 18+
- SQL Server (ou SQL Server Express)
- MongoDB
# 1. Entre na pasta do backend
cd Backend
# 2. Configure as strings de conexão em appsettings.json
# DefaultConnection: SQL Server
# MongoDbConnection: MongoDB
# Jwt:Key: chave secreta de pelo menos 32 caracteres
# 3. Aplique as migrations do EF Core
dotnet ef database update
# 4. Execute a API
dotnet runA API ficará disponível em http://localhost:5078 e a documentação Swagger em http://localhost:5078/swagger.
# 1. Entre na pasta do frontend
cd barbersys
# 2. Instale as dependências
npm install
# 3. Configure o arquivo de ambiente
cp .env.example .env.local
# Edite .env.local e defina:
# NEXT_PUBLIC_API_URL=http://localhost:5078
# 4. Inicie o servidor de desenvolvimento
npm run devO frontend ficará disponível em http://localhost:3000.
| Método | Rota | Descrição | Auth |
|---|---|---|---|
POST |
/api/auth/login |
Login do usuário | ❌ |
POST |
/api/usuarios/registrar |
Cadastro de cliente | ❌ |
POST |
/api/usuarios/registrar-barbeiro |
Cadastro de barbeiro | ✅ Admin |
GET |
/api/agendamentos/disponiveis |
Horários disponíveis | ❌ |
POST |
/api/agendamentos |
Criar agendamento | ✅ |
GET |
/api/agendamentos/meus |
Meus agendamentos | ✅ |
PUT |
/api/agendamentos/{id}/status |
Atualizar status | ✅ |
GET |
/api/inteligencia/previsao-demanda |
Previsão de demanda (ML) | ✅ Admin |
POST |
/api/inteligencia/registrar-historico |
Registrar histórico diário | ✅ Admin |
GET |
/api/acessibilidade/dicionario-libras |
Dicionário de LIBRAS | ❌ |
GET |
/api/acessibilidade/dicionario-libras/categorias/{cat} |
LIBRAS por categoria | ❌ |
O projeto demonstra os quatro pilares da Programação Orientada a Objetos:
- Abstração —
Usuarioé uma classe abstrata que define o contrato base paraClienteeBarbeiro - Encapsulamento — propriedades com controle de acesso (
DataCadastrocom getter/setter personalizado) - Herança —
ClienteeBarbeiroherdam deUsuario, com mapeamento via EF Core (TPH) - Polimorfismo — método
CalcularPagamento()sobrescrito nas subclasses conforme regras de negócio
Projeto acadêmico desenvolvido para fins educacionais — PIM III, curso de Análise e Desenvolvimento de Sistemas.
Desenvolvido com ❤️ por Scarlletti Alyssandra Ramos