UnForget: Building the Best Cross-Platform Reminder App

Inspiration

The spark for UnForget came from a common frustration shared by tech enthusiasts: the "platform switch penalty." The project was inspired by tech reviewer Sam Beckman, who frequently moves between iOS and Android. Previously, his favorite reminder app was Android-only, meaning he would lose his entire organizational system every time he switched to an iPhone.

My goal was to build a cross-platform powerhouse that combines advanced productivity features—like aggressive snoozing and incredible recurrence flexibility—into a single, unified experience. I wanted to solve the complexity of cross-device synchronization, working toward a world where your reminders and their states are perfectly aligned across any device you pick up.

What it does

UnForget is an offline-first, cross-platform reminder application designed for power users who need reliability and flexibility:

  • Smart Synchronization: Syncs reminders across iOS and Android devices, ensuring that a dismissal on one device is reflected everywhere.
  • Advanced Recurrences: Handles everything from hourly alerts to complex patterns like "every 3rd Friday of the month."
  • Natural Language Entry: Allows users to create reminders naturally, such as "Gym every Monday at 7am."
  • Interactive Notifications: Features custom snooze actions (5m, 15m, Custom) directly from the lock screen.
  • Premium Experience: Offers a high-end "Glassmorphism" aesthetic with a focus on speed and fluid animations.

How we built it

I chose Flutter to ensure a beautiful, high-performance UI that feels native on both platforms. The technical backbone includes:

  • Backend & Sync: Supabase for real-time synchronization, authentication, and cloud storage.
  • Local Persistence: SQLite for a robust offline-first experience.
  • State Management: Riverpod with a Clean Architecture approach to keep business logic separate and testable.
  • Notifications: flutter_local_notifications for managing complex scheduling and interactive actions.
  • Monetization: RevenueCat to manage Pro features like unlimited reminders and advanced recurrence patterns.

The development was accelerated by Antigravity, following the BMAD method, which ensured that high architectural standards were maintained through rigorous validation of every story and technical specification.

Challenges we ran into

  • Real-Time Sync Conflict: Implementing a "Last-Write-Wins" resolution strategy that felt seamless during rapid multi-device updates.
  • The Recurrence Engine: Designing logic that accurately predicts future dates for complex patterns while keeping the UI responsive.
  • Background Sync Persistence: Ensuring consistency when the app is terminated. Since listeners are paused when an app is "killed," I built a reconciliation logic that syncs data immediately upon re-entering the foreground.
  • Interactive Notifications: Coordinating platform-specific behavior to ensure snooze and completion actions work reliably regardless of the app's state.
  • Authentication Edge Cases: Debugging intermittent Google OAuth token expirations to ensure users could link their accounts without data loss.

Accomplishments that we're proud of

  • Premium Design Implementation: Successfully translated a high-end "Hybrid Premium" visual identity into a functional, fluid mobile app.
  • Robustness: Achieving a high level of reliability for notification delivery and background synchronization despite platform limitations.
  • Architecture: Maintaining a clean, scalable codebase that adheres to Clean Architecture principles, making the app easy to extend.

What we learned

  • Cross-Platform Background Notifications: Mastering the complexities of scheduling and managing notifications on both iOS and Android.
  • Complex Recurrence Systems: Implementing flexible and powerful logic and projecting occurrences accurately for a dynamic UI.
  • Natural Language Processing (NLP): Integrating parsing to make task entry frictionless.

What's next for Unforget

  • Advanced State Syncing: Enhancing the synchronization logic so that actions like "Snooze" or "Done" on one device instantly disable or reschedule active notifications on all other devices, ensuring you never get buzzed twice for the same task.
  • Home Screen Widgets: Building interactive iOS and Android widgets for quick task viewing and completion without opening the app.
  • Location-Based Reminders: Alerting users based on their destination (e.g., "Remind me to buy milk when I'm at the grocery store").
  • AI-Powered Suggestions: Using machine learning to suggest optimal times for tasks based on user habits.

Built With

Share this project:

Updates