The app needs to receive udp packets sent by nearby devices on the same wifi network as the app.
The small udp packets will be sent by some nearby devices using their app (you dont have to develop that app). The user of that app will switch on or switch off sending the packets. When the packets are being sent over the same network as your app they will be sent on an interval of about 5 seconds. The packets contain 3 bytes - the first byte is the identifying byte that you will use to identify which nearby device is sending the packets.
All udp packets sent by a nearby device will have the same payload of 3 bytes and you have to deal with the first byte here - the first byte of every other device on the network will be different and will identify that device on the network using the udp payload.
Your app should read the payload of the udp packets received and check with its own database locally if that byte matches any byte stored in its own database. If there is no match then ignore the packet. If there is a match then play an alarm and vibrate (ringtone and vibration on/off should be configurable in the settings of the app).
The user can snooze the alarm and while it is snoozed, there should be no response to packets from that id. User can go the transmitting device and shut off the udp packet sending - when this happens the snoozed state should terminate and it should no longer show up in snoozed alarms and it should begin to respond to udp packets from this device if it starts sending the packets later on.
Multiple devices will be sending udp packets from the same network. So appropriate logic must be applied to manage these calls.
Select ringtone or select ringtone off for alarm
Select vibration on/off for the alarm
Enter the Text description for each device that it wants to respond to and store that device id along with text description in a local database on the phone - About 150-250 device ids and text descriptions need to be stored at the most. User should be able to edit and delete these ids and descriptions. Should display all bytes sent as payload in the udp packet.
The app can be hybrid and be written in react or other hybrid technology that works on ios and android.