LeafyLog
Making daily reflection rewarding and fun
LeafyLog is a unique journaling application designed to blend productivity and reflection through the power of gamification.

The Journey
Why People Stop Journaling
The blank page problem
Research shows that while many people start journaling, most quit within a few weeks. The reasons are clear: • Staring at a blank page is intimidating • No structure makes it feel aimless • Missing one day breaks the momentum • No immediate reward makes it feel pointless I wanted to build a journaling app that solved these problems. The goal: make journaling so easy and rewarding that people would actually stick with it.
Structured Journaling + Gamification
Making reflection effortless and rewarding
I designed LeafyLog around a simple structure: • Morning: Plan your day (to-do list, intentions) • Evening: Reflect on your day (activities, learnings) The innovation was the "activities entry system" - instead of blank pages, users get AI-generated prompts: • "What made you smile today?" • "What challenge did you overcome?" • "Who did you help or who helped you?" For gamification, I added: • Streaks: Track consecutive days journaling • Growth visualization: Your journal "grows" like a plant • Achievements: Unlock milestones (7-day streak, 100 entries, etc.) • Progress calendar: Visual representation of your consistency The architecture was MVVM with UserDefaults for storage. Why UserDefaults instead of CoreData? Simplicity. Journal entries are small text, and UserDefaults is perfect for this use case.
Building the AI Prompt System
Making prompts feel natural, not robotic
The hardest part wasn't the code - it was crafting prompts that felt human. I spent days testing different prompt styles: Too generic: "How was your day?" (uninspiring) Too specific: "Did you exercise for 30 minutes?" (prescriptive) Just right: "What gave you energy today?" (thoughtful but open) I created a prompt pool of 100+ questions across different categories: • Gratitude • Growth • Relationships • Challenges • Wins The app randomly selects 3-5 prompts each day, ensuring variety while maintaining structure. Users can skip prompts they don't connect with. For the growth visualization, I used SwiftUI animations to make the "plant" grow as users journal more. Each entry adds a "leaf" - a simple but powerful visual metaphor for personal growth.
Building Healthy Habits
When users thank you for changing their lives
The feedback exceeded my expectations: "LeafyLog is the first journaling app I've stuck with for more than a week" "The prompts help me notice things I would've ignored" "Watching my plant grow is oddly motivating" The data backed this up: • 75% of users journaling at least 3x per week • Average streak length: 12 days (far above industry average of 3-4 days) • 60% of users reporting improved mood after 2 weeks One user shared: "I realized through LeafyLog that I was only writing about work stress. The prompts helped me notice the good things too." That's when I understood - this wasn't just about journaling, it was about changing how people see their days. Technology can't solve everything, but it can nudge people toward healthier habits.
Technologies Used
Key Features
Key Learnings
Gamification works when it's meaningful - streaks and achievements motivated users genuinely
AI prompts need to feel human - I spent more time crafting questions than writing code
UserDefaults is perfectly fine for small data - don't over-engineer with CoreData unless you need it
Visual feedback (the growing plant) was more motivating than I expected
Sometimes the simplest solution is the best - MVVM + UserDefaults was all we needed
Project Gallery



Interested in this project?
Feel free to explore the code or see it in action. I m always happy to discuss the technical details!