User:KHarlan (WMF)/Outreachy Web Push Notifications

Brief summary
This project will result in implementing real-time notifications in the browser, using web push notifications and the Notifications framework in MediaWiki.

There is a work-in-progress patch that can be used as a starting point for this project. The remaining tasks would be to:


 * Review the existing tasks and create a technical architecture plan, consulting relevant documentation and linked tasks in Phabricator
 * Clean up and carefully review the existing work-in-progress patch
 * Update the WebPush package dependency
 * Add support for  notifications in the Notifications framework
 * Add UX for subscribing and unsubscribing
 * Implement ServiceWorker registration in MediaWiki core
 * Possibly also implement T34284 Update Echo Notifications in real time without page reloads in response to push notification receipt

Skills required
PHP, JavaScript, CSS, some MySQL

Project tags: Notifications · Workboard

Possible mentor(s)

 * @kostajh
 * @Catrope

Microtasks and project tags

 * Updating web push dependency to version 4
 * Load OOUI icons in a non hacky way
 * Refactor  to use check if push notifications are disabled, VAPID key is not set, support PEM file. Factor out sending notifications into a class or method
 * Add tests for existing patch