Trofy
Categoria:
App Mobile de Produtividade
Tech Stack:
Inspiração:
Duolingo
Trofy é um aplicativo para dispositivos móveis com o objetivo de ajudar a atingir metas — gamificando objetivos pessoais para reforçar o desenvolvimento de bons hábitos. O nome faz referência ao ato de receber um troféu, dado por você a você mesmo.
Depois de anos lutando contra a procrastinação na juventude, aos poucos ficou claro que a melhor forma de criar motivação para manter novos hábitos era documentar e revisar o progresso ao longo do tempo. Ver tendências históricas de pequenas melhorias me motivavam a continuar. O objetivo com o Trofy foi transformar essa metodologia em um jogo que inspirasse outras pessoas a focarem em melhoria pessoal de uma forma gamificada.
A ideia do app foi inspirada na metodologia gamificada de educação do Duolingo, onde os usuários têm metas de progresso claras, ganham pontos para gastar em vidas extras e podem facilmente optar por competir com outros usuários em rankings dentro do app, com múltiplos níveis de dificuldade.
Conceitos
A estrutura do aplicativo é dividida em três pilares:
1. Experiência gamificada
Embora Trofy, em sua essência, seja um app no estilo 'lista de tarefas', seu principal aspecto é lembrar ao usuário que ele está jogando um jogo ao completar tarefas de objetivos pessoais.
O sistema de gamificação foi criado para motivar os usuários com dois ciclos de feedback positivo na conclusão de desafios: um troféu como recompensa e níveis de maestria ao manter uma certa consistência de uso.
Um desafio no Trofy é definido por uma atividade que deve ser completada pelo menos uma vez por semana. Isso significa que o usuário pode ganhar um Troféu toda semana e subir de nível nesse desafio todo mês.
O MVP do Trofy focou em construir a experiência gamificada principal, incluindo a interface do usuário e feedback visual. Funcionalidades de comunidade, como competições, compartilhamento de objetivos e contas de usuário ficaram fora do escopo, pois exigiriam um desenvolvimento de backend muito maior do que o tempo disponível para o projeto. No entanto, essas funcionalidades seriam essenciais para tornar o app totalmente gamificado e pronto para um lançamento completo (v1.0).
2. Definição de metas para melhoria pessoal
O principal motivo para usar o app é poder criar, atualizar e revisar rapidamente objetivos pessoais importantes.
Um desafio no Trofy é definido por uma tarefa que precisa ser completada pelo menos uma vez por semana. Ao criar um desafio, o usuário pode personalizar duas propriedades principais:
- Frequência (Dificuldade):
Define o número de dias na semana em que a tarefa precisa ser realizada. Um desafio pode ser uma única tarefa semanal ou algo que precisa ser completado todos os dias.
- Dia de início da semana (Início):
Define quando o desafio começa e o dia da semana em que ele se reinicia. Se o objetivo começar numa quarta-feira, significa que o desafio semanal sempre começa na quarta e termina na próxima terça-feira ao final do dia.
3. Acompanhamento de progresso e análise de desempenho
Cada objetivo mostra claramente seu progresso, para que o usuário tenha uma visão geral rápida de como está indo. Como cada objetivo pode ter uma quantidade diferente de dias exigidos por semana, cada objetivo terá sua própria porcentagem de progresso para aquela semana e histórico desde sua criação.
O usuário também pode deixar uma anotação e avaliar de 1 a 5 estrelas cada dia da semana. Essa funcionalidade simples dá um contexto adicional ao progresso quando o usuário revisa sua evolução posteriormente.
A aba de progresso é onde tudo se junta para mostrar rapidamente quanto o usuário melhorou desde que começou a usar o app. Poder revisar a evolução geral em um piscar de olhos é o principal fator motivador para trazer os usuários de volta ao app e continuar focando em suas prioridades pessoais.
Flow
O objetivo do Trofy de incentivar bons hábitos guiou a estrutura da jornada do usuário. A experiência foi desenhada como um ciclo de feedback positivo, motivando os usuários a superar suas metas e voltar regularmente para continuar evoluindo.
Em sua essência, o app funciona como uma lista de tarefas. A maior diferença além da gamificação é a possibilidade de acompanhar o progresso passado, observar tendências e oferecer oportunidades para o usuário refletir e reorganizar suas prioridades.
Stack
Desenvolver alguns jogos demo anteriormente no Unity inspirou esse projeto e forneceu uma base sólida para criação de um app gamificado. O Unity ofereceu uma forma confiável de desenvolver a lógica por trás de objetos animados e uma solução prática para portar a aplicação para dispositivos móveis iOS e Android.
C# é a linguagem de programação usada no Unity. Depois de aprender os fundamentos da linguagem, foi gratificante implementar lógicas mais desafiadoras, como o controlador de notificações, os sistemas de salvamento de dados e os gerenciadores de listas diárias.
Essa também foi a primeira experiência utilizando ferramentas de IA para aprimorar o código que estava escrevendo e auxiliar em lógicas mais complexas que iam além do meu conhecimento. Escrevi mais detalhes sobre o uso dessas ferramentas na seção de aprendizados e na página sobre mim.
Arquitetura
O componente central do sistema lógico do Trofy é focado nos objetos da lista de dias (Day List), sendo usado e referenciado por todos os principais componentes do app.
Cada desafio gera uma lista de dias dentro do período de uma semana. Essa lista é então atualizada pelo Controlador do Usuário através das entradas do usuário e acessada pelo Controlador de Datas para exibir os desafios aplicáveis do dia e qualquer histórico de conclusão na aba de progresso.
Este é o código que controla a geração inicial da lista de dias da semana a partir do Controlador de Desafios. Uma vez que a semana inicial é concluída, o código aciona automaticamente a geração de semanas adicionais para os próximos períodos de objetivo.
//Objective Controller Code Snippet
public void GenerateDayList() {
dayList = new List();
int startDayOfWeek = (int)startDate.DayOfWeek;
for (int i = startDayOfWeek; i < startDayOfWeek + 7; i++)
{
DateTime currentDay = startDate.AddDays(i - startDayOfWeek);
DayInfo dayInfo = new DayInfo(currentDay, (i) % 7, 1, difficulty);
dayList.Add(dayInfo);
}
DateTime currentDate = DateTime.Now;
CheckDayList(currentDate);
}
Outro ponto de destaque no design do Trofy é a lógica por trás das notificações enviadas pelo app. Notificações por push são um dos maiores benefícios de trabalhar com dispositivos móveis. Para criar uma experiência envolvente e eficiente, foi crucial implementar um sistema que envie lembretes periódicos e mensagens motivacionais para trazer o usuário de volta após períodos de inatividade.
O sistema de notificações do Trofy foi estruturado com três tipos de agendamento:
- Notificações de Prioridade
Lembretes sobre quantos dias restam para completar um desafio ainda não concluído na semana — “Esta é sua última chance de ganhar um 🏆 essa semana!”.
- Notificações de Reinício
Lembretes sobre o início de uma nova semana — “O exercício começa de novo hoje, comece com força 💪”.
- Notificações de Lembrete
Lembretes motivacionais para trazer o usuário de volta ao app após vários dias de inatividade — “Suas lutas te tornam mais forte. Seus obstáculos pavimentam o caminho para o sucesso 💯”.
Outra funcionalidade que vale destacar foi o sistema de localização criado para o alterar o idioma do aplicativo. Com um simples toque, os usuários podem mudar a língua do app instantaneamente.
O sistema de localização funciona substituindo o texto com base em tabelas no estilo planilha, que mapeiam cada elemento da interface para sua tradução.
Design
O objetivo visual do Trofy era fazer toda a experiência parecer um jogo. Uma 'lista de tarefas' é algo que você consulta para marcar o que já foi feito; no Trofy, você retorna para ganhar recompensas em um jogo ao completar essas tarefas. Todos os elementos usados foram escolhidos propositalmente para lembrar jogos mobile como Clash of Clans e designs de apps gamificados como o Duolingo.
O personagem principal do Trofy foi desenhado e criado no Photoshop, enquanto o restante dos elementos da interface foram assets adquiridos na Unity Asset Store.
Wireframe
Esse é um wireframe simples que ajudou a iniciar o projeto. O resultado final é bem diferente deste exemplo, mas esse processo ajudou a organizar a estrutura de informações necessária para uma experiência de usuário melhor.
Plano
Embora esse projeto tenha sido construído como um experimento de experiências gamificadas, o planejamento foi estruturado da mesma forma de um projeto para um cliente. O MVP inicial v0.1 do Trofy foi lançado para testes em seis semanas, mas o projeto continuou em desenvolvimento por mais alguns meses, recebendo atualizações até a v0.4 com a adição do controlador de notificações e correções de problemas encontrados durante os testes com usuários.
Demo
O app está disponível apenas em dispositivos Android através de um arquivo .apk.
Infelizmente não foi possível manter o app disponível nas lojas de iOS e Android, já que ambas as plataformas exigem atualizações frequentes para manter apps de teste disponíveis.
Aprendizados
Este projeto cobriu grande parte das etapas de desenvolvimento de produto, da ideação ao lançamento de uma versão MVP para testes de usuário em dispositivos iOS e Android. Também destacou as possibilidades de apps gamificados usando uma engine como o Unity e deixou claro o esforço necessário para levar este projeto até um lançamento completo v1.0.
Esses são os aprendizados e observações mais importantes deste projeto:
- Potencial de experiências gamificadas
A experiência criada com os visuais e funcionalidades do Trofy foi um ótimo primeiro passo para desenvolver uma experiência totalmente gamificada, mas não foi suficiente. Para atingir esse objetivo completamente, seria necessário adicionar suporte a competições entre usuários e recursos de comunidade para competir e compartilhar objetivos dentro do app. Isso exigiria um investimento de tempo significativo na estruturação do backend, indo além do prazo inicial do projeto.
- Funcionalidades para um lançamento completo
O escopo deste projeto foi limitado para garantir a entrega de um MVP funcional que comunicasse corretamente a proposta de valor idealizada com o Trofy. Criar um senso de comunidade com competições internas e rankings seria o próximo pilar de foco antes de um lançamento completo do app.
- Suporte remoto de backend
O Trofy foi desenvolvido para rodar totalmente local, sem funcionalidades online, o que significa que o suporte ao backend se restringia ao armazenamento local do dispositivo. Um setup de backend adequado, com um servidor Node.js para autenticação de usuários, armazenamento de dados e futuras funcionalidades de comunidade, seria o próximo passo necessário para um possível lançamento completo.
- Apps mobile com Unity Engine
O Unity fornece uma das melhores soluções para portar uma aplicação como app nativo para iOS (Xcode) e Android (Gradle). O processo é tão descomplicado que pouca customização de código é necessária para transferir a mesma aplicação entre plataformas. A única diferença significativa que tivemos que customizar no Trofy foi o sistema de notificações, devido às diferentes estruturas de gatilhos em cada plataforma.
- Programando com IA
Essa foi a primeira vez que testei ferramentas de Inteligência Artificial na revisão de código, e a experiência foi reveladora. Essas ferramentas são ótimas para rápida criação de códigos complexos, mas rapidamente se tornam um obstáculo para retenção de conhecimento e re-aplicação em situações semelhantes. Aprendi que é importante saber discernir quais aplicações a ferramenta realmente pode ser beneficente. Mais detalhes sobre o uso dessas ferramentas está disponível na página sobre mim.
Obrigado por conhecer mais sobre esse projeto!
Confira outros projetos:
JIKO App
App web de produtividade para monitorar sessões de foco e ajudar na análise de performance pessoal.
Automação de Feed WhatsApp
Uma automação que entrega atualizações de RSS via WhatsApp, com gerênciamento de participantes.
acoelho.dev
Este site!
Website full-stack para portfolio e demonstração de elementos de gamificação.
Protótipos de Jogos
Jogos criados para explorar os fundamentos de game design e experimentar sistemas e mecânicas de jogabilidade.