Inspiration
My camera roll holds thousands of photos, but it rarely tells the story behind them.
When I scroll back through my phone, a trip sits between screenshots and receipts, and months of a project blur into random dates. A move, a new job, or a period of personal change gets reduced to an endless grid. The moments are all there, but the context is gone.
I started asking a simple question: what if my memories were organized the way I remember life, as chapters rather than dates?
That idea became PhaseRoll. I wanted a place where a trip, relationship, project, goal, or season of life could have its own title, cover, and story. The photos would be there, but so would the voice notes, reflections, milestones, and the small details that usually disappear.
What it does
PhaseRoll turns the camera roll into chapters of a life well lived.
Users create a Phase for a meaningful period of their lives, then add photos, videos, text, and voice notes. Within a Phase, they can:
- Create sub-phases for the smaller stories inside a larger chapter.
- Write journal entries and reflections.
- Mark milestones that shaped the experience.
- Revisit memories in a diary-style view, complete with page turns, a table of contents, and sub-phase summary notes.
- Capture new moments with different camera styles.
- Create a Roll Call, a shared event album where invited people can add photos, videos, voice notes, and messages.
On Apple devices, original personal media is stored in the user’s private iCloud storage. PhaseRoll stores the structure, entries, and metadata needed to organize and sync the library.
PhaseRoll Pro unlocks more room to grow, including unlimited Phases and sub-phases, journals, milestones, and additional camera styles.
How I built it
I built PhaseRoll as an iOS app using Expo and React Native, with a TypeScript codebase.
The backend uses Better Auth for authentication and PostgreSQL for user data. I used iCloud storage to keep original personal media in each user’s private Apple storage.
For purchases, I integrated RevenueCat to support PhaseRoll Pro subscriptions and Roll Call purchases through Apple’s in-app purchase system.
A lot of the work went into the feel of the product. The diary view had to feel like opening a real book: page transitions, calendar interactions, first-page summaries, and navigation all needed to feel natural rather than decorative.
I tested repeatedly in the iOS Simulator and on my iPhone using signed builds. I also added focused tests for diary navigation, calendar behavior, sub-phase handling, and account-related flows.
Challenges I ran into
The hardest part wasn’t storing memories. It was making them feel like memories.
My first versions of the diary worked, but they didn’t feel right. A page flip that stutters, a calendar that layers incorrectly while being dragged closed, or a summary that sits in the wrong place can make a personal experience feel mechanical. I rebuilt and refined these interactions many times, often chasing details that were only noticeable when holding the phone in my hand.
Sub-phases also brought difficult decisions. If someone deletes a sub-phase, what happens to their memories? I decided that memories should never disappear accidentally. Deleting a sub-phase warns the user and moves its memories back to the main Phase.
Privacy and account safety were another major focus. Apple sign-in persistence, account deletion, managed media removal, and subscription management all required careful handling. Deleting an account needed to be clear, deliberate, and complete, while making sure users understood that App Store subscriptions are managed separately.
The release process came with its own share of challenges: Apple Developer enrollment delays, signing, TestFlight preparation, RevenueCat setup, and App Store review. Much of the work happened outside the codebase, but it was just as essential to launching a real product.
Accomplishments that I'm proud of
I’m proud that PhaseRoll feels like more than a gallery.
When you open a Phase, you’re not just looking at files. You’re revisiting a chapter of your life, with its people, places, milestones, reflections, and voices.
I’m especially proud of:
- The diary-style reading experience and its page-turning interactions.
- Sub-phases with summaries that appear like post-it notes on the first page of each smaller story.
- Keeping original personal media in the user’s private iCloud storage.
- Roll Call, which turns separate perspectives from an event into one shared album.
- Taking the app from an idea to signed iPhone builds and App Store review.
What I learned
I learned that memories are not just data.
At first, it’s tempting to think the problem is mostly organization: dates, folders, tags, and albums. But people don’t remember life in neat categories. They remember feelings, turning points, people, and chapters.
I also learned how much small details matter. The shape of a button, the position of a note, the shadow under a page, and the way a sheet closes can change how personal an app feels.
On the technical side, I learned how important it is to test on real devices. Some issues only became obvious on a physical iPhone, with a real gesture, in a real moment.
Most of all, I learned that trust has to be designed in from the beginning. If people are going to bring their most meaningful memories into an app, it has to treat those memories with care, clarity, and privacy.
What's next for PhaseRoll
I want PhaseRoll to become the best memory app and make people use it to tell and relive their stories.
My upcoming priorities include:
- Phase Recaps that help people relive a chapter in a more cinematic way.
- Future Capsules for preserving memories to revisit later.
- More ways to collaborate on shared events through Roll Call.
- Improved search, organization, and diary customization.
- Continued improvements to performance, sync, and accessibility.
My goal is simple: help people see their lives not as an endless camera roll, but as a story worth revisiting.
Built With
- better-auth
- expo.io
- fastapi
- google-cloud
- react-native

Log in or sign up for Devpost to join the conversation.