6 pontos por GN⁺ 2025-08-16 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Para resolver a lentidão do app da PureGym e a inconveniência do processo complexo de entrada, foi feita uma otimização pessoal com o Apple Wallet
  • O QR code existente exige abrir o app e carregar as informações toda vez, um método de entrada ineficiente que leva cerca de 47 segundos
  • Por meio de vários processos técnicos, como engenharia reversa, uso do mitmproxy e do framework PassKit, foi implementado um passe do Wallet com renovação automática
  • Nesse processo, foram confirmados na web detalhes do funcionamento interno da PureGym, como falhas de segurança no código PIN, a estrutura de autenticação da API e informações de localização das unidades
  • No fim, foi criada uma experiência de uso que permite entrar em 3 segundos, deixando claro que se trata apenas de um experimento pessoal e não de um serviço oficial

47 segundos: o começo do incômodo

  • Em um dia útil, às 11:15 da manhã, levou 47 segundos para abrir o app na entrada da PureGym
  • O sinal era fraco, foi preciso conectar ao Wi‑Fi, abrir o app e passar por várias notificações push, ofertas especiais e outras telas até o QR code aparecer
  • O QR code demorava muito para surgir, gerando até constrangimento diante dos outros membros
  • Repetindo isso 6 vezes por semana, eram desperdiçados 282 segundos por semana em uma experiência ineficiente
  • Em comparação com experiências sem atrito como a da Amazon Fresh, a UX de entrada da PureGym parecia muito defasada

O mistério do PIN de 8 anos

  • O autor usa o mesmo PIN de 8 dígitos há 8 anos
  • Esse PIN não expira nem é alterado
  • Já o QR code no app é trocado por um novo valor a cada minuto
  • Existe uma grande contradição entre o nível real de segurança e a implementação na prática
  • O método do PIN permanece por tempo excessivamente longo, enquanto apenas o QR code é rigidamente protegido, em um verdadeiro "teatro de segurança"

Entendendo a PureGym com mitmproxy

  • A ideia inicial era colocar um screenshot do QR code no Apple Wallet, mas isso não funcionou de imediato
  • O QR code da PureGym é gerado dinamicamente, expira em cerca de 1 semana, mas no app é renovado a cada 1 minuto
  • Ao buscar no GitHub por repositórios relacionados a "PureGym", foi descoberta a estrutura de autenticação da API
    • O PIN de 8 dígitos usado no login também era usado como senha da API
    • As credenciais de autenticação básica codificadas em Base64 também ofereciam pouca segurança
  • Para analisar o tráfego do app, foram interceptadas requisições com ferramentas de proxy como o mitmproxy
    • A estrutura JSON do QR code era composta por part1 (id fixo), part2 (timestamp) e part3 (salt para renovação)
    • A própria API informava inclusive o momento de renovação e as condições de expiração

PassKit: o potencial do Apple Wallet

  • Um passe do Apple Wallet não é apenas um cartão estático, mas uma estrutura de miniapp capaz de se atualizar sozinha, receber notificações push e reagir à localização
  • A implementação com PassKit exige especificação em JSON, recursos de imagem, assinatura com certificado e um web service para atualização em tempo real
  • No portal de desenvolvedores da Apple, é necessário emitir um Pass Type ID e um certificado WWDR
  • A assinatura e o gerenciamento de certificados são trabalhosos, mas, quando funcionam, proporcionam uma experiência fluida no dispositivo real

Construindo um backend em Swift

  • Embora o comum seja usar Node.js, o autor implementou diretamente o web service do PassKit com Vapor, baseado em Swift
    • Quando o passe precisa ser atualizado, uma push silenciosa fornece a atualização automática
    • Isso permite uma renovação natural do passe, sem que o usuário perceba

Automação das localizações da PureGym no país inteiro

  • Um passe do Apple Wallet pode ser exibido automaticamente em locais especificados
  • O site oficial da PureGym não traz coordenadas detalhadas, mas pela API foi possível obter a lista de coordenadas de todas as unidades do país
  • Todas as coordenadas das unidades foram parseadas para definir, em cada passe, a academia mais próxima
  • Desvantagem: quando a PureGym fica dentro de um shopping, o passe pode aparecer mesmo em uma simples ida às compras, causando um pequeno incômodo

Integração com Apple Watch

  • O passe do Apple Wallet é sincronizado automaticamente com o Apple Watch sem trabalho extra
  • Com dois cliques no pulso, escaneamento e entrada, o tempo caiu drasticamente para 3 segundos
  • Foi alcançada uma redução de mais de 93% no tempo

A mudança em números

  • Tempo anterior de entrada com o app da PureGym: 47 segundos
  • Tempo de entrada com o passe do Apple Wallet: 3 segundos
  • Tempo médio economizado por semana: 4,4 minutos (3,8 horas por ano)
  • Pessoas ao redor perguntaram 23 vezes "esse app existe?", e sempre foi explicado que era algo não oficial
  • Apesar dos pedidos, não há plano de distribuição por questões de direitos autorais e políticas de serviço

Bônus: integração com Home Assistant

  • Por meio do endpoint de ocupação interna da API da PureGym, a lotação atual da academia é exibida em um dashboard de IoT
  • Com base nos dados, é possível decidir voltar em horários mais vazios, melhorando a eficiência e a motivação nos treinos

Realidade da engenharia e ética

  • Embora tenha começado como uma solução para um incômodo pessoal, era uma área que a PureGym não havia melhorado por anos internamente
  • Um protótipo criado fora da organização às vezes resolve o problema mais rápido que o roadmap oficial
  • Oficialmente, isso pode violar os termos de uso, e a PureGym pode bloquear a qualquer momento
  • Não houve qualquer automação ou compartilhamento; foi usado apenas como experimento pessoal, respeitando princípios como uso de cache para manter a estabilidade

Próximos passos e conclusão

  • No futuro, seria possível propor ideias de expansão, como uma "notificação push da vergonha"
  • A utilidade prática pode ser pequena, mas há satisfação em ter otimizado 3,8 horas anuais de "ações desnecessárias"
  • Se a PureGym implementasse isso oficialmente, poderia oferecer mais conveniência a muitos usuários
  • Fica registrado como um caso de criação de uma "experiência não oficial, mas eficaz"

Ainda não há comentários.

Ainda não há comentários.