PunctuOwlity can alert you on the day an event is scheduled using the browser’s built-in Web Notifications API. On first use, the app redirects you to an SMS preference screen to decide whether to allow browser notification prompts. From there, you enable a per-event alert toggle each time you add or edit an event. When the browser has been granted notification permission and an event’s alert is on, a desktop notification fires automatically the first time the events screen is loaded on the event’s day.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/PunctuOwlity/llms.txt
Use this file to discover all available pages before exploring further.
Enabling a Reminder on an Event
Every event has an alert boolean that defaults tofalse. To turn on the reminder for a specific event, check the toggle labelled “Would you like to be reminded of this event?” on the add or edit form before saving.
Open the Add/Edit form
Tap the floating + button to create a new event, or tap the edit icon on an existing card to modify it.
Fill in the required fields
Enter the event title, date, and time. The reminder fires on the matching calendar date, so an accurate date is required for the notification to trigger.
Enable the alert toggle
Switch on “Would you like to be reminded of this event?” The
eventAlert checkbox maps directly to the alert field stored in the event object.SMS Preference Screen
The first time you reach the events screen after logging in, PunctuOwlity checks whether thepunctuowlity-sms key exists in localStorage. If the key is absent, the app redirects you to a one-time preference screen (sms.html) before you can proceed.
The screen asks: “Thanks for joining PunctuOwlity. Before you continue on to the app, PunctuOwlity would like to send you SMS alerts for upcoming events. Do you want to receive sms alerts?” Two buttons are available:
| Button | Stored value |
|---|---|
| Allow SMS Notifications | localStorage.setItem('punctuowlity-sms', 'allowed') |
| No, thanks | localStorage.setItem('punctuowlity-sms', 'denied') |
events.html. Because the key now exists, this screen is never shown again on the same device.
Browser Notification Flow
When the events screen loads, the web app evaluates three conditions before firing a notification. All three must be true simultaneously:Notification.permission === 'granted'event.alert === trueevent.fullDate === today(compared as ISOYYYY-MM-DDstrings)
punctuowlity-sms preference controls only whether the browser permission prompt is requested — it does not gate notification delivery. If sms is 'allowed' and notification permission is still at the default prompt state, the app requests permission immediately on page load:
'granted', the app iterates over all events with alert: true and a matching date, firing a new Notification() for each:
Notification Content
Each notification displays:- Title: the event’s title (e.g.
"Dentist") - Body:
Scheduled forfollowed by the formatted 12-hour time (e.g."Scheduled for 01:30PM")
De-duplication Within a Session
To prevent the same notification from appearing multiple times when you reload the events page, PunctuOwlity writes a flag tosessionStorage immediately after firing each notification. The key follows the pattern:
Alarm Icon on Event Cards
The alert state of each event is also visible directly on the event card via a colour-coded alarm icon:| State | Icon | Colour |
|---|---|---|
alert: true | alarm-on (bell) | Teal — #03b0a3 |
alert: false | alarm-off (bell with slash) | Red — #900 |
Android — SMS Permission
The Android app handles reminders throughSmsPermissionActivity, which requests the SEND_SMS Android permission at runtime using the standard permission model. MainActivity checks for the permission on startup and launches SmsPermissionActivity if it has not yet been granted:
Browser notifications require the user to explicitly Allow the browser permission prompt. If you dismissed or blocked the prompt previously, you will need to re-enable notifications for the site in your browser’s site settings before the app can show them.