Inspiration

I kept dropping small but important balls — call someone when I got home, grab milk when I left work, follow up “when I have a minute.” Traditional reminder apps revolve around time. They assume you’ll be in the right place and mindset when the clock hits 3:00 PM.

Real life doesn’t work like that.

I wanted reminders that understand context:

  • “Remind me when I get to the office.”
  • “Remind me to buy batteries when I leave this store.”
  • “Remind me in two hours.”

And I didn’t want to tap through forms. I wanted to just say it and move on.

So I built Remindy — a voice-first, place-aware reminder app that works the way real life works.


What it does

Remindy is a mobile app (iOS and Android) that lets you create reminders in three ways:

1. By Voice (Life Autopilot)

You talk to an AI assistant.
It understands natural language and creates reminders for you.

Perfect for:

  • Driving
  • Walking
  • When your hands are busy
  • When you just want speed

No forms. Just say what you need.

2. By Place

Pick a location on a map and choose:

  • When I arrive
  • When I leave

The app uses geofencing and background location to trigger notifications at the right moment — not at some random time.

3. By Time

Classic time-based reminders with:

  • Push notifications
  • Quick actions (Done, Snooze)

All reminders live in one unified list.

Users can subscribe (Free vs Pro) inside the app, and everything syncs to their account.


How we built it

We built Remindy with a modern, scalable stack:

  • Expo (React Native) — One codebase for iOS and Android
  • Firebase Auth — User accounts + Google Sign-In
  • Firestore — Reminders and user data
  • Firebase Cloud Messaging — Push delivery
  • Notifee — Rich local notifications + action buttons
  • Expo Location + expo-task-manager — Background geofencing
  • Vapi — Voice AI conversations
  • RevenueCat — Subscriptions and paywall UI

Architecture highlights:

  • React Navigation for routing
  • Auth and AppConfig contexts for state
  • A dedicated geofencing service that registers, caches, and cleans up location-based reminders
  • Remote config + kill switch so we can disable features or message users instantly if needed

It’s built to operate like a real product, not a prototype.


Challenges we ran into

Background location & geofencing

Both platforms aggressively limit background activity to protect battery. Getting reliable “arrive/leave” triggers meant:

  • Handling complex permission flows
  • Managing OS background restrictions
  • Registering geofences efficiently
  • Dealing with task manager lifecycle issues

Testing required actual movement — walking, driving, entering stores.

Voice → Reminder pipeline

Connecting AI conversations to structured reminder data required:

  • A clear contract between voice output and Firestore schema
  • Backend validation
  • Duplicate prevention
  • Correct time/place parsing

Voice UX breaks fast if it’s even slightly wrong.

Cross-platform notifications

Making Done and Snooze behave consistently on iOS and Android required:

  • Correct channel setup
  • Payload alignment
  • Deep linking into the correct app state
  • Syncing completion state to Firestore

Tiny mismatches cause confusing bugs.

Subscription & access control

RevenueCat entitlements had to stay perfectly in sync with:

  • Auth state
  • App context
  • UI rendering

We had to prevent scenarios where the UI briefly shows Pro features to free users (or blocks access incorrectly).


Accomplishments that we're proud of

  • Shipping voice + place + time in one cohesive experience
  • Making Life Autopilot truly one-tap → talk → done
  • Getting geofencing reliable enough for real daily use
  • Building production infrastructure (auth, push, subscriptions, remote kill switch)
  • Designing it as a real operating system for reminders — not just a notification tool

What we learned

Background location is unforgiving

Each platform has strict rules. You design around constraints — not against them. “Perfect reliability” doesn’t exist. Clear expectations matter more.

Voice UX is different

Users don’t want to edit with their voice.
They want to say it once and see it done correctly.

Constraints + good defaults beat complex flows.

Integrations multiply complexity

Firebase, Vapi, RevenueCat, Notifee, and Expo each have their own lifecycle and quirks. When you combine them, complexity compounds.

We got better at:

  • Reading SDK documentation deeply
  • Handling async edge cases
  • Keeping one source of truth

What's next for Remindy

Smarter defaults

Use context (time of day, frequent locations) to pre-suggest reminder types and reduce friction even further.

Recurring + templates

  • “Every Monday when I get to work”
  • Saved routines for common tasks

Stronger Life Autopilot

  • More natural flows (“remind me in 2 hours”, “when I leave here”)
  • Possibly a daily AI briefing
  • Making the assistant feel like a real copilot

Polish & scale

  • Refine onboarding
  • Improve permission explanations
  • Optimize battery usage
  • Grow the user base
  • Iterate based on real-world behavior

The goal isn’t just reminders.

It’s making sure nothing important slips through the cracks again.

NOTE

I still couldn't get approval from apple/google for my app thats why I don't have the links for now, but I can send the an file to test via, email/drive.

Built With

Share this project:

Updates