Estrutura
Utilizamos a arquitetura MVC (Model-View-Controller) para organizar a interação entre três repositórios distintos. Em uma escala maior, podemos considerar que cada repositório age como uma parte do modelo:
EasyChooseStore (View)
Repositório contendo o fluxo do questionário, listagem e busca de suplementos recomendados para clientes que utilizem o aplicativo, acessível a a partir de um código cadastrado e vinculado à máquina de um lojista.
EasyChooseAdmin (Controller)
Ambiente administrativo que possibilita cadastro e monitoramento de lojistas para configurarem a plataforma mencionada acima.
EasyChooseApi (Model)
Backend que une a plataforma administradora e a plataforma do questionário, havendo a imagem do banco com todas as informações dos suplementos registrados.
Integração
Fluxo de Dados: O usuário interage com a interface no EasyChooseStore. Suas ações são capturadas e enviadas ao EasyChooseAdmin, que processa as entradas e interage com o EasyChooseApi para obter ou atualizar os dados necessários.
Cadastro e Monitoramento: Os administradores utilizam o EasyChooseAdmin para gerenciar usuários. As ações administrativas, como cadastros e monitoramentos, são processadas pelo Controller, que então interage com o Model para armazenar ou recuperar informações do banco de dados.
Recomendações Personalizadas: Quando um usuário completa o questionário, o Controller solicita ao Model os suplementos recomendados com base nas respostas fornecidas. Esses dados são então apresentados ao usuário pela View (EasyChooseStore).
Tecnologias
React
React é uma biblioteca JavaScript amplamente utilizada para a construção de interfaces de usuário (UIs). Sua principal vantagem reside na componentização, permitindo a criação de componentes independentes e reutilizáveis. Isso facilita a manutenção e a escalabilidade do aplicativo, pois cada componente pode ser desenvolvido, testado e depurado de forma isolada. Além disso, React utiliza o Virtual DOM, uma representação virtual do DOM real, que otimiza as atualizações da interface. Em vez de re-renderizar a página inteira quando há uma mudança, React apenas atualiza os componentes que realmente mudaram, resultando em um desempenho mais eficiente. A vasta comunidade de desenvolvedores que contribui para React proporciona um ecossistema rico de bibliotecas e ferramentas, como Redux para gerenciamento de estado e React Router para navegação, o que acelera o desenvolvimento e permite a implementação de funcionalidades avançadas com menos esforço.
TypeScript
TypeScript é uma extensão do JavaScript que adiciona tipagem estática ao código, proporcionando uma camada adicional de segurança. Com TypeScript, os desenvolvedores podem detectar erros em tempo de compilação, em vez de em tempo de execução, reduzindo assim bugs e melhorando a qualidade do código. A tipagem estática também torna o código mais previsível e fácil de entender, facilitando a colaboração entre desenvolvedores e a manutenção a longo prazo. Além disso, TypeScript oferece suporte a funcionalidades modernas do JavaScript e possui uma excelente integração com editores de código como Visual Studio Code, oferecendo uma experiência de desenvolvimento mais rica com autocompletar, refatoração e verificação de tipos em tempo real.
NodeJS
Node.js é uma plataforma baseada no motor V8 do Chrome que permite a execução de JavaScript no lado do servidor. Sua principal vantagem é a capacidade de lidar com operações de I/O de forma não bloqueante, o que a torna ideal para aplicativos de rede em tempo real e de alto desempenho. No contexto de um aplicativo de seleção de suplementos, Node.js pode ser usado para gerenciar a lógica do servidor, processar as respostas do questionário e gerar recomendações em tempo real. Além disso, a utilização de JavaScript tanto no front-end quanto no back-end permite a criação de um stack de tecnologia unificado, facilitando a transferência de conhecimento entre diferentes partes do projeto e aumentando a eficiência do desenvolvimento.
PostgreSQL
PostgreSQL é um sistema de gerenciamento de banco de dados relacional (RDBMS) de código aberto conhecido por sua robustez e conformidade com os padrões SQL. Ele oferece uma ampla gama de funcionalidades avançadas, como suporte a tipos de dados avançados, integridade referencial, transações ACID e capacidade de lidar com grandes volumes de dados. Para um aplicativo que precisa armazenar informações dos usuários e suas respostas ao questionário, PostgreSQL proporciona uma solução confiável e eficiente. Sua capacidade de indexação e otimização de consultas garante que as respostas dos questionários possam ser processadas rapidamente para gerar recomendações personalizadas.
Prisma
Prisma é uma ferramenta de ORM (Object-Relational Mapping) moderna que facilita a interação com o banco de dados de forma segura e eficiente. Ele permite que os desenvolvedores definam modelos de dados em um esquema declarativo e gera automaticamente consultas SQL otimizadas. Prisma também oferece um tipo de segurança estrita, garantindo que apenas dados válidos sejam enviados para o banco de dados. Para o projeto de seleção de suplementos, Prisma simplifica o gerenciamento de dados, desde a definição dos esquemas de questionário até a persistência das respostas dos usuários, permitindo um desenvolvimento mais rápido e menos propenso a erros.