Skip to content

GabrielAlvesGG/BarbeShopingSystem

Repository files navigation

BarbeShopingSystem

Sistema web para gerenciamento de barbearia, desenvolvido com ASP.NET, C#, JavaScript, HTML, CSS e Bootstrap.

O projeto tem como objetivo praticar o desenvolvimento de uma aplicação web com autenticação, controle de usuários, organização em camadas e separação de responsabilidades entre Controllers, Models, Services, Repositories e Views.

Funcionalidades

  • Login de usuários
  • Controle de perfis: Administrador, Barbeiro e Cliente
  • Cadastro de novos usuários
  • Recuperação de senha
  • Login com Google
  • Definição de senha local no primeiro acesso via Google
  • Validações de formulário
  • Exibição de mensagens de erro
  • Organização em padrão MVC

Tecnologias utilizadas

  • C#
  • ASP.NET
  • Entity Framework
  • SQL Server
  • JavaScript
  • HTML
  • CSS
  • Bootstrap
  • Git / GitHub

Estrutura do projeto

Controllers/          Responsável pelas rotas e controle das requisições
Data/                 Configurações de acesso a dados
Enums/                Enumerações utilizadas no sistema
Helpers/              Classes auxiliares
Models/               Entidades e modelos da aplicação
ModelsRepository/     Camada de acesso a dados/repositórios
Service/              Regras de negócio e serviços da aplicação
Views/                Telas da aplicação
wwwroot/              Arquivos estáticos como CSS, JS e imagens

Objetivo técnico

Este projeto demonstra prática com desenvolvimento web em ASP.NET, autenticação, separação de responsabilidades, persistência de dados e organização de uma aplicação em camadas.

O foco principal foi estruturar uma aplicação funcional, trabalhando conceitos como controle de acesso, fluxo de login, validações, comunicação com banco de dados e organização do código em responsabilidades distintas.

Status do projeto

Projeto desenvolvido com objetivo de estudo e prática em desenvolvimento web com ASP.NET.

Algumas funcionalidades podem estar em evolução ou pendentes de refinamento, como melhorias visuais, documentação completa do banco de dados, testes automatizados e ajustes na organização interna do projeto.

Como executar o projeto

Pré-requisitos

Antes de executar o projeto, é necessário ter instalado:

  • Visual Studio 2022
  • .NET SDK
  • SQL Server
  • SQL Server Management Studio ou Azure Data Studio
  • Git

Passos para execução

Clone o repositório:

git clone https://github.com/GabrielAlvesGG/BarbeShopingSystem.git

Acesse a pasta do projeto:

cd BarbeShopingSystem

Abra o projeto no Visual Studio.

Configure a string de conexão no arquivo appsettings.json, de acordo com o seu ambiente local.

Caso o projeto utilize migrations do Entity Framework, execute:

dotnet ef database update

Execute a aplicação pelo Visual Studio ou pelo terminal:

dotnet run

Prints do projeto

Em breve serão adicionadas imagens das principais telas da aplicação.

Sugestões de telas para documentar:

  • Tela de login
  • Tela de cadastro
  • Tela inicial do sistema
  • Área administrativa
  • Fluxo de recuperação de senha

Documentação do fluxo de login

1. Objetivo

O fluxo de login tem como objetivo autenticar usuários e permitir o acesso ao sistema conforme o perfil cadastrado.

O sistema considera os seguintes perfis:

  • Administrador
  • Barbeiro
  • Cliente

Cada perfil pode ter permissões e funcionalidades específicas dentro da aplicação.

2. Pré-requisitos

Para acessar o sistema, o usuário precisa estar em uma das seguintes situações:

  • Conta pré-cadastrada pelo administrador
  • Conta criada pelo próprio usuário
  • Conta autenticada via Google
  • Conta com senha local definida após o primeiro acesso via Google

3. Visão do usuário

A tela de login possui os seguintes campos e ações:

  • Campo de e-mail
  • Campo de senha
  • Botão para entrar
  • Botão para entrar com Google
  • Link para cadastrar novo usuário
  • Link para recuperação de senha

Validações previstas:

  • Campo obrigatório não preenchido
  • E-mail inválido
  • Senha não informada
  • Credenciais incorretas
  • Exibição de mensagens de erro para orientar o usuário

4. Rotas do LoginController

GET /Login

Exibe o formulário de login.

POST /LoginUser

Realiza a autenticação do usuário com e-mail e senha.

Exemplo de body:

{
  "Email": "usuario@exemplo.com",
  "Password": "suaSenha123"
}

Possíveis respostas:

  • 200 OK — login realizado com sucesso
  • 401 Unauthorized — credenciais inválidas
  • 400 Bad Request — campo obrigatório não informado

POST /Logout

Finaliza a sessão do usuário.

Retorno esperado:

  • Redirecionamento para /Login

GET /Login/SetPassword?email={email}

Exibe o formulário para definição de senha local no primeiro acesso via Google.

POST /Login/SetPasswordConfirm

Confirma a criação da senha local para o usuário autenticado via Google.

Headers:

Content-Type: application/json

Exemplo de body:

"MinhaNovaSenha@123"

Possíveis respostas:

  • 200 OK — senha salva com sucesso
  • 400 Bad Request — senha inválida ou não informada

5. Fluxo condicional

Login normal

  1. O usuário acessa a tela de login.
  2. Informa e-mail e senha.
  3. O sistema valida as credenciais.
  4. Em caso de sucesso, o usuário é redirecionado para a área principal.
  5. Em caso de falha, o sistema exibe mensagem de erro.

Login com Google

  1. O usuário clica em Entrar com Google.

  2. O sistema redireciona para o fluxo de autenticação Google.

  3. Após selecionar o e-mail:

    • Se o usuário já estiver cadastrado, o login é realizado.
    • Se for o primeiro acesso, o usuário é direcionado para criação de senha local.

Recuperação de senha

  1. O usuário clica em Esqueci minha senha.
  2. O sistema direciona para o fluxo de recuperação.
  3. O usuário informa os dados necessários.
  4. O sistema executa o processo de redefinição de senha conforme a regra implementada.

6. Cenários de sucesso e falha

Cenários de sucesso

  • Usuário realiza login com e-mail e senha válidos
  • Usuário realiza login com Google
  • Usuário define senha local no primeiro acesso via Google
  • Usuário é redirecionado corretamente conforme seu perfil

Cenários de falha

  • Credenciais inválidas
  • Campos obrigatórios não preenchidos
  • E-mail em formato inválido
  • Erro ao definir senha local
  • Falha inesperada no servidor

7. Exemplo de requisição

Exemplo usando curl para autenticação:

curl -X POST https://seusite.com/LoginUser \
  -H "Content-Type: application/json" \
  -d '{"Email":"joao@exemplo.com","Password":"abc123"}'

8. Organização das responsabilidades

O projeto busca separar responsabilidades entre as camadas:

  • Controllers: recebem as requisições e coordenam o fluxo da aplicação.
  • Models: representam os dados utilizados pelo sistema.
  • Services: concentram regras e operações da aplicação.
  • Repositories: realizam o acesso aos dados.
  • Views: representam as telas exibidas ao usuário.
  • Helpers: agrupam funcionalidades auxiliares utilizadas pelo sistema.

Melhorias futuras

  • Melhorar a documentação das demais funcionalidades
  • Adicionar instruções mais detalhadas sobre configuração do banco de dados
  • Documentar o modelo de banco de dados
  • Adicionar prints das telas principais
  • Criar testes automatizados para os fluxos principais
  • Revisar a estrutura do projeto para aproximar de boas práticas modernas com ASP.NET
  • Melhorar a padronização dos nomes de pastas e classes
  • Adicionar validações mais completas nos formulários
  • Melhorar o tratamento global de erros

Observação

Este projeto faz parte da minha evolução como desenvolvedor, reunindo práticas de ASP.NET, C#, persistência de dados, autenticação, organização em camadas e desenvolvimento de aplicações web.

About

Sistema web para barbearia desenvolvido em ASP.NET, com fluxo de login, perfis de usuário, organização em MVC, services, repositories e persistência de dados.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors