Voltada para a área da saúde, a SmileB foi um case de refatoração em prol da usabilidade e qualidade do código.

Desenvolvi em conjunto com a SmileB aplicativos para o paciente encontrar o prestador certo para a sua necessidade, assim como para o profissional analisar e gerenciar as consultas agendadas.

Corrigir ou fazer do zero?

No primeiro contato com o cliente, a ideia era continuar o desenvolvimento do aplicativo a partir de um código que já havia sido iniciado. Porém, ao analisar a implementação e a arquitetura escolhida para compor as funcionalidades, percebi diversas escolhas que iam contra as boas práticas de engenharia de software assim como quebras de padrões de design para aplicativos móveis.

  • O aplicativo não contava com uma hierarquia de funcionalidades bem definida. Ao misturar padrões de navegação como o menu lateral e a barra de navegação inferior , a jornada do usuário ficava confusa e funcionalidades ficavam escondidas.
  • Contrariando as boas práticas de navegação, a barra de navegação inferior não era consistente, mudando seus ícones de tela em tela. Além de confundir o usuário, gerava uma sobrecarga no código que precisava tratar esse comportamento dinâmico.
  • Algumas das escolhas de design não eram apropriadas para o contexto do aplicativo, e essas decisões ao serem implementadas tornariam ainda mais difícil o trabalho de refatoração.
  • A conjunção desses fatores acarretava num aplicativo cheio de bugs e crashes, e o trabalho de debug e análise desses erros por si só já tomaria um tempo enorme de desenvolvimento.
  • Não haviam sido suficientemente implementados padrões de projeto como MVC ou MVVM que permitissem a refatoração e manutenibilidade do código.

A partir disso propus refazer o aplicativo, reaproveitando alguns trechos de código, mas com uma estrutura reformulada, o que foi bem aceito pelos clientes.

Reestruturando o projeto

A reestruturação do projeto foi feita tendo em mente tanto uma melhora da experiência do usuário quanto a do desenvolvedor envolvido na implementação do sistema.

  • Estabelecemos uma hierarquia de funcionalidades coesa, que deixasse o uso do aplicativo intuitivo. Eliminamos o menu lateral, deixando apenas a Bottom Navigation, realocando funcionalidades secundárias.
  • Criamos fluxos consistentes e independentes para cada funcionalidade. Isso eliminou a sobrecarga do código anterior, facilitando a manutenção e gerenciamento de estados do aplicativo.
  • Passamos a utilizar os componentes do Android Jetpack para adicionar padrões de comportamento reativo no sistema, permitindo maior responsividade e qualidade no código.

Agendamento de consulta

A funcionalidade principal desenvolvida foi a de agendamento de consultas. A partir da localização o usuário e das opções de filtragem a API retorna os profissionais adequados, permitindo a visualização do perfil do profissional e o eventual agendamento.


Controle de agendamentos

Presente tanto no aplicativo do profissional quanto do paciente, também foram implementadas telas para visualização do estado da consulta, confirmação de agendamento, avaliação e o histórico.


Login e cadastro do usuário

Também foi implementei cadastro e login no sistema, podendo ser feito por email, Google ou Facebook. Como melhoria de usabilidade, os usuários em busca de profissionais só fazem o login caso desejem finalizar o agendamento, podendo usar as outras funcionalidades de busca sem ter feito o cadastro.


Perfil de usuário

Para finalizar, os usuários também podem editar as suas informações de perfil. Foram implementadas algumas funcionalidades de processamento de imagem para melhorar a performance e reduzir o consumo de dados na comunicação com o servidor.