Inspiration

"If it's not a reminder, it's not happening."

Two months ago, I moved from Pakistan to Romania for my Master's degree. I arrived with high hopes, but reality hit me harder than expected. The language barrier was a massive wall—I couldn't understand class WhatsApp groups, local apps, or even grocery labels. Consequently, I couldn't find a job. My savings were draining, and anxiety kept me awake at night.

I initially started building a translation tool to help me navigate daily life here, but I realized free alternatives already existed. I felt defeated, abandoned the project, and went back to doomscrolling.

Then, on February 5th—literally one week before the deadline—I saw the RevenueCat Shipyard challenge. I read the brief for the "Perfect Reminder App":

"Ordering plants, reminder. Emptying bins, reminder... I need a reminder app that works on both iOS and Android... Custom snoozing, powerful recurring reminders, proper syncing, and a smooth UI."

I realized I had nothing left to lose. I had the skills, I had the time (insomnia has its perks), and I had the hunger to prove myself. I closed my eyes, opened my IDE, and started Yad.

What it does

Yad is a cross-platform reminder app built to satisfy the four specific demands of the project brief:

  1. Custom Snoozing: You can snooze a notification for exact intervals (e.g., exactly 22 minutes) directly from the notification shade without opening the app.
  2. Powerful Recurring Reminders: Whether it's a weekly task, a monthly bill, or an hourly check-in, Yad handles complex repetition logic.
  3. Cross-Device Syncing: (Android focused) When a task is marked done on one device, it updates immediately on others.
  4. Smooth UI: A clean, minimalist aesthetic that focuses on getting things done.

How we built it

I built Yad using Expo (React Native) to ensure a cross-platform codebase.

  • Core: React Native for the UI/UX.
  • Native Power: I used Custom Native Modules to handle the complex logic required for "Custom Snoozing" directly from the notification tray, as standard libraries didn't offer the granularity required by the prompt.
  • Backend: I integrated a cloud backend to handle the state synchronization between devices.
  • Monetization: Integrated RevenueCat to handle the "Pro" entitlement logic (even though the focus was on the core features for this hackathon).

Challenges we ran into

I started this project a week before the deadline, working alone. The pressure was immense, but the biggest hurdle was Notification Syncing.

The brief required: "If I dismiss a reminder on one phone, it should disappear everywhere."

I struggled with this for days. I successfully implemented it on Android, but iOS became a roadblock. After spending a whole day debugging, I realized that true remote dismissal on iOS requires silent Push Notifications (APNs).

The Barrier: To use APNs, I needed a paid Apple Developer Account ($99). As a student struggling to find work in a new country, I simply couldn't afford this right now.

The Solution: I had to make a tough decision. Since I already possessed a Google Play Console account, I focused on polishing the Android experience to perfection. I used my roommate's MacBook to build and test the iOS version to ensure the UI/UX was valid and the logic was sound, even if the background sync features were limited by the lack of a paid account.

Accomplishments that we're proud of

  • Survival: I turned my anxiety and financial stress into code. I didn't sleep much, but I shipped a product.
  • The Pivot: I successfully switched from a translation app to a complex reminder app in under 7 days.
  • Android Internal Testing: I successfully deployed the app to the Google Play Internal Testing track so judges can download and test it on real devices.
  • Resourcefulness: Building an iOS build without owning a MacBook (thanks to my roommate!) and navigating strict platform limitations with zero budget.

What we learned

This hackathon taught me more than just code:

  1. Technical Limits: I learned the hard way about the differences between local notifications and APNs on iOS.
  2. Working Under Pressure: How to prioritize features (focusing on Android sync) when resources (time and money) are scarce.
  3. Resilience: Even when you feel isolated in a new country, building something gives you a sense of purpose.

What's next for Yad

  • iOS Full Support: Once I land a job here in Romania, the first thing I will buy is an Apple Developer Account to enable APNs and fix the syncing on iOS.
  • Advanced AI: Implementing AI to parse natural language reminders (e.g., "Remind me to water plants every 3 days at 5 PM").
  • Public Release: Moving from Internal Testing to Production on the Google Play Store.

P.S. I came to know about this hackathon a week ago, so due to short amount of time, I've used AI to help format my story

Built With

Share this project:

Updates