SkillAgentSearch skills...

BusTrack

O projeto Bus Track fornece uma API RESTful para gerenciar dados de ônibus. A API permite que os fiscais obtenham, criem, atualizem e excluam dados de ônibus. O DB é o banco de dados NoSQL e o escolhido foi o MongoDB. O Front é o que o fiscal que é o usuário irá verificar e interagir com o sistema. Tem os testes que serão o unitário e performance.

Install / Use

/learn @lgomesroc/BusTrack
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

README

Bus Track

Venha conhecer o projeto Bus Track.

O projeto Bus Track fornece uma API RESTful para gerenciar dados de ônibus. A API permite que os fiscais obtenham, criem, atualizem e excluam dados de ônibus. O DB é o banco de dados NoSQL e o escolhido foi o MongoDB. O Front é o que o fiscal que é o usuário irá verificar e interagir com o sistema e o escolhido foi o Angular. Tem os testes que serão o unitário, integração, perfomance e usabilidade. O unitário para verificar pequenas partes do código se está saindo como o planejado e o de usabilidade para garantir que a interface do usuário seja intuitiva e fácil de usar.

Funcionalidades Principais

O objetivo principal do projeto é realizar o controle tanto de quantos passageiros embarcaram durante aquela viagem sendo que há uma média e se ficar abaixo, sofrerá punição.

  • Ônibus: Informações sobre os ônibus, como número, modelo, marca e capacidade.
  • Motoristas: Informações sobre os motoristas, como nome, idade e licença de motorista.
  • Rotas: Informações sobre as rotas, como origem, destino e número de paradas.
  • Passageiros: Informações sobre os passageiros, como nome, idade e endereço.

Ferramentas utilizadas

O projeto BusTrack.API utiliza as seguintes ferramentas e tecnologias:

Projeto BusTrack Backend (BusTrack.csproj) Autenticação e Autorização: Implementação do Auth0 para gerenciamento de autenticação e autorização utilizando o pacote Auth0.ManagementApi.

Mapeamento de Objetos: Uso do AutoMapper para mapeamento entre objetos de domínio e DTOs.

Hashing de Senhas: Implementação de hashing de senhas com BCrypt.Net-Next.

Documentação de API: Configuração do Swagger para documentação da API utilizando Swashbuckle.AspNetCore.

Banco de Dados: Integração com MongoDB utilizando MongoDB.Bson e MongoDB.Driver.

JWT: Manipulação de tokens JWT utilizando System.IdentityModel.Tokens.Jwt.

Testes: Configuração e execução de testes unitários com xunit e Moq. Uso de coverlet.collector para coleta de cobertura de testes. Uso de BenchmarkDotNet para benchmarking.

Outros Pacotes: Microsoft.AspNetCore.Hosting.Abstractions Microsoft.AspNetCore.OpenApi Microsoft.AspNetCore.SpaProxy Microsoft.AspNetCore.TestHost Microsoft.Extensions.DependencyInjection Newtonsoft.Json Selenium.WebDriver System.Linq.Async

Frontend Server (BusTrack.Frontend.Server.csproj) Configuração de Proxy para SPA: Configuração do proxy para o servidor de desenvolvimento Angular utilizando Microsoft.AspNetCore.SpaProxy.

Configuração de Pacotes: Configuração semelhante ao backend, incluindo pacotes como Auth0.ManagementApi, AutoMapper, BenchmarkDotNet, coverlet.collector, MongoDB.Bson, MongoDB.Driver, Moq, Newtonsoft.Json, Swashbuckle.AspNetCore, System.IdentityModel.Tokens.Jwt, xunit, entre outros.

Testes (BusTrack.Test.csproj) Configuração de Testes Unitários e de Integração: Projeto dedicado aos testes, com referências aos projetos de backend e frontend server. Uso de xunit para estrutura de testes. Uso de coverlet.collector para cobertura de testes. Uso de Moq para criação de mocks.

Configuração Geral Framework: Alvo do .NET 7.0 para todos os projetos.

Usings e Nullable: Usings implícitos habilitados e nullable reference types habilitados.

Integração com CI/CD: Configuração do projeto para integração contínua e entrega contínua utilizando Microsoft.NET.Test.Sdk, Microsoft.TestPlatform.TestHost, e Microsoft.VisualStudio.TestPlatform.

###Configuração do MongoDB

Durante a instalação do MongoDB, optei por executar o serviço como usuário de serviço de rede. Essa decisão foi tomada para simplificar o processo de conexão ao banco de dados e facilitar o desenvolvimento e a demonstração do projeto.

Executar o serviço como usuário de serviço de rede permite que o MongoDB seja iniciado com permissões limitadas, o que é adequado para ambientes de desenvolvimento e uso pessoal. Isso elimina a necessidade de configurar um login e senha específicos para acessar o banco de dados, tornando o processo de desenvolvimento mais rápido e direto.

Segurança

No parte de backend utilizei o JWT para token e Bcrypt para hashing de senhas como pode verificar logo acima.

Já no frontend criei regras para não salvar senha, copiar informações tanto com o teclado quanto selecionando com o botão esquerdo do mouse, o botão direito está desativado em todo o sistema e tem um temporizador de conexão de 20 minutos. Além disso, não pode voltar ou avançar na tela do sistema com os botões do navegador. Também há a política de senha que o usuário, a cada 45 dias, é obrigado a trocar a senha e o aviso será mostrado quando estiver desconectado.

Histórico de Atualizações

2024-06-03

  • Lançamento do sistema Bus Track. Foi salvo no GitHub a versão completa.

2024-04-26

  • Retirada de todos os erros do projeto.

2024-04-21

  • Criado a estrutura do frontend com Angular.

2024-04-20

  • Criado a estrutura de testes de integração.

2024-04-17

  • Criado a estrutura de testes unitários.

2024-04-16

  • Criado a estrutura da API.

2024-04-15

  • Dividindo o Program em pastas e arquivos menores.

2024-04-11

  • Adicionado a conexão do projeto com o banco de dados Bus Track

2024-04-10

  • Adicionados serviços relacionados ao banco de dados na pasta ServicesDB.

2024-04-07

  • Lançamento inicial do projeto no GitHub.

Estrutura das pastas do projeto com suas respectivas funções:

BusTrack # Nome do projeto

├── BusTrack.API # Pasta em relação à API

│ ├── ControllersAPI # Pasta para controladores da API

│ │ ├── AccountControllerAPI.cs # Controller para operações relacionadas a contas de usuário

│ │ ├── AuthenticationControllerAPI.cs # Controller para autenticação de usuários.

│ │ ├── BusControllerAPI.cs # Controller para gerenciar operações relacionadas a ônibus

│ │ ├── CreateAccountControllerAPI.cs # Controller para criar novas contas de usuário.

│ │ ├── DashboardControllerAPI.cs # Controller para endpoints relacionados ao dashboard e salvamento de dados

│ │ ├── DriverControllerAPI.cs # Controller para gerenciar operações relacionadas a motoristas

│ │ ├── PassengerControllerAPI.cs # Controller para gerenciar operações relacionadas a passageiros

│ │ ├── RouteControllerAPI.cs # Controller para gerenciar operações relacionadas a rotas

│ │ ├── TripControllerAPI.cs # Controller para gerenciar operações relacionadas a viagens

│ │ ├── TripsPassengerControllerAPI.cs # Controller para gerenciar operações relacionadas entre viagens e passageiros

│ │ └── UserControllerAPI.cs # Controller para gerenciar operações relacionadas a usuários

│ ├── DTOAPI # Pasta para DTOs da API

│ │ ├── BusDTOAPI.cs # DTO para ônibus

│ │ ├── DriverDTOAPI.cs # DTO para motoristas

│ │ ├── PassengerDTOAPI.cs # DTO para passageiros

│ │ ├── RouteDTOAPI.cs # DTO para rotas

│ │ ├── TripDTOAPI.cs # DTO para viagens

│ │ ├── TripPassengerDTOAPI.cs # DTO para associação entre viagens e passageiros

│ │ └── UpdatePasswordDTOAPI.cs # DTO para atualização de senha.

│ ├── InterfacesAPI # Pasta para interfaces da API

│ │ ├── ServicesAPI # Pasta para interfaces de serviço da API

│ │ │ ├── IAccountServiceAPI.cs # Interface para o serviço relacionado a contas de usuário.

│ │ │ ├── IBusServiceAPI.cs # Interface para serviço relacionado a ônibus

│ │ │ ├── IDriverServiceAPI.cs # Interface para serviço relacionado a motoristas

│ │ │ ├── IEmailConfirmationServiceAPI.cs # Interface para o serviço de confirmação de e-mail na API

│ │ │ ├── IPassengerServiceAPI.cs # Interface para serviço relacionado a passageiros

│ │ │ ├── IRouteServiceAPI.cs # Interface para serviço relacionado a rotas

│ │ │ ├── ITripServiceAPI.cs # Interface para serviço relacionado a viagens

│ │ │ ├── ITripsPassengerServiceAPI.cs # Interface para serviço relacionado entre viagens e passageiros

│ │ │ ├── IUpdatePasswordServiceAPI.cs # Interface para serviço de atualização de senha.

│ │ │ ├── IUserAuthenticationServiceAPI.cs # Interface para o serviço de autenticação de usuários na API

│ │ │ └── IUserServiceAPI.cs # Interface para o serviço de usuário na API

│ ├── MappingsAPI # Pasta para configuração de mapeamentos

│ │ └── MappingProfileAPI.cs # Arquivo para configuração de mapeamentos

│ ├── ModelsAPI # Pasta para modelos da API

│ │ ├── AccountModelAPI.cs # Modelo para contas de usuário

│ │ ├── BusModelAPI.cs # Modelo para ônibus

│ │ ├── DriverModelAPI.cs # Modelo para motoristas

│ │ ├── PassengerModelAPI.cs # Modelo para passageiros

│ │ ├── RouteModelAPI.cs # Modelo para rotas

│ │ ├── TripModelAPI.cs # Modelo para via

Related Skills

View on GitHub
GitHub Stars9
CategoryData
Updated1y ago
Forks2

Languages

C#

Security Score

70/100

Audited on Jun 5, 2024

No findings