Home | Sprints | Requisitos | EAP | Arquitetura | Configuração | Endpoints | Mockups | Problemas |
---|
Tecnologias utilizadas no projeto
React Native
React é um framework JavaScript criado pelo Facebook para facilitar a construção de interfaces de usuário. React Native, da mesma empresa, nos permite criar aplicações mobile nativas utilizando JavaScript, na lógica, e React, para estruturar as views.
O stack do React Native é poderoso, pois nos permite utilizar ECMAScript 6, CSS Flexbox, JSX, diversos pacotes do NPM e muito mais. Sem contar que nos permite fazer debug na mesma IDE utilizada para o desenvolvimento nativo com essas plataformas (além de tornar o processo extremamente divertido).
O nome React Native pode trazer a ideia de que o código escrito no framework é convertido para a linguagem nativa do dispositivo, no caso do Android para a linguagem Java, por exemplo. Contudo, o que ocorre na verdade, na maior parte das plataformas, é um processo em que o JavaScript é executado em uma VM (máquina virtual) capaz de fazer e receber chamadas do hardware e dos módulos nativos do dispositivo.
O React traz um conceito de componentes, que possibilita modularizar a interface, criando comportamentos e atributos próprios para cada elemento (como um botão) de acordo com a plataforma utilizada e de acordo com a necessidade do software.
O React Native é usado por grandes empresas. Dentre as que mais se destacam estão o próprio Facebook, além do Instagram, Microsoft, Uber, Walmart e Airbnb. Isso mostra a confiabilidade da plataforma, impulsionando cada vez mais a sua adoção.
Um conceito que move o React Native é “learn once, write anywhere” porque quando um programador aprende a trabalhar com a versão web do framework (React), por exemplo, ele está apto a trabalhar com qualquer outra versão. Afinal de contas, os conceitos são sempre os mesmos, pois o que muda é o contexto em que se está trabalhando. No React Native, por exemplo, usamos uma View ou Text, enquanto no React (web) usaria uma div ou p, respectivamente.
Fontes: https://tableless.com.br/react-native-construa-aplicacoes-moveis-nativas-com-javascript/
https://www.devmedia.com.br/exemplo/como-comecar-com-react-native/52
Mongoose
Mongoose é uma biblioteca do Nodejs que proporciona uma solução baseada em esquemas para modelar os dados da sua aplicação. Ele possui sistema de conversão de tipos, validação, criação de consultas e hooks para lógica de negócios. Mongoose fornece um mapeamento de objetos do MongoDB similar ao ORM (Object Relational Mapping), ou ODM (Object Data Mapping) no caso do Mongoose. Isso significa que o Mongoose traduz os dados do banco de dados para objetos JavaScript para que possam ser utilizados por sua aplicação.
Fonte: http://nodebr.com/nodejs-e-mongodb-introducao-ao-mongoose/
Travis CI
O Travis CI é um serviço web de Integração Contínua na nuvem integrado com o GitHub. Ele é gratuito para repositórios públicos(travis-ci.org) e pago para repositórios privados(travis-ci.com). Foi desenvolvido em Ruby e seus componentes são distribuídos sob a licença MIT.
Atualmente ele tem suporte para as seguintes linguagens de programação: Android, C, C#, C++, Clojure, Crystal, D, Dart, Erlang, Elixir, F#, GO, Groovy, Haskell, Haxe, Java, Javascript, Julia, Objctive-C, Perl, Perl6, PHP, Python, R, Ruby, Rust, Scala, Smalltalk, Visual Basic.
Referência: https://pt.wikiversity.org/wiki/Travis_CI_-_GitHub
Heroku
Heroku é uma plataforma em nuvem baseada em sistemas de containers gerenciados, chamados de Dynos, possuidores de um ambiente de software plugável e configurável, preparados para rodar e depurar sistemas web em um número limitado de linguagens de programação. Uma característica atrativa dessa tecnologia é a facilidade de realizar deploy de sistemas, uma vez que o ambiente é preparado para as diversas linguagens suportadas. Por outro lado, a liberdade de configuração desses ambientes é limitada.
Estrutura do Heroku
Deploy
Em um primeiro nível o Heroku trabalha com a geração de build via command-line, Github ou integração continua. Para o Github é necessário dizer o repositório oficial e a branch o qual se deseja usar para o deploy, assim sempre que um push for realizado o heroku realizará deploy automaticamente.
Services
O Heroku conta por padrão com o postgres como sistema de banco de dados, e redis para servidor de estrutura de dados, gerenciando o armazenamento em memória dos Dynos. Esses dois serviços são open-source e tal como várias ferramentas web que o sistema possa demandar, podem ser substituídos ou adicionados via plugins. Dentre esses podemos encontrar pacotes de diversas licenças, alguns precisam de cadastro de cartão de crédito para serem utilizados, mesmo que sem taxa de pagamento necessariamente. Para ver todos os add-ons(plugins) disponíveis, acesse o link https://elements.heroku.com/addons.
Dynos
O componente central do Heroku é o Dyno. Um Dyno é um leve Linux container que executa um único comando especificado pelo usuário. Para ter a ideia básica do que é um Dyno, é suficiente que se imagine um ambiente virtualizado de configurações limitadas e intermediadas por agentes e configurações do Heroku. Os recursos também são limitados de acordo com um plano, onde a configuração mínima é o plano Free. Os Dynos podem ser dividos em três configurações: Web Dynos, Worker Dynos e One-off Dynos, cada um trabalha com diferentes responsabilidades em um aplicativo, podendo ser utilizados vários Dynos desse tipo, tal que o sistema ou a configuração demande e o plano seja suficiente. Existem muitas vantagens em se trabalhar na forma como o Heroku opera, como escalabilidade e segurança.
Referência: https://pt.wikiversity.org/wiki/Heroku
mLab
Conhecido um tempo atrás como MongoLab, o mLab é um serviço de banco de dados gerenciável que hospeda na nuvem um banco de dados MongoDB (SGBD do tipo NoSQL) e é executado em provedores como a Amazon Web Services (AWS), Google Cloud e Microsoft Azure. A parte mais interessante é que o serviço tem um plano gratuito que oferece 0,5gb para armazenamento de dados.9".
Referẽncia: https://medium.com/code-prestige/mlab-seu-banco-mongodb-gratuito-hospedado-na-nuvem-a60898de221b
Google Firebase
O serviço em nuvem para desenvolvedores móveis é um back-end completo para aplicações mobile (Android e iOS) e aplicações web. Com visual limpo e de uso simples, o Firebase é uma plataforma dedicada e SDK para a construção de aplicativos. Atualmente, o serviço suporta desenvolvimento nas linguagens de programação C++, Java, Javascript, Node.js, Objective-C e Swift. Algumas funcionalidades do Firebase:
AdMob – integração com o Google AdMob;
AdWords – integração com o Google AdWords;
Analytics – um painel para monitorar o comportamento dos usuários da aplicação, segmentação demográfica e desempenho de campanha;
Autenticação– suporte para autenticação de usuários via e-mail, Facebook, GitHub, Google Sign-In e Twitter;
Relatório de Erros – monitora os erros da aplicação em todos os dispositivos e é integrado com o Analytics para analisar o comportamento dos usuários após falhas;
Database – um banco de dados NoSQL utilizado para armazenar dados JSON;
Dynamic Links – deep links para possibilitar que o usuário acesse páginas internas da aplicação;
Hosting – uma CDN (Content Delivery Network) distribuída globalmente para servir aplicações web;
Indexing – utilizado para indexar as aplicações na busca do Google (Google Search);
Invites – possibilita a troca de informações sobre uma aplicação entre usuários;
Messaging – o antigo Google Cloud Messaging (GCM) é o novo Firebase Cloud Messaging (FCM);
Notifications – gerenciamento de notificações enviadas para o seu usuário;
Offline – possibilita a armazenagem de dados na memória cache local, permitindo assim o funcionamento da aplicação em estado offline;
Real time – os dados são armazenados em tempo real no banco de dados;
Referência: https://blog.mastertech.com.br/tecnologia/google-firebase-for-dummies-o-que-e-e-como-funciona-plataforma/
MVC
Model-view-controller (MVC), em português modelo-vista-controlador, é um padrão de arquitetura de software (não confundir com um design pattern) que separa a representação da informação da interação do usuário com ele.
É normalmente usado para o desenvolvimento de interfaces de usuário que divide uma aplicação em três partes interconectadas. Isto é feito para separar representações de informação internas dos modos como a informação é apresentada para e aceita pelo usuário. O padrão de projeto MVC separa estes componentes maiores possibilitando a reutilização de código e desenvolvimento paralelo de maneira eficiente.
O modelo (model) consiste nos dados da aplicação, regras de negócios, lógica e funções. Uma visão (view) pode ser qualquer saída de representação dos dados, como uma tabela ou um diagrama. É possível ter várias visões do mesmo dado, como um gráfico de barras para gerenciamento e uma visão tabular para contadores. O controlador (controller) faz a mediação da entrada, convertendo-a em comandos para o modelo ou visão. As ideias centrais por trás do MVC são a reusabilidade de código e separação de conceitos.
Tradicionalmente usado para interfaces gráficas de usuário (GUIs), esta arquitetura tornou-se popular para projetar aplicações web e até mesmo para aplicações móveis, para desktop e para outros clientes.Linguagens de programação populares como Java, C#, Ruby, PHP e outras possuem frameworks MVC populares que são atualmente usados no desenvolvimentos de aplicações web.
Referência: https://pt.wikipedia.org/wiki/MVC