Swadesh is an iPhone app that reminds me to call family and friends. I set how often I want to speak to each person, and it tracks who I have fallen behind on.
I moved from Dhaka to Pennsylvania and staying in touch got harder than I expected. I wanted something that would tell me who I had not spoken to in a while.
The apps I found all wanted an account and a copy of my contacts. I did not want that list living on someone else's server, so I wrote my own.
There is no account, no server and no sync. Everything is stored on the device.
The list is ordered by how far past its target each contact is, measured as a fraction of that contact's own target. Someone on a weekly target who I last called three weeks ago ranks above someone on a monthly target at four weeks. Because the ranking depends on the current time, it is computed in memory on every refresh.
Reminders are scheduled for an hour that falls between 9am and 9pm for me and for the person I am calling. The app starts at 10am on the due day and walks forward until it finds one. It compares minutes of the day, so time zones offset by 30 or 45 minutes work correctly. Two twelve hour windows always intersect except at an offset of exactly twelve hours, and that case is flagged and resolved in favour of the recipient.
A call is logged only after iOS confirms it opened WhatsApp or the dialler. If the handoff fails, nothing is written to the record.
iOS notification triggers fire once and are then discarded, so an ignored reminder is never repeated on its own. The app rebuilds its pending reminders on launch and on return to the foreground, which also re-resolves anything pinned to a stale time zone.
In daily use. Contacts, targets, the dashboard, notifications and importing from the iOS address book are working. The cadence and sorting logic has no UI or database dependencies, so it runs under a test script without Xcode.