O projeto foi desenvolvido na trilha Impulse da oitava edição do evento Next Level Week proporcionado pela empresa Rocketseat. Baseou-se em um layout elaborado no Figma.
O sistema, desenvolvido em TypeScript, é composto de um servidor HTTP Node, um site em React e um aplicativo móvel em React Native.
A opção por essas ferramentas foi realizada pela Rocketseat por acreditarem formar um conjunto de tecnologias poderoso ao permitir desenvolver desde o Back-End até o aplicativo móvel em uma só linguagem: o JavaScript. A escolha por TypeScript, um superset do JavaScript, foi realizada por acreditar trazer um aumento de confiabilidade de código.
O Feedback Widget, também chamado de Feedget, é um sistema dedicado a armazenar e encaminhar relatórios de bugs detalhados pelos usuários.
A descrição do bug é feita em uma pequena janela que o próprio sistema oferece. Essa mesma janela também contém um botão que, quando acionado pelo usuário, fará com que o sistema realize uma captura da tela que o usuário está visualizando.
Após a submissão do relatório, o servidor HTTP do sistema realizará duas tarefas:
- persistir a descrição e a captura de tela no servidor para consultas futuras
- enviar as informações do relatório de bug para um endereço de e-mail de suporte a usuários
Esse fluxo de trabalho acontece tanto na aplicação Web quanto na aplicação Mobile.
Acredito que a ideia original formulada pela Rocketseat era que esse sistema pudesse ser acoplado a outros, mas essa capacidade de integração não foi desenvolvida durante o evento.
O sistema foi desenvolvido em TypeScript. É composto de 3 partes:
- Back-End
- Front-End Web
- Front-End Mobile
Alguns pontos a destacar:
- Uma captura de tela é obtida pelo próprio sistema quando o usuário aciona o botão dedicado a essa tarefa. Nas aplicações Web e Mobile isso é realizado, respectivamente, por meio das bibliotecas html2canvas e react-native-view-shot.
- O envio de e-mail com relatório de bug usa Nodemailer e Gmail.
Passos para atingir isso podem ser conferidos neste arquivo.
Este projeto está sob a licença MIT. Para maiores detalhes acesse o arquivo de licença.