Equipes de produto e tecnologia da Theia detalham os desafios, tecnologias e ferramentas utilizadas na criação de um aplicativo voltado à saúde da mulher
“Este artigo foi escrito por três autoras e autores, e todos nós integramos a equipe de tecnologia da Theia. Para quem ainda não conhece, a Theia nasceu com a missão de tentar revolucionar o cuidado com a saúde da mulher por meio da tecnologia. Por isso, o produto da startup foi pensado para oferecer uma experiência de saúde “fora da curva”.
Tendo a tecnologia como fator potencial de disrupção, a nossa equipe precisa pensar soluções que possam ser escaláveis, flexíveis e otimizadas para estruturação de dados. Ao mesmo tempo que buscamos esse objetivo, precisamos garantir a criação de um sistema que esteja sempre disponível e pronto para se conectar com todo o ecossistema de provedores de serviços de saúde.
Nas últimas semanas, foram dados passos importantes em direção a essa revolução com o lançamento do Theia App nas lojas Google Play e App Store, para que pudéssemos melhorar a experiência das nossas clientes e criar mais um ponto de contato, estendendo as funcionalidades que já temos atualmente na versão web.
Para não descrevermos somente o conceito e o produto, vamos contar um pouco dessa jornada tecnológica cheia de estímulos, insights e experiências. Primeiramente, definimos quatro desafios para, em seguida, pensarmos e aplicarmos um conjunto de ferramentas tecnológicas:
– Agilidade em testar novas funcionalidades: o primeiro obstáculo a ser superado foi o de validar uma solução de maneira rápida. A meta consistiu em provar a entrega de valor num curto período, tendo como foco o alcance de resultados para os clientes e para o negócio.
– Criar um produto flexível a mudanças: o segundo desafio foi o de criar um produto digital capaz de se adaptar com facilidade às melhorias constantes e novas versões.
– Experiência e engajamento de clientes: além de possibilitar o uso de ferramentas exclusivas para engajamento, como notificações, por exemplo, o app teria que garantir a melhor performance, acessibilidade e robustez de interface para os usuários.
– Posicionamento: tínhamos em mente que o mercado mobile segue em crescimento exponencial, e mais da metade da população mundial está engajada de alguma maneira nesse canal. Além disso, sabíamos que os apps costumam a ter uma taxa de conversão de até 300% a mais do que as versões web. Assim, orientamos nossa estratégia ao valor que nosso app poderia trazer para o crescimento da Theia.
Para cumprir esses desafios, nós decidimos apostar nossas fichas numa tecnologia que tem se tornado cada vez mais comum no mercado, o Flutter.
Sendo um kit de desenvolvimento de software (ou SDK do inglês Software Development Kit) para criação multiplataforma, o Flutter foi lançado pelo Google em 2017, tendo como uma de suas maiores vantagens a possibilidade de se criar aplicativos Android e iOS com um único código.
Diferentemente de ReactNative, e outras tecnologias de desenvolvimento híbrido, o Flutter não necessita da ponte com o nativo para construir seus componentes, sendo, assim, mais performático que as outras tecnologias.
Além disso, o Flutter conta com widgets próprios já fornecidos pela SDK que permitem um desenvolvimento mais rápido, além de possibilitar a personalização de componentes UI, garantindo a consistência visual entre plataformas.
Baseado no Flutter, utilizamos o Stack para auxiliar no desenvolvimento do projeto, empregando alguns pacotes que devem serão detalhados a seguir.
– Flutter Modular: suíte de soluções desenvolvida pela Flutterando que auxilia em diversos pontos da aplicação, como injeção de dependências e rotas, fazendo com que o código alcance uma fácil manutenção e seja reutilizável conforme o projeto cresce e se torna mais complexo;
– Bloc e Flutter Bloc: solução que auxilia no controle de estados da aplicação. No projeto utilizamos o cubit, que faz parte do pacote bloc, o qual torna o tratamento na camada de apresentação para situações de erro, carregamento e sucesso mais simples e organizado;
– Twilio Programmable Video: para que nossas usuárias possam realizar suas consultas de forma online, precisávamos de uma solução que possibilitasse a realização de chamadas por vídeo, sendo assim, escolhemos o Twilio. Esse pacote foi desenvolvido pela comunidade do Flutter;
– Flutter Test: o projeto já conta com os passos iniciais para que se realizem testes. Isso é possível graças a essa biblioteca flutter_test, que possibilitou a criação de testes unitários e de widget, trazendo mais segurança para o desenvolvimento do app.
Baseada no conceito apresentado pelo entusiasta do movimento software craftsmanship, Uncle Bob, utilizamos o conceito de o clean architecture para desenvolvermos um sistema dividido em camadas, cada uma com sua responsabilidade. Assim, adquirimos a vantagem de empregar modificações na implementação de uma camada sem comprometer todo o sistema.
Dessa forma, a arquitetura do projeto se mantém legível, fácil de realizar manutenções e independente de pacotes, pois permite a troca dos mesmos sem afetar o funcionamento do projeto. Além disso, vale ressaltar, a arquitetura do projeto é testável.
Complementando a stack, utilizamos de uma série de ferramentas que nos auxilia no desenvolvimento e aumenta a nossa produtividade. Dessa maneira, desde versionamento de código, perpassando por testes, monitoramento e até o envio de notificações para os clientes em um modelo low-code de desenvolvimento, utilizamos as seguintes ferramentas:
– Sentry: para auxiliar no relatório de erros que acontecem na aplicação, possibilitando que o tratamento desses erros ocorra de forma mais rápida;
– Git: realização do controle de versão que utilizamos no dia a dia em todos os nossos projetos. Além disso, visando a qualidade do software, fazemos a revisão de código no próprio GitHub, onde ocorrem discussões e sugestões de melhorias;
– Visual Studio Code: cada pessoa desenvolvedora tem a sua própria preferência de IDE. Aqui na Theia, achamos que o VS Code auxilia na nossa produtividade de desenvolvimento tanto pelas funções nativas quanto pelas extensões disponibilizadas pela comunidade;
– Figma: a ferramenta está sendo utilizada pelo time de design para criação do design system e dos layouts a serem desenvolvidos;
– Design System (DS): definição de componentes, cores, fontes e ícones padrões nas nossas aplicações. A definição do DS permite uma reutilização maior do código, evitando duplicações e acelerando o desenvolvimento. Além disso, mantém a consistência visual entre plataformas;
– Firebase App Distribution: permite para nossa equipe lançar e fazer a gestão das versões de teste pela plataforma antes de subirmos para testes nas lojas de aplicativos;
– Firebase In-App Message: envio de mensagens dentro do app com a possibilidade de criação de gatilhos para disparo baseados em eventos. Totalmente customizável pelo dashboard do Firebase;
– Firebase Cloud Message: usamos o FCM para disparo de push notifications com a gestão direta no dashboard do Firebase. Podemos disparar notificações gerais ou baseadas em gatilhos pré-configurados;
– Segment: para o nosso hub de analytics, utilizamos o Segment. O objetivo é integrar a nossa solução às ferramentas de analytics e marketing. Como exemplo: Amplitude, Facebook e Google Ads.
Após o lançamento do app e análise dos resultados, ficou claro para nós que a estrutura criada para o desenvolvimento do Theia App vem se mostrando eficaz, com alta disponibilidade e, até o momento, livre de bugs sistêmicos.
O Flutter se mostrou uma tecnologia muito apropriada para o nosso tipo de produto que requer ao mesmo tempo robustez para funcionalidades como a realização de consultas médicas por videochamada e flexibilidade para se adaptar às necessidades diárias das clientes e do negócio.
Por fim, e não menos importante, o Flutter e as soluções oferecidas pela comunidade aceleram o processo de desenvolvimento mantendo a qualidade de código dentro da aplicação.””