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.
- 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
- C#
- ASP.NET
- Entity Framework
- SQL Server
- JavaScript
- HTML
- CSS
- Bootstrap
- Git / GitHub
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
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.
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.
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
Clone o repositório:
git clone https://github.com/GabrielAlvesGG/BarbeShopingSystem.gitAcesse a pasta do projeto:
cd BarbeShopingSystemAbra 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 updateExecute a aplicação pelo Visual Studio ou pelo terminal:
dotnet runEm 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
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.
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
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
Exibe o formulário de login.
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 sucesso401 Unauthorized— credenciais inválidas400 Bad Request— campo obrigatório não informado
Finaliza a sessão do usuário.
Retorno esperado:
- Redirecionamento para
/Login
Exibe o formulário para definição de senha local no primeiro acesso via Google.
Confirma a criação da senha local para o usuário autenticado via Google.
Headers:
Content-Type: application/jsonExemplo de body:
"MinhaNovaSenha@123"Possíveis respostas:
200 OK— senha salva com sucesso400 Bad Request— senha inválida ou não informada
- O usuário acessa a tela de login.
- Informa e-mail e senha.
- O sistema valida as credenciais.
- Em caso de sucesso, o usuário é redirecionado para a área principal.
- Em caso de falha, o sistema exibe mensagem de erro.
-
O usuário clica em Entrar com Google.
-
O sistema redireciona para o fluxo de autenticação Google.
-
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.
- O usuário clica em Esqueci minha senha.
- O sistema direciona para o fluxo de recuperação.
- O usuário informa os dados necessários.
- O sistema executa o processo de redefinição de senha conforme a regra implementada.
- 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
- Credenciais inválidas
- Campos obrigatórios não preenchidos
- E-mail em formato inválido
- Erro ao definir senha local
- Falha inesperada no servidor
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"}'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.
- 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
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.