Crow: Daily Journal App
December 2024 - PRESENT
SWIFT, CloudKit, Core Location, NoSQL, version control, CI/CD
You know that saying, “life’s about the journey, not the destination”? I’ve been trying to really take that to heart and make it part of how I see the world.
A while back, I was frustrated with how I was journaling—bouncing between paper notebooks and a bunch of random apps that didn’t quite fit. So I built Crow: a daily journaling app that supports both handwritten and typed entries. Using native Apple APIs, Crow lets you write with Apple Pencil, log your journaling locations, track your mood over time, and get meaningful insights into how your emotions shift and evolve.
Today, thousands of people across 70+ countries use Crow each week. It’s a pretty surreal and awesome feeling to know something I made is helping people reflect, grow, and process life—one entry at a time.
Intuitive UI Design
One of my core design goals for any app is simplicity—anyone, regardless of age or language, should be able to pick it up and understand the UI and UX within 30 seconds. No tutorials, no guesswork.
Crow stays true to that philosophy. Just like opening a notebook to a blank page, journaling in Crow is instant and intuitive. One button on the main screen gets you writing, and from there, it’s easy to add photos, locations, emotions, and more—without ever feeling cluttered or overwhelming.
And unlike a paper journal, Crow makes it effortless to revisit specific moments. Powerful search means no more flipping through pages to find that one entry you’re looking for.
![English [en] _ iPhone - 6_edited.png](https://static.wixstatic.com/media/1980a9_aafa3d0d7e89448da067714d1b7035c8~mv2.png/v1/crop/x_0,y_0,w_1290,h_2106/fill/w_284,h_464,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/English%20%5Ben%5D%20_%20iPhone%20-%206_edited.png)
Designed to be Private from the Ground Up
Journal entries are personal. An issue I had with selecting a journaling app was I never really knew where my journal entries would go, if they saved all my images, if any of it would be encrypted, etc. This is a seriously large concern for others as well - and how do you truly know if an app is keeping your data secure?
There are no secrets with Crow - and I designed it to be locked down from the start. Crow leverages the user's private iCloud account, and nothing ever leaves their device or their account. One challenge I had to think about was image storing - storing them in a SQL database was just not an option. What if a user wants to upload an images that's several MB in size? Instead, I went with the native filesystem, and sync it across the user's devices. This way, I only store a reference to the image (essentially a URL to the image on the device) and load it from the filesystem when needed. I'll show you just how this works!


The Files app was first introduced in iOS 11, and it's come a long way since then. Over the years, Apple has added powerful capabilities—one of the most useful being access to app-specific directories. These directories let developers store a wide range of content, from images and videos to voice recordings, PDFs, and text files.
Crow takes advantage of this system to manage users' images efficiently. Recent images are stored directly on the device for quick access, while older images are automatically offloaded to the cloud and seamlessly re-downloaded when needed. This keeps storage light without compromising the journaling experience.
Crow prioritizes efficient data handling to ensure smooth user experiences. By leveraging CloudKit for secure and synchronized data storage, I implemented best practices for managing user-specific data such as assignments and tasks. This approach ensures that users can access their data seamlessly across devices while maintaining app responsiveness, even for large workloads.
-
Utilized CloudKit to store user data securely and enable cross-device synchronization.
-
Implemented strategies for lightweight data storage to maintain app speed.
-
Optimized data retrieval processes to reduce load times.



