
TickIt Cards
What is the TickIt Cards App?
TickIt Cards is a free React Native (Expo) app for Android and iOS that helps you to track your gift cards. It reminds you when the expiry date is approaching and lets you track how much money is left on each gift card.
Notifications
One of the most important parts of TickIt Cards is reminder reliability. I did not want “set and forget” notifications that silently fail, and I also did not want to spam users with too many alerts too early. So I built a scheduling strategy that adapts based on how far away the expiry date is.
Every time I save a card, notification setup is handled in the same transaction-like flow: cancel old schedule, evaluate current card state, schedule the right trigger, then persist the returned notification ID.
Cadence strategy (adaptive reminders)
When a card is saved, this happens:
- I schedule the notifications for the gift card when saving before writing to storage.
- scheduleNotification first checks for the required notification permissions.
- It cancels any existing scheduled notification to avoid duplicates.
- It applies guardrails (skip if notifications disabled, no expiry, zero value, or already expired).
- It selects cadence based on time-to-expiry.
- It schedules the notification and returns the notification ID.
- I store that ID back on the card for future reference (to cancel it later maybe).
This design keeps notification state deterministic: one card -> one active schedule.
I use a simple but practical “urgency ladder”:
- More than 6 months left -> monthly reminders
- More than 1 month left -> weekly reminders
- 1 month or less (but still in future) -> daily reminders
- Expiry today/past -> no scheduling
This keeps reminders low-noise when expiry is distant and increases frequency only when action becomes urgent.
Reliability techniques that made the biggest difference
A few implementation details made this much more stable:
- Always cancel before re-scheduling to prevent duplicate notifications after edits.
- Store the returned notification ID so future updates can cancel the exact old schedule.
- Validate notification eligibility early (permissions, expiry date, value > 0, notifications enabled).
- Keep scheduling coupled to save operations so notification state stays in sync with card state.
What this gives users in practice
Users do not need to manually tune reminder frequency. They just add a card and expiry date, and TickIt Cards escalates reminders naturally as the date approaches. It feels simple from the UI side, but under the hood the app is continuously recalculating and maintaining the optimal schedule whenever card data changes.