Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

BarberSys 💈

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


📋 Sobre o Projeto

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.


🚀 Tecnologias Utilizadas

Frontend

  • Next.js 14 (App Router)
  • React 18
  • Tailwind CSS 4
  • Lucide React — ícones

Backend

  • 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

Bancos de Dados

  • 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)

🏗️ Arquitetura do Projeto

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

✨ Funcionalidades

Para Clientes

  • 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

Para Barbeiros

  • Painel com agendamentos do dia
  • Atualização de status dos atendimentos (Pendente → Concluído / Cancelado)
  • Visualização da própria agenda

Para Administradores

  • 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

Acessibilidade

  • 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

🔐 Autenticação e Papéis

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

🗄️ Banco de Dados

SQL Server (Dados Relacionais)

  • Usuarios — tabela base com herança (TPH): Clientes e Barbeiros
  • Agendamentos — com status Pendente, Concluido e Cancelado
  • Servicos — catálogo de serviços com duração e preço

MongoDB (Dados Não-Relacionais)

  • CatalogoCortes — imagens e estilos de corte (degradê, social, militar...)
  • HistoricoFluxoML — dados históricos de movimento para treinar o modelo de previsão
  • AuditoriaLogs — rastreamento de ações no sistema

⚙️ Como Executar o Projeto

Pré-requisitos


Backend (API)

# 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 run

A API ficará disponível em http://localhost:5078 e a documentação Swagger em http://localhost:5078/swagger.


Frontend (Next.js)

# 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 dev

O frontend ficará disponível em http://localhost:3000.


🌐 Endpoints da API

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

🧠 Conceitos de POO Aplicados

O projeto demonstra os quatro pilares da Programação Orientada a Objetos:

  • AbstraçãoUsuario é uma classe abstrata que define o contrato base para Cliente e Barbeiro
  • Encapsulamento — propriedades com controle de acesso (DataCadastro com getter/setter personalizado)
  • HerançaCliente e Barbeiro herdam de Usuario, com mapeamento via EF Core (TPH)
  • Polimorfismo — método CalcularPagamento() sobrescrito nas subclasses conforme regras de negócio

📄 Licença

Projeto acadêmico desenvolvido para fins educacionais — PIM III, curso de Análise e Desenvolvimento de Sistemas.


Desenvolvido com ❤️ por Scarlletti Alyssandra Ramos

About

BarberSys é um sistema web para agendamento e gerenciamento de barbearias. A plataforma permite que clientes marquem horários, barbeiros organizem seus atendimentos e administradores acompanhem métricas e previsões de demanda. Também possui autenticação, diferentes níveis de acesso e recursos de acessibilidade em LIBRAS.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages