Acredito que já tenha ouvido o termo protótipo ou prototipação em algum momento, certo?
Hoje, este será nosso tema. Minha intenção neste artigo é mostrar algumas técnicas que utilizo para prototipar ou para tirar aquela ideia da cabeça. Com certeza já existiram momentos onde você teve uma grande ideia, mas não sabia se conseguiria concluir, ou ver de forma funcional aquela ideia, muitas vezes isso é o que nós leva a desistir de uma ideia que realmente poderia ser sensacional e causar grande impacto no mercado.
Confesso que eu mesmo já tive grandes ideias que, devido ao tempo curto, me levava a nem ao menos tentar fazer um protótipo, pensar em qual tecnologia usar, qual back-end aderir, qual regra de negócio é o certo, já geravam problemas com ansiedade e acabavam me desanimando de tentar desenvolver aquele produto.
Para evitar isso e tornar qualquer ideia simples de ver em funcionamento, pesquisei sobre metodologias para ver minha ideia funcionando de forma que não precisasse pensar tanto de começo e já conseguir ter algo visual. Pensando nisso, resolvi escrever esse artigo para ajudar a transformar as ideias de vocês em algo palpável e simples de ter uma visualização da ideia.
Requisitos mínimos para começar com sua prototipação
Para prosseguirmos será necessário conhecer ou ter algumas ferramentas para acompanhar o artigo:
NodeJS instalado;
Expo Cli instalado;
Ngrok;
UI: o que é ?
UI significa ‘user interface’ (interface de usuário). Isso é a primeira visão da nossa ideia, é nela que vamos decidir onde ficará cada botão, como deve ser cada tela ou quais informações devem existir. A UI é algo muito importante para aplicação parecer moderna e chamativa. Isso faz com que o usuário se sinta à vontade com nosso projeto, porém, devemos tomar cuidado pois não adianta a ferramenta ser maravilhosa e não funcionar corretamente. Então, temos sempre que estar alinhados tanto com a interface quando a funcionalidade. Outra coisa que devemos saber é que dentro da prototipagem a UI nem sempre significa um layout bonito, já que muitas das vezes ela será apenas um esboço, uma ‘wireframe’. Isso é apenas para tirarmos nossa ideia da cabeça e passarmos para o papel, dessa forma temos algo visual sobre o que desejamos realizar.
Agora que já vimos o conceito de prototipação e o UI, existe mais um conceito que não utilizaremos para esse protótipo, porém, vamos tocar um pouco no assunto. Além da UI precisamos conhecer o UX (User Experience = Experiência do usuário). Ao contrário de interface, a UX se responsabiliza por dar a melhor experiência para o usuário, aonde cada botão ou cada conceito deve ser aplicado, entretanto, neste momento não falaremos sobre isso.
DICA: Para criar suas interfaces existem ótimas ferramentas. As que mais utilizo são: Figma (Neste é possível até montar um link dos botões para que cada botão direciona para uma tela e assim ter uma espécie de slide com o protótipo do produto) e o draw.io (Ótimo para desenhar esboços). Outro tipo de ferramenta interessante são as ferramentas de mind map para construir um mapa mental de todas características do produto para desenha.
Como simular uma API?
Para testarmos uma ideia, precisamos ter uma API para consumir no nosso protótipo e ter uma noção de como cada peça do nosso protótipo deve ser encaixado. Devido ao fato de criar uma API consumir um tempo maior, eu costumo utilizar de alguns macetes para testar minhas ideias sem ter que me esforçar com lógica, apenas para “mockar” os dados e ver como ficaria no meu produto, com isto comecei a utilizar uma maravilhosa ferramenta chamada json-server. Essa módulo node é capaz de converter um simples arquivo json em uma api que segue os padrões de uma api REST, utilizando POST, PUT, DELETE, GET e até mesmo utilizar filtros sem colocar um único dedo no back-end.
Vamos ver como criar um “back-end” para testarmos nossa ideia:
O primeiro passo é criar uma pasta para nosso back-end e executar o comando para iniciar um diretório do node
Assim que o processo for concluído iremos fazer algumas mudanças no package.json:
Agora que já configuramos o package.json e criamos o arquivo db.json podemos executar o comando npm start
A Partir deste momento foi criado rotas baseados no json, sendo capaz de excluir, consultar, listar, atualizar ou criar registros através de requisições.
OBS: Nesse passo teremos que usar o ngrok, pois como o react-native exige uma requisição segura, utilizaremos o ngrok para interceptar a api e transforma-la em https, é bem simples de usar, basta instalar o ngrok e utilizar o comando ‘ngrok http porta-da-api’.
Exemplo:
ngrok http 3333
Ele te devolverá um link https para sua api.
Agora podemos partir para o aplicativo!
Construindo o Aplicativo
Utilizaremos o expo com bare-overflow para construir o aplicativo, se quiser pode usar o managed sem problema, pode ocorrer apenas algumas diferença ao usar alguns módulos, por isso recomendo seguir este tutorial com bare-overflow
Caso não tenha o expo-cli basta executar o seguinte comando:
npm install expo-cli --global
Para criar o app precisamos gerar um comando com expo:
Após esse comando teremos o projeto criado pronto para desenvolver!
A estrutura que utilizaremos nesse projeto é a seguinte:
assets: Utilizado para guardar arquivos estáticos, como imagens
imgs: Onde guardaremos as imagens utilizadas no app
components: Onde armazenaremos todos nossos componentes
hooks: hooks personalizados que podemos vir a criar
pages: armazenamento das telas do app
service: guardaremos nossas configurações de axios para cada microservice que utilizarmos
system: arquivos genéricos para o sistema, como enumeradores, helpers
ui: onde vamos armazenar todo styled dos nossos componentes
Agora que já entendemos como vai funcionar nossas pastas e a arquitetura geral, vamos para nossos primeiros códigos!
OBS: Adicione para a pasta src/assets/imgs uma imagem .png
Vamos começar criando um helper que nos ajudará a mascarar o valor numérico para monetário:
Com isso, toda variável do tipo number poderá ser convertida em uma string monetária no formato que decidir, conforme os parâmetros.
Com esse primeiro helper feito, podemos adicionar no nosso arquivo index.js
index.js:
import { registerRootComponent } from 'expo';
import './src/system/helper';
import App from './App';
// registerRootComponent calls AppRegistry.registerComponent('main', () => App);
// It also ensures that whether you load the app in the Expo client or in a native build,
// the environment is set up appropriately
registerRootComponent(App);
Agora vamos criar um arquivo para armazenar nossa paleta de cores!
Agora que criamos todos nossos arquivos e toda estrutura necessária para nosso app, iremos importar alguns módulos, adicionar as rotas e nossa primeira tela.
Isso irá instalar toda parte de navigation no seu projeto. Após isso, vamos partir para o resto do desenvolvimento. Criaremos o arquivo de rota e a primeira página
src/system/routes.js
import React from 'react'
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import Dashboard from '../pages/Dashboard';
import Header from '../components/Header';
import colors from './colors';
const Stack = createStackNavigator();
let navigationOptionDefault = {
headerShown: true,
header: () => <Header/>,
headerMode: 'screen',
cardStyle: { backgroundColor: colors.CLOUDS },
}
export default function Routes(){
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Dashboard" component={Dashboard} options={navigationOptionDefault}/>
</Stack.Navigator>
</NavigationContainer>
)
}
src/pages/Dashboard.js
import React from 'react';
import * as UI from '../ui/Dashboard.ui'
import Wallets from '../components/Wallets';
import Transactions from '../components/Transactions';
import colors from '../system/colors';
export default function Dashboard(){
return (
<UI.Container>
<UI.Title>Minhas Carteiras</UI.Title>
<Wallets/>
clique para executar no android, se o emulador estiver ligado ele vai compilar e exibir, ou você também pode baixar o expo para seu celular e fazer a leitura do código de barra que o metrô gera!
Por hoje é isso pessoal. Espero que minhas dicas ajudem bastante na sua jornada como dev na difícil etapa de tirar a ideia da mente e tornar em algo funcional!
Repositório do projeto: https://github.com/aylonMuramatsu/artigo-ui
No atual cenário de desenvolvimento de software, a pressão por eficiência e velocidade de entrega nunca foi tão intensa. Empresas de todos os tamanhos estão buscando maneiras de acelerar o
Quando falamos em gestão de um time de engenharia de software, os principais desafios que vem à cabeça são como estimar as atividades, e como lidar com as expectativas dos
Se você trabalha na área de engenharia de software, e se interessa por gestão de projetos, com certeza já deve ter ouvido falar na metodologia Shape-up ou no produto desenvolvido