Construindo um App Web Mobile com um pé na Web3

Construindo um App Web Mobile com um pé na Web3

No início da vida profissional em tecnologia, é muito difícil refletir sobre como melhor nos posicionarmos para termos um bom futuro na área. Costumamos ter o sentimento de um futuro garantido quando, na realidade, as coisas normalmente não acontecem bem da forma como visualizamos. Seguimos sempre em frente até o momento em que esse ritmo venha a cobrar seu preço. Principalmente quanto à nossa saúde.

Após também ter feito parte dessa incessante jornada, acabei por ter que me afastar por algum tempo a fim de “repor as energias”. Após esse tempo afastado, foi natural minha desatualização quanto ao que rola atualmente no cenário de desenvolvimento.

Entry point

Agora, busco voltar a atuar na área. Mas… como recuperar a forma em um cenário cujas mudanças acontecem constantemente e com extrema velocidade? Antes de qualquer coisa, decidi buscar me atualizar. Mas, vejam bem, não é um mero update: terei que fazer um “baita dum” upgrade também.

Pensei, então, em criar um projeto para o desenvolvimento de um aplicativo que me ajudasse nesse upgrade. Um projeto que me permitisse ter contato com boa parte das novas tecnologias e das novas formas de usá-las no desenvolvimento de software.

Pensei também em realizar isso como um projeto de código aberto. Assim todos poderiam também participar ativamente na construção desse software. Com isso, imagino que esse processo se torne ainda mais estimulante, devido ao dinamismo existente.

#1. Agilizando!

O projeto consiste na construção de um Web e Mobile App (Android) para a visualização de NFTs existentes em uma blockchain (Ethereum).

A construção desse aplicativo fará uso de várias tecnologias e linguagens de programação, nos conduzindo entre vários segmentos da área de TI.

Muitas mudanças ocorreram na forma como desenvolvemos um software atualmente e essa mudança inicia-se já na fase de planejamento do software, onde definimos quais são os componentes a serem desenvolvidos, capazes de atender aos requisitos levantados.

Antes usávamos um conceito de modelo sequencial ou modelos de ciclos ao planejar o projeto de software. Atualmente utilizamos as várias metodologias Agile disponíveis no mercado.

Porque?

Bem, o modelo anterior poderia nos trazer uma série de problemas. Como por exemplo, a necessidade de constantes modificações no projeto, uma característica que o avanço tecnológico amplia cada vez mais. A metodologia Agile serve para resolver (ou pontuar corretamente) esses eventos.

#2. Definição do projeto

Vamos então ver como esse projeto será feito para termos uma ideia do que usaremos nesta série de artigos onde desenvolveremos todos os componentes do nosso software.

Abordaremos para o desenvolvimento do projeto os seguintes tópicos:

Construção de um aplicativo web

Iremos criar um aplicativo web a fim de vermos como nossos códigos que anteriormente construíamos usando HTML, CSS, Javascript e algumas APIs e frameworks, passaram a usar ferramentas poderosas como React, Node.js e recursos em Cloud Computing, como por exemplo o Firebase para bancos de dados.

Blockchains, NFTs, DAOs etc

As blockchains, por meio de produtos como as criptomoedas, os DAOs e NTFs, vêm formando um ecossistema tecnológico crescente e cada vez mais dominante nos trends das redes sociais no mundo inteiro. Logo, me parece sensato dar uma espiadinha em seu mecanismo. Desenvolveremos, então, uma interface em backend que nos permita acessar e ler os dados de um NFT em uma blockchain.

Dados e Python

O uso de dados tornou-se algo gigantesco e essencial para toda e qualquer empresa. Sendo assim, daremos também uma passada por essa área da tecnologia. Iremos construir um software na linguagem Python para realizar o tratamento dos dados de um NFT e gerar um gráfico para ser visualizado em nosso aplicativo web criado anteriormente.

Aplicativo Android

Para finalizar em grande estilo, criaremos um aplicativo Android para exibir todo nosso conteúdo gerado em celulares Android. Aqui, poderemos ver as diferenças na construção de um mobile app desenvolvido usando o Android Studio ou Flutter.

Em meio ao desenvolvimento disso tudo, creio que teremos várias situações, onde deveremos fazer alterações mesmo no início do projeto, mostrando a agilidade e a flexibilidade de uma metodologia Agile de desenvolvimento.

#3. Dando o pontapé inicial

Fita cassete preparada, vinyl separado… ups! Esqueci, Alexa! rsrs

Até pouco tempo atrás, nosso ecossistema de trabalho tinha uma estrutura de TI bem diferente do que vemos hoje em dia, com o uso do hardware e a produção de software totalmente localizados na própria empresa, fosse ela ou não da área de tecnologia.

Até o final dos anos 90 era comum, mesmo para pequenas empresas, ter um CPD (Centro de Processamento de Dados) em suas dependências. No CPD ficavam os hardwares e softwares usados pela empresa, como os servidores de aplicações, as bases de dados, servidores de impressão, etc além dos equipamentos usados pelos operadores e programadores - nem havia o termo desenvolvedores ainda! O padrão era que ficássemos isolados no CPD escrevendo um monte de códigos.

Assembly, C e Cobol eram os mais usados até começarmos a usar C++, Visual Basic e outras linguagens de alto nível e visuais que foram surgindo. Olhando para trás, parece que vivemos hoje em um mundo completamente diferente, e realmente é um mundo bem diferente mas que aconteceu num piscar de olhos.

Em nosso projeto iremos usar tecnologias e conceitos bem mais atuais, como Cloud Computing, Data Management, Blockchains, Low-code, Cross-Platform Development, etc.

#4. Controle de versão, repositórios etc…

Para iniciarmos o desenvolvimento tal qual planejamos, é necessário termos o conteúdo do projeto acessível a todos. Também é necessário que esse conteúdo possa ser gerenciado e compartilhado de uma maneira ágil, flexível e confiável. Para isso, usaremos a plataforma GitHub, da Microsoft.

O GitHub tornou-se a principal plataforma provedora de serviços para o desenvolvimento de software, permitindo a hospedagem e o gerenciamento dos arquivos de código-fonte e outros.

Para acessar o conteúdo no GitHub, usamos uma ferramenta de software chamada “controle de versão”. Um software de controle de versão ajuda a equipe de software com todo o gerenciamento do código compartilhado. O Git é o software de controle de versão mais comumente usado, principalmente, pelas comunidades de software livre e é também a ferramenta usada pelo GitHub.

Para usar o Github, é necessário criar uma conta. Podemos usar uma conta com o plano gratuito. É bem simples e rápido. Vamos, então, olhar o repositório que criei no Github. Aqui está o link para acessá-lo.

Em nosso repositório recém criado temos dois arquivos iniciais gerados automaticamente.

O arquivo LICENSE contém os termos de licença de uso dos arquivos e códigos do projeto contidos neste repositório. Usei a GNU General Public License v3.0 que dá total liberdade de uso do conteúdo deste repositório.

O arquivo README.md é um documento onde, usualmente, é descrita a visão geral do projeto e também os procedimentos para quem pretende usar o repositório em suas máquinas.

Precisamos agora instalar o software Git em nossas máquinas para acessar o repositório. Na página oficial do Git, vocês encontrarão o modo de instalação nos sistemas Linux, Windows e macOS. Também é gratuito.

Como uso Linux (distribuição Ubuntu 22.04 LTS), executei a linha de comando abaixo para instalar o Git em minha máquina:

$ sudo apt install Git

Após instalar o Git, temos que fazer uma pequena configuração inicial que irá dizer ao Git qual é o usuário que irá usá-lo. Fazemos isso usando o nome de usuário da conta que cada um criou no Github com o seu email:

$ git config --global user.name "nome do usuario"

$ git config --global user.email “emaildousuario@email.com”

Muito bem! Tudo pronto, vamos agora fazer o download do repositório para nossa máquina usando o comando clone do Git:

$ git clone https://github.com/Revelo-Community/rcn-appdemo.git

Pegamos o link a ser clonado na página do repositório (clique na palavra "Code" situada na parte superior direita da tela). Esse comando gera uma cópia do repositório em nossa máquina e cria os arquivos com as configurações necessárias para que possamos trabalhar com todos os arquivos gerenciados pelo Git.

#5. Conclusão

Esse é o primeiro artigo dessa série onde teremos uma grande variedade de tecnologias sendo usadas.

No próximo artigo, passaremos, de fato, a botar a mão na massa! Iremos construir um web app com tecnologias tanto de frontend como de backend, sempre buscando usar as ferramentas mais usadas hoje em dia no mercado de software.

A participação de todos no desenvolvimento é importante e bem legal, pois mesmo para aqueles já com boa experiência na área de desenvolvimento, sempre pode-se encontrar algo novo ou mesmo contribuir adicionando uma melhor forma na construção de alguma parte do projeto (serão dados os devidos créditos pela participação, claro).

Já para aqueles que estão iniciando na carreira de desenvolvedor, essa pode ser uma ótima oportunidade de saber como vários passos vão acontecendo durante todo o processo no desenvolvimento de um aplicativo como esse.

Nesse projeto, iremos do zero até sua publicação na web, na Play Store e, possivelmente na App Store! Com tudo isso, imagino que esse projeto possa até mesmo ganhar asas para além de sua finalidade inicial!

Vamos nessa?