Uma aplicação, quatro plataformas: como lançamos para web, iOS, Android e Windows ao mesmo tempo
A aplicação web e as aplicações nativas da TradeYoke são o mesmo código. Eis o que isso traz aos clientes — e as regras que seguimos para que continue a ser verdade.

Resposta rápida: a TradeYoke é uma única base de código partilhada, apresentada na web e empacotada como aplicações nativas para Windows, Android e iOS, em vez de quatro produtos separados construídos para parecerem semelhantes — uma funcionalidade escrita uma vez para a web é, por construção, a mesma funcionalidade em todas as outras plataformas, não uma reconstrução separada que pode desalinhar-se com o tempo.
Principais conclusões
- Todos os ecrãs vivem numa única biblioteca de componentes partilhada; o servidor web, o navegador e as aplicações nativas são invólucros finos à volta do mesmo código.
- Uma correção ou uma nova funcionalidade chega a todas as plataformas em conjunto, porque só existe um sítio onde vive.
- As aplicações nativas instaladas funcionam offline; a aplicação web no navegador é a porta de entrada do escritório, sempre online.
- As coisas específicas de cada plataforma — a câmara, o GPS, os seletores de ficheiros — ficam atrás de uma única interface partilhada, com uma implementação separada por plataforma, nunca um caso especial nos ecrãs partilhados.
- Uma implementação em falta numa plataforma é tratada como um erro a corrigir, não como um "brevemente" para contornar.
A regra: uma base de código, quatro faces
A maioria dos softwares que afirma funcionar "em qualquer lado" significa, na verdade, duas ou três equipas a construir aplicações parecidas sobre o mesmo backend, o que é como uma aplicação móvel fica discretamente uma versão atrás da versão web, ou ganha uma funcionalidade que a versão web nunca chega a ter. A TradeYoke não funciona assim. Tudo o que um utilizador vê — a agenda, o assistente de criação de trabalhos, o ecrã de faturas — vive numa única biblioteca de componentes partilhada. O servidor web, o navegador (a correr o mesmo código do lado do cliente), e as aplicações nativas de Windows, Android e iOS são anfitriões finos à volta desses mesmos componentes. Uma funcionalidade construída para a web é, por isso, automaticamente, a mesma funcionalidade em todo o lado, porque não existe uma segunda versão dela para ficar para trás.
O que isso significa no dia a dia
Para quem a usa, a diferença prática é que não há um momento de "isso só está na versão de computador". O escritório, a planear a semana num monitor, e a pessoa na carrinha, a verificar o mesmo trabalho num telemóvel, estão a ver o mesmo ecrã a fazer as mesmas coisas — não uma vista móvel reduzida a que faltam metade dos botões. Quando algo é corrigido ou melhorado, chega a todas as plataformas na mesma atualização, não a web este mês e a aplicação "eventualmente". E porque as aplicações de telemóvel e Windows são aplicações nativas devidamente instaladas, e não uma página web dentro de um invólucro, trazem consigo o suporte offline da TradeYoke: os trabalhos do dia, os registos de clientes e os preços estão disponíveis e editáveis sem sinal, sincronizando-se automaticamente assim que a ligação volta. A aplicação web no navegador é diferente por conceção — é a superfície do escritório sempre online para planear e reportar, e não afirma funcionar offline, porque um separador do navegador não tem forma fiável de o prometer.
A disciplina necessária para manter isto verdadeiro
A regra só se mantém se for aplicada, por isso as diferenças de plataforma — a câmara, o GPS, um seletor de ficheiros, as notificações push — nunca são chamadas diretamente a partir dos ecrãs partilhados. Cada uma fica atrás de uma única interface partilhada, com uma implementação separada fornecida por cada plataforma: a versão web pode usar uma API do navegador, a versão nativa o próprio SDK do dispositivo, mas o componente partilhado nunca sabe nem se importa com qual delas está por baixo. Uma plataforma que ainda não tem a sua própria implementação é tratada como um erro por terminar nessa interface, não como uma razão para escrever um ramo de caso especial no código partilhado — no momento em que um ecrã começa a perguntar "em que plataforma estou", a promessa de uma única base de código começa a quebrar-se, por isso essa pergunta nunca pode aparecer fora do limite da própria interface.
Porque é que isto importa para uma empresa de serviços técnicos, não só para os engenheiros
O instinto é tratar "uma única base de código" como um pormenor de implementação que só interessa aos programadores, mas é a razão pela qual um negócio que usa a TradeYoke nunca tem de planear em torno de uma lacuna de funcionalidades entre "a aplicação" e "o site". Um membro da equipa que prefere um portátil Windows, outro que vive no Android dentro da carrinha, e um gestor de escritório que só abre um navegador estão todos a trabalhar a partir dos mesmos dados, dos mesmos ecrãs e do mesmo plano do dia — não há nada para manter sincronizado entre eles, porque nunca foram quatro coisas para começar.
Perguntas frequentes
A aplicação web tem menos funcionalidades do que as aplicações nativas?
Não — os mesmos ecrãs partilhados aparecem em ambas; a diferença significativa é o suporte offline, que pertence às aplicações nativas instaladas porque um separador do navegador não o consegue prometer de forma fiável, e não a uma experiência web reduzida.
Se eu usar a aplicação no Windows e o meu colega usar Android, vemos a mesma coisa?
Sim. Ambos estão a usar os mesmos componentes partilhados sobre os mesmos dados; a única diferença é o dispositivo que os desenha.
Uma nova funcionalidade alguma vez aparece numa plataforma antes de outra?
A intenção de construir desta forma é que isso não aconteça — uma funcionalidade é escrita uma vez na camada partilhada e chega onde quer que essa camada seja executada. A canalização específica de plataforma (como uma capacidade do dispositivo) pode demorar uma atualização a mais numa plataforma que precisa da sua própria implementação, o que é tratado como uma lacuna a fechar, não como uma diferença permanente aceite.
Porque é que a aplicação web não funciona offline como a aplicação de telemóvel?
Um separador do navegador não tem forma fiável de garantir que os dados sobrevivem a ser fechado, a perder o sinal ou a ser reaberto dias depois, da forma que uma aplicação instalada consegue. As aplicações instaladas da TradeYoke em Windows, Android e iOS trazem esse suporte offline; a aplicação web é, deliberadamente, a superfície do escritório sempre online.



