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/BusTrackREADME
README
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
feishu-drive
341.0k|
things-mac
341.0kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
341.0kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
postkit
PostgreSQL-native identity, configuration, metering, and job queues. SQL functions that work with any language or driver
