Sistema de bilhética para uma rede de transportes públicos
Este é um sistema de Bilhetagem para uma Rede de Transporte Público, em que o front end (lado cliente) é desenvolvido utilizando React JS e o back end (lado servidor) é desenvolvido utilizando Node JS e Express JS. Este aplicativo da web usa MongoDB como banco de dados, que é um banco de dados orientado a documentos de plataforma cruzada.
Os usuários podem se cadastrar no sistema. Um e-mail de verificação será enviado para o e-mail do passageiro. ele precisa confirmá-lo antes de fazer login no sistema. Após o cadastro, o passageiro pode efetuar login no sistema utilizando e-mail e senha, caso contrário poderá utilizar o login social. O administrador também pode fazer login no sistema usando o mesmo login, inserindo o e-mail e a senha fornecidos pelo administrador principal.
Assim que o administrador principal criar um administrador, o administrador criado receberá um e-mail de confirmação e para os passageiros também, uma vez registrados, receberão um e-mail de verificação para ativar sua conta.
Usando seu perfil, eles podem visualizar seu histórico de reservas. Tanto usuários registrados quanto usuários não registrados podem visualizar o custo das reservas. mas apenas usuários logados podem confirmar a reserva. Assim que a reserva for confirmada, o usuário receberá um e-mail que inclui os detalhes da reserva e o código QR exclusivo para essa reserva. O usuário pode escanear o código QR na estação de trem e adquirir a passagem. Ao entrar no trem, eles precisam escanear o código QR e, no final da viagem, precisam escanear o código QR novamente para verificar a estação de destino e a estação de partida. Se o código QR e as estações de partida reais não corresponderem, o passageiro terá que pagar um valor extra.
Também implementamos um painel de administração para gerenciar rotas de trem, detalhes de estações de trem, detalhes de trens e usuários. Para os administradores ferroviários, eles podem gerar relatórios financeiros mensais e anuais filtrados por trem.
Este aplicativo segue a arquitetura Model-View-Controller (MVC). A visualização é implementada usando ReactJS, que usa um padrão de visualização composto. O controlador e o modelo são implementados usando Node.js, o banco de dados MongoDB NoSQL está conectado ao back-end. O front-end e o back-end se comunicam por meio de chamadas da API REST.
Como uma melhoria no documento de especificação, adicionamos uma função de inscrição social usando a API do Google. Conforme especificado no documento de especificação, os usuários precisam fornecer seus detalhes ao nosso sistema usando a interface do usuário. Além disso, em nosso sistema estamos atualmente validando o endereço de e-mail do passageiro para que um e-mail seja enviado para o e-mail do passageiro. O passageiro precisa confirmar primeiro. Isso é trabalho extra para os passageiros. Portanto, reduzimos essa tarefa extra adicionando um login social. Por isso, os usuários não precisam inserir manualmente seu e-mail, nome, sobrenome, etc. Eles podem fazer login facilmente por meio de suas contas do Google.
Nesta aplicação os utilizadores podem fornecer os dados da reserva e verificar a disponibilidade atual de lugares e efetuar a reserva. Nosso aplicativo rastreia as reservas feitas anteriormente e exibe os assentos reais disponíveis no momento em que o usuário vai fazer a reserva. Ao fazer a reserva, o usuário precisa adicionar os locais de partida e destino, trem, classe, horário, quantidade de passagens e data da reserva. Uma vez inseridos os dados, o aplicativo obtém as reservas anteriores para o mesmo horário e data do trem e subtrai pelo número de assentos que o trem possui.
Mesmo que o usuário não tenha uma conta criada para o aplicativo, ele poderá visualizar a disponibilidade de vagas. Assim que o usuário precisar fazer a reserva, ele precisará ter uma conta.
Assim que o usuário fizer uma reserva, o aplicativo irá gerar um código QR para rastrear a reserva. Em seguida, será enviado um e-mail para o e-mail do usuário junto com os dados da reserva e o código QR gerado, que será utilizado para imprimir a passagem na estação ferroviária. Além disso, o sistema enviará uma mensagem de texto para o número de celular cadastrado do usuário com os dados da reserva.
Este é um novo recurso que introduzimos no aplicativo. Caso o usuário seja funcionário público, poderá ter descontos especiais. Depois que o usuário fornece seu NIC ao se registrar, esse NIC é validado usando o serviço web do governo para garantir que o usuário seja elegível para descontos. Caso o usuário tenha direito a descontos, este será adicionado à reserva.
Na especificação deste aplicativo não há forma de pagamento direto. De acordo com a especificação o usuário deverá recarregar sua conta e posteriormente pagar a taxa de reserva. Isso inclui interação adicional do usuário e a facilidade de uso do aplicativo diminuirá.
Portanto, adicionamos o método de pagamento direto e a opção de pagamento em dinheiro. O usuário pode selecionar qualquer opção ao fazer uma reserva. Se o usuário selecionar o cartão, ele precisará adicionar detalhes válidos do cartão. Ou os usuários podem selecionar pagar em dinheiro e pagar na estação ferroviária.
Como uma melhoria na especificação, na seção de gerenciamento de usuários, há uma lista de usuários, os administradores podem desabilitar um usuário específico dessa lista. Após desabilitar o usuário não poderá acessar a conta usando suas credenciais. Uma mensagem de erro será exibida ao usuário. Adicionamos esse recurso porque, se algum passageiro se comportar mal de alguma forma, deverá haver uma maneira de desabilitar esse usuário do sistema. Na especificação, não havia como desabilitar um usuário.
Como outra melhoria nas especificações, os administradores podem editar a conta do passageiro. como seu e-mail. Na visualização do usuário, os usuários não podem alterar seus endereços de e-mail. entretanto, se a solicitação especial vier do passageiro, os administradores poderão atualizar o endereço de e-mail específico do passageiro e outros detalhes.
No design original não há função para um gerente adicionar ou excluir outro gerente do sistema. Portanto, se o número de gestores aumentar ou diminuir dentro da empresa não haverá como adicionar um novo gestor ou remover um gestor existente do sistema.
Assim, como uma melhoria na especificação, uma nova função foi adicionada ao painel de administração que permite a um administrador adicionar ou remover outro administrador do sistema. Assim, quando um administrador for adicionado recentemente ao sistema, ele receberá um e-mail no respectivo e-mail fornecido quando um administrador for registrado informando que ele foi adicionado como administrador ao sistema e que deve fazer o login ao sistema usando seu número NC. Após o registro, é possível alterar a senha usando as configurações da conta no painel de administração.
No projeto original eles mencionam que a administração do transporte ferroviário deve ser capaz de planejar horários, por isso fornecemos a eles uma interface para gerenciar diferentes rotas usando um nome de rota exclusivo e atribuir as estações que devem ser incluídas nessa rota com feiras relevantes. A seguir estão as funcionalidades disponíveis no gerenciamento de rotas para administração do transporte ferroviário.
No projeto original eles não mencionaram que a administração do transporte ferroviário deveria gerenciar os trens através do sistema, mas como um recurso adicional, também criamos uma interface para gerenciar os trens usando um nome exclusivo do trem e atribuir os assentos nas diferentes classes desse trem e atribuir a rota em que o trem irá operar. A seguir estão as funcionalidades disponíveis no Gerenciamento de Trem para administração do transporte ferroviário.
Figura_9: criar tremNo projeto original, eles mencionaram que a administração do transporte ferroviário deveria ser capaz de gerar relatórios processando detalhes de reservas. Por isso, adicionamos um recurso para gerar relatórios mensais e anuais das receitas geradas por cada trem. Depois disso, implementamos duas visualizações como Gráfico de Pizza e Gráfico de Barras para visualização de relatórios. A seguir estão as funcionalidades disponíveis no Gerenciamento de Relatórios para administração do transporte ferroviário.
Se você estiver recebendo um erro como o abaixo, não é culpa dos serviços de back-end. Isso ocorre porque alguns aplicativos de proteção contra vírus bloqueiam o serviço de e-mail “nodemailer”.
{ Error: self signed certificate in certificate chain
at TLSSocket . < anonymous > ( _tls_wrap . js : 1105 : 38 )
at emitNone ( events . js : 106 : 13 )
at TLSSocket . emit ( events . js : 208 : 7 )
at TLSSocket . _finishInit ( _tls_wrap . js : 639 : 8 )
at TLSWrap . ssl . onhandshakedone ( _tls_wrap . js : 469 : 38 ) code: 'ESOCKET' ,
command : 'CONN' }
Este é um problema comum com o antivírus Avast; esse problema não ocorrerá no ESET e no Kaspersky.
Também perguntei o problema em https://stackoverflow.com. Eles também sugerem desativar a proteção contra vírus ao executar os serviços de back-end.
Se você estiver recebendo algum erro como este, desative a proteção contra vírus e tente novamente. De qualquer forma, o processo de reserva não será abortado mesmo que ocorra o erro.
Se você estiver recebendo um erro como o abaixo, isso ocorre porque estou usando a avaliação gratuita do Twilio e o número do celular inserido deve ser validado por meio do painel do Twilio antes de enviar mensagens para esse número. Se você pagou uma conta Twilio, adicione os detalhes da conta no arquivo “config.json” de back-end.
{ [Error: The number +94777123456 is unverified . Trial accounts cannot send messages to unverified numbers ; verify + 94777123456 at twilio . com / user / account / phonenumbers / verified , or purchase a Twilio number to send messages to unverified numbers .]
status : 400 ,
message : 'The number +94777123456 is unverified. Trial accounts cannot send messages to unverified numbers; verify +94777123456 at twilio.com/user/account/phonenumbers/verified, or purchase a Twilio number to send messages to unverified numbers.' ,
code : 21608 ,
moreInfo : 'https: //www.twilio.com/docs/errors/21608',
detail: undefined }
No momento implementamos a solução para Ferrovias, mas estamos planejando expandir esta solução para que esteja disponível para uso também em Ônibus.
Temos a ideia de implementar um sistema de rastreamento ao vivo para Ferrovias e Ônibus para que os Passageiros possam saber a hora exata em que os Ônibus e os trens chegarão à estação, o que economizará tempo dos passageiros.
No momento, a solução de recarga de dinheiro mencionada nas especificações não é prática de implementar.
(C) Tenusha Guruge 2019
tenusha.wordpress.com