Arquitetura BotFlow - lappis-unb/rasa-nlu-trainer GitHub Wiki

Arquitetura geral da plataforma BotFlow desenvolvido pelo Laboratório é mostrado na figura abaixo. Desenvolvido com a Licença AGPL3.

Diagrama BotFlow

Client-Side: JavaScript utilizando o Framework React.JS

Server-Side: NodeJs(JavaScript)

Banco de Dados: MongoDB

Tecnologias

Tecnologias utilizadas para implementação:

Docker: Ferramenta para gerar um ambiente isolado e construído especificamente para a equipe que será utilizado para facilitar o desenvolvimento do projeto.

Rect.JS: Biblioteca JavaScript do Facebook para construir interfaces de usuário.

NodeJs: Interpretador com código aberto, de código JavaScript de modo assíncrono e orientado a eventos, focado em migrar a programação do Javascript do lado do cliente para os servidores

Git: Ferramenta de versionamento que será usada em conjunto com o GitHub para salvar os dados do decorrer do projeto, possibilitando a hospedagem e a geração de backups do mesmo.


Estrutura BotFlow

Repositório dedicado ao desenvolvimento do FrontEnd da Plataforma em React.Js

Estrutura de Pastas BotFlow

Components:

Pasta no qual esta localizado os arquivos referentes a criação de componentes, no qual criamos e separamos os components por módulo/funcionalidade. A nomeação do componente se dá a partir do nomeação dada a classe responsável por definir o componente.

  • Componentes são como funções JavaScript que aceitam entradas arbitrárias (chamadas “props”) e retornam elementos que descrevem o que deve aparecer na tela.

  • Props: Objeto do Componente a ser renderizado.

Pages:

Services:

Pasta no qual contém os arquivos responsáveis pela configuração da API

State:

Pasta responsável pelo gerenciamento de arquivos que apresentão o conceito de estado e ciclo de vida de um componente React. Nesta pasta estão presentes os arquivos de:

  • action.js: Responsável pela ações a serem realizadas na aplicação ou seja por solicitar algo para um reducer. Devem ser funções puras(apenas enviar dados ao reducer). Neste arquivo são criadas as funções referentes as ações a serem exercidas na plataforma como: (Criar, editar, deletar...)

  • reducer.js: Arquivo encarregado de lidar com todas as ações como por exemplo quando um componente solicita alteração de algum dado da store.

  • store.js: Arquivo responsaǘel pelo conjunto de estados da aplicação ou seja o centro de informações no qual possui disponibilidade para receber e entregar exatamente o que o componente requisita. Store é um objeto que possui todos os estados do componente.

Arquivos BotFlow

  • App.js: Arquivo responsável pela renderização da página HTML. Neste Arquivo é importado o arquivo de rotas e de estilo da página.

  • index.js: Arquivo no qual é chamado a biblioteca ReactDom responsável pela implementação do VirtualDom

  • index.css: Arquivo css responsável por carregar os estilos dos componentes

  • routes.js: Arquivo responsável pela criação do componente que será responsável por chamar a tela que será renderizada ou seja responsável pela navegação nas telas da plataforma.


Estrutura BotFlow - API

Repositório dedicado ao desenvolvimento do Backend da Plataforma por meio da implementação da API NodeJs e do banco de dados MongoDB

Estrutura de Pastas BotFlow - API

Server

Pasta responsável pela subdivisão de pastas referentes a configuração e criação de endpoints na API assim como configurações do banco de dados da plataforma.

  • Config: Sub-pasta responsável pelos arquivos de gerenciamento do banco de dados e login

  • Controllers: Sub-pasta de arquivos referente a criação assincronas das funções referentes aos endpoints da API.

  • Models: Sub-pasta de arquivos referentes a criação do modelo de comunicação da API NodeJs com o banco de dados MongoDB por meio da biblioteca 'mongoose'.

  • Private: Sub-pasta referente ao gerenciamento de chaves para autenticação de login dentro do projeto

  • Routes: Sub-pasta de arquivos referente a documentação dos endpoints da API

Arquivos BotFlow - API

  • app.js: Arquivo responsável por receber e enviar as requisições da API.