Inspiration

As someone fascinated by world cultures and the profound questions of existence, I was inspired to create "App of the Dead" after realizing how fragmented and intimidating discussions about afterlife beliefs can be. Drawing from my own curiosity about comparative theology and the success of gamified learning apps like Duolingo, I wanted to build an accessible, respectful tool that transforms complex spiritual concepts into engaging, bite-sized lessons. The goal was to foster empathy and understanding across religions while making education feel like play—perfect for busy users seeking quick, meaningful insights without overwhelming research.

What I Learned

This project deepened my expertise in iOS development, particularly in programmatic UI with UIKit, MVVM architecture, and offline-first design using GRDB for SQLite persistence. I gained hands-on experience with Apple's MLX framework for local Large Language Model (LLM) integration, enabling on-device AI to generate personalized explanations and content without internet dependency. On a personal level, I learned the importance of cultural sensitivity in edtech, balancing gamification with respectful representation of diverse beliefs. RevenueCat's SDK taught me seamless in-app purchase handling, while unit testing reinforced the value of robust, maintainable code.

How I Built the Project

I developed "App of the Dead" as a native iOS app, targeting iOS 18.2+ and utilizing Swift and a fully programmatic UIKit approach for a modern, adaptive interface. The architecture follows MVVM with coordinators for navigation, ensuring clean separation of concerns. Core components include:

• Database Layer: GRDB.swift for SQLite operations, managing models like User, Progress, and Achievement. • UI Framework: Custom PapyrusDesignSystem with UIStackViews, haptic feedback, and themed designs per belief system (e.g., unique colors from aotd.json). • AI Integration: Local MLX LLM via MLXModelManager and MLXService for generating dynamic content, such as deity prompts or explanations, all processed on-device for privacy and offline functionality. • Monetization: RevenueCat for handling one-time purchases of learning paths, with a free Judaism track and paid unlocks for others (e.g., Christianity, Islam). • Gamification: XP systems, streaks, and achievements tracked via GamificationService, with interactive quizzes (multiple-choice, true/false) and progress indicators. • Testing: Comprehensive unit tests in aotdTests, mirroring source structure, using Xcode's testing framework.

Content is loaded from aotd.json, with paths like Judaism (free) and others unlockable via in-app purchases. I prioritized accessibility (VoiceOver, Dynamic Type) and performance, using diffable data sources and avoiding print statements in favor of AppLogger.

Challenges Faced

One major challenge was ensuring accurate, respectful content across 20+ belief systems—sourcing reliable data while avoiding cultural appropriation required extensive research and sensitivity reviews. Integrating local MLX LLM posed technical hurdles, including model optimization for mobile devices and handling edge cases in AI-generated responses, which I addressed through iterative testing and fallback mechanisms. Performance optimization for large datasets (e.g., quiz questions) demanded careful memory management and lazy loading. Finally, balancing gamification with educational depth meant tuning XP curves and feedback loops to keep users engaged without oversimplifying complex topics—I overcame this by user testing and refining based on feedback.

Built With

Share this project:

Updates