Phil

App desenvolvido com SwiftUI, MVVM e CloudKit

Intro

O desenvolvimento do Phil – Know Yourself foi uma oportunidade de unir um propósito emocional com soluções técnicas robustas. Criado como um aplicativo de registro emocional, o Phil convida o usuário a identificar, personalizar e refletir sobre suas emoções ao longo do tempo. A inspiração veio de mood trackers, bullet journals e da própria vivência com produtos digitais de saúde mental. No entanto, a ideia era ir além do emoji padrão — o usuário seria capaz de montar expressões únicas com cores, formas e pequenos detalhes visuais que representassem exatamente como se sentia, com uma base técnica sólida que permitisse persistência e sincronização de dados entre dispositivos Apple.

Project

Apple Developer Academy

Apple Developer Academy

Year

Year

2024

2024

My Role

My Role

Desenvolvedor

Desenvolvedor

Services

Services

Dev, UI/UX, CEO

Dev, UI/UX, CEO

O Problema

Com o conceito validado, iniciei o desenvolvimento utilizando SwiftUI, por sua abordagem declarativa, moderna e com excelente integração com os sistemas Apple. A interface foi projetada para ser intuitiva, sensível e visualmente clara. Logo no início, optei por organizar a estrutura do projeto seguindo o padrão arquitetural MVVM (Model-View-ViewModel). Essa escolha permitiu separar responsabilidades de forma clara, facilitando a manutenção, escalabilidade e testes ao longo do desenvolvimento.

As Views foram organizadas em componentes reutilizáveis, cada um responsável por renderizar uma parte da emoção (olhos, boca, cor, acessórios), bem como os elementos do diário (título, texto e imagem). Isso garantiu flexibilidade tanto no design quanto na lógica, permitindo futuras expansões e testes unitários mais diretos.

Persistência e nuvem: CloudKit

O armazenamento dos registros foi feito com CloudKit, a solução nativa da Apple para armazenamento em nuvem. Por se tratar de dados sensíveis e pessoais, optei pelo uso do container privado, garantindo que apenas o usuário tivesse acesso às suas informações. Cada emoção era representada como um CKRecord, com campos como recordName, mainEmoji, timestamp, diaryText, imageData, entre outros.

O uso de CloudKit envolveu a criação de operações assíncronas para gravação, leitura, atualização e exclusão de dados. A lógica de identificação com recordName foi fundamental para garantir que os registros fossem atualizados corretamente, sem duplicidade. Essa foi a etapa mais dificíl do projeto, o CloudKit é muito pouco usado e tinha pouca documentação sobre ele.

Funcionalidades implementadas

Entre os principais recursos desenvolvidos estão:

  • Registro emocional com personalização visual (cor, forma, olhos, boca, acessórios)

  • Diário emocional com texto e tags

  • Favoritar até 5 emoções principais, com lógica de substituição automática

  • Notificações locais, utilizando UNUserNotificationCenter, para lembrar o usuário de registrar seu dia

  • Gráficos com Swift Charts, exibindo variações semanais e mensais de humor

  • Exportação dos registros com PDFKit, permitindo que o usuário salve ou compartilhe seu histórico emocional

Aprendizados e desafios técnicos

Um dos maiores desafios foi lidar com a sincronização em tempo real com o iCloud. Trabalhar com CloudKit exigiu uma compreensão profunda sobre o ciclo de vida de cada CKRecord, o uso correto de containers e zonas, além de estratégias para prevenir conflitos e garantir a integridade dos dados. Foi essencial também entender como SwiftUI lida com @State, @ObservedObject e @EnvironmentObject em conjunto com chamadas assíncronas, para que a interface sempre refletisse o estado atual da base de dados.

Outro desafio interessante foi implementar a lógica para limitar as emoções favoritas a apenas cinco, forçando o app a substituir automaticamente a mais antiga quando o limite fosse excedido. Isso exigiu controle eficiente de estados e persistência combinados com a atualização do banco de dados na nuvem.

Conclusão

Desenvolver o Phil foi uma experiência completa, tanto em termos técnicos quanto criativos. Trabalhei com tecnologias nativas da Apple de ponta a ponta — SwiftUI, MVVM, CloudKit, Swift Charts e notificações locais — e aprimorei minha capacidade de criar uma experiência digital sensível, funcional e escalável.

Mais do que um app de humor, Phil é um produto emocionalmente consciente, que traduz sentimentos em dados, e oferece ao usuário uma jornada de autoconhecimento apoiada pela tecnologia.

Mais Projetos

Create a free website with Framer, the website builder loved by startups, designers and agencies.