Inspiration

Phone reviewers and tech enthusiasts constantly switch between iPhone and Android devices. Every time they switch, they lose their entire reminder system and have to rebuild from scratch. I've watched YouTuber Sam Beckman describe this exact pain point — he needed a way to snooze reminders for exactly 22 minutes without opening the app while filming. Native reminder apps don't sync cross-platform, and no existing solution offered custom snooze presets directly from notifications. Nudge was born to solve this.

What it does

Nudge is a cross-platform reminder app with three killer features:

  1. Custom Snooze from Notifications — Tap a preset button (5m, 22m, 1hr) directly from the notification. The reminder reschedules instantly without ever opening the app.

  2. Real-Time Cross-Device Sync — Dismiss a reminder on your iPhone, it disappears on your Android tablet within seconds. Your reminders follow you across unlimited devices.

  3. Powerful Recurring Reminders — Daily, weekly, monthly, or complex patterns like "every 2nd Tuesday" — set it once and forget it.

How I built it

  • React Native + Expo for true cross-platform development
  • Supabase for real-time database sync and authentication
  • SQLite for local data persistence
  • Zustand for state management
  • RevenueCat for subscription management
  • expo-notifications with custom action categories for background snooze handling
  • date-fns for recurring reminder calculations

Challenges I've ran into

The biggest challenge was implementing snooze without opening the app. iOS and Android handle notification actions completely differently:

  • iOS requires specific notification category configurations with background execution
  • Android needs BroadcastReceivers and text input support for custom snooze times
  • Both platforms kill background timers aggressively, making local-only solutions unreliable, although I tried!

I also had to carefully design the sync architecture to handle edge cases like offline edits, conflict resolution, and ensuring dismissed reminders propagate instantly across all devices.

Accomplishments that I'm proud of

  • True background snooze — Users can snooze reminders without the app ever appearing on screen
  • Sub-second sync — Dismiss on one device, gone on all devices almost instantly
  • Beautiful UI — Pastel colors, true OLED black dark mode, subtle spring animations
  • Custom snooze presets — Users configure their preferred snooze times once, they appear on every notification forever

What I've learned

I learned that you can't overcome Apple's specific limitations with push notification reminders. When I tried to implement P2P offline-based reminders running in the background, Apple doesn't sync with other devices — it must be server-based push notifications! This completely changed our architecture from local-first to server-first, which actually ended up being more reliable across both platforms.

I also learned that notification action APIs differ drastically between iOS and Android, requiring platform-specific handling while maintaining a unified user experience.

Built With

Share this project:

Updates