RemindMe - Shipyard Hackathon Submission
Inspiration
"Why do I have to fight my reminder app just to set a recurring task?"
This project was inspired by Sam Beckman's audience—active, who demand polish, reliability, and seamless sync. We noticed a gap in the market: existing apps were either too simple (lacking complex recurrence or cross-device capabilities) or too bloated (cluttered with ads/features).
We wanted to build the "perfect" reminder app: one that feels native, respects your time, and handles complex schedules effortlessly. The goal was simple: Reliability above all else. If I set a reminder, it must ring, and if I dismiss it on my phone, it must disappear from my tablet.
What it does
RemindMe is a cross-platform Flutter app that combines minimal design with maximum power.
- Smart Scheduling: It handles complex recurrence patterns that other apps miss—daily, specific days of the week, bi-weekly, monthly, or even every 6 months.
- Visual Calendar: A beautiful, swipeable weekly calendar keeps you focused on today, while a full month picker lets you plan ahead.
- All Reminders View: A powerful dashboard to see every active reminder you've ever created, grouped by schedule.
- Seamless Sync (Pro): Dismiss a reminder on one device, and it vanishes from all others via real-time Firestore sync.
- Reliable Alerts: Uses robust local notifications for free users and server-side FCM push notifications for Pro users to guarantee delivery even after device restarts.
- Monetization: A fair freemium model using RevenueCat to manage subscriptions and entitlements seamlessly.
How we built it
We treated this hackathon as a production-grade engineering challenge.
- Architecture: A modular monorepo with 13+ local packages (e.g.,
user_repository,reminder_service,ui_kit) to enforce separation of concerns. - Tech Stack:
- Flutter: For a pixel-perfect UI on Android and iOS.
- Firebase: Auth for identity, Firestore for real-time data, and Cloud Functions for backend logic.
- RevenueCat: To handle all subscription logic, entitlements, and paywalls with zero headache.
- State Management:
flutter_blocfor predictable state transitions andrxdartfor combining complex data streams. - Design: Material 3 implementation with full dark mode support and custom adaptive widgets.
Challenges we ran into
- The "Local vs. Cloud" Dilemma: Designing a system that works perfectly offline (local notifications) but upgrades seamlessly to the cloud (FCM) was tricky. We solved this by abstracting the
NotificationRepositoryinterface, allowing us to swap implementations based on the user's Pro status. - Complex Recurrence Logic: Calculating "next due dates" for patterns like "Every 3 days starting next Tuesday" required robust date math. We built a dedicated test suite just for the scheduling engine to ensure 100% accuracy.
- Cross-Device Sync Risks: Preventing infinite loops where Device A syncs a dismissal to Device B, which triggers a "change" event back to Device A. We implemented smart timestamp checks to break these cycles.
Accomplishments that we're proud of
- Production Quality Code: This isn't just a prototype. It has a scalable architecture, dependency injection, and error handling ready for the store.
- The "It Just Works" Sync: Seeing a notification disappear from an iPad the instant it was dismissed on a Pixel phone felt like magic every time.
- RevenueCat Integration: Implementing a full subscription flow—from paywall to entitlement check—took hours, not days, thanks to the RevenueCat SDK.
What we learned
- Modularity Pays Off: Breaking the app into packages gave us clear boundaries. The UI team didn't need to know how the database worked, and the backend logic was isolated from Flutter widgets.
- Subscription Complexity: Handling edge cases like "user restored purchase on a new device" is hard. RevenueCat abstracted 90% of that pain away, letting us focus on the app features.
- User Onboarding matters: Adding the "Feature Showcase" dramatically improved the initial feel of the app, proving that first impressions count.
What's next for RemindMe
- AI Integration: Natural language processing to type "Remind me to call Mom every Sunday at 5" and have it auto-schedule.
- Wear OS / Watch App: Bringing the actions (Snooze/Dismiss) directly to your wrist.
- Habit Tracking: Expanding from "do this" to "how often did I do this?" with streaks and stats.
- Public Release: Polishing the final details for a Play Store launch!
Log in or sign up for Devpost to join the conversation.