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:
- Custom Snoozing: You can snooze a notification for exact intervals (e.g., exactly 22 minutes) directly from the notification shade without opening the app.
- Powerful Recurring Reminders: Whether it's a weekly task, a monthly bill, or an hourly check-in, Yad handles complex repetition logic.
- Cross-Device Syncing: (Android focused) When a task is marked done on one device, it updates immediately on others.
- 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:
- Technical Limits: I learned the hard way about the differences between local notifications and APNs on iOS.
- Working Under Pressure: How to prioritize features (focusing on Android sync) when resources (time and money) are scarce.
- 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
- expo.io
- react-native
- revenuecat
Log in or sign up for Devpost to join the conversation.