‘Expired To Be’ is an app where you can set reminders for ‘things that expire’. Initially only available from the Chrome web store as a Chrome browser extension, it can now be accessed from any browser.
Both apps share the same source code, which is all open source on GitHub.
A Special Treat
The one and only; SPA Integration Diagram: This diagram details the layout and integration between my custom React ‘Alarms API’ and the Chrome extension core files.
SPA Alarm Notifications
The Expired To Be ‘SPA version’ provides a few options for ‘expiration notifications’ (although unfortunately some platforms still don’t support web-based notifications; in which case it’ll fall back to using the default, which is `alert()`). Modals are the other option, but are more passive.
- The SPA and Chrome extension do not share alarms. The extension uses Chrome’s own internal storage and alarm system, which is not accessible from a normal web page.
- The SPA web page (tab) must stay open to allow the alarms to run. The Chrome extension runs in the browser’s background.
For my React-based Alarms API, I borrowed the `TimerBox` component from my previous ‘Done (for now)’ SPA. (Done (for now) is a multi-timer; it was my 3rd React app, and my 1st TypeScript project.)
Because the ‘Expired To Be’ and ‘Done (for now)’ web apps both share the same `localStorage` (one for alarms, the other for timers), I made the Done (for now) timers viewable from within the ‘Expired To Be’ web app. I then went back and made the ‘Expired To Be’ alarms viewable from inside the ‘Done (for now)’ web app as well. Neither app can modify each other’s alarms or timers, but there’s room for some cross-app adaptability.
Always open to feedback. PRs welcome. ::tiphat::
Keith D Commiskey