Parent task for more details {T251190}
**Project Information **
* Name of tool/project: Push Notifications Infrastructure
* Project home page: https://www.mediawiki.org/wiki/Wikimedia_Product_Infrastructure_team/Push_Notifications_Infrastructure
* Name of team requesting review: Product Infrastructure
* Primary contact: Michael Holloway
* Target date for deployment: August 13, 2020
* Link to code repository / patchset:
** https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/services/push-notifications (entire repo)
** https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/Echo
*** Relevant files/directories:
**** db_patches/echo_push_provider.sql
**** db_patches/echo_push_subscription.sql
**** includes/api/Push/*
**** includes/Push/*
**** includes/EchoHooks.php (see onApiMainModuleManager())
**** includes/EchoServices.php
**** tests/phpunit/api/Push/*
**** tests/phpunit/integration/**/*
**** tests/phpunit/unit/Push/*
**** ServiceWiring.php
* TechCom RFC: {T249065}
**Description of the tool/project: **
The project consists of the following:
- Push subscription management and notification request support in the Echo extension; and
- A standalone service for batching requests for submission to third party push providers.
**Dependencies**
Various npm modules. Modules to be used in production by the service and not already present in the service template include:
- [[ https://www.npmjs.com/package/apn | apn ]]
- [[ https://www.npmjs.com/package/buffered-queue | buffered-queue ]]
- [[ https://www.npmjs.com/package/express-rate-limit | express-rate-limit ]]
- [[ https://www.npmjs.com/package/firebase-admin | firebase-admin ]]
- [[ https://www.npmjs.com/package/promise.allsettled | promise.allsettled ]]
- [[ https://www.npmjs.com/package/proxy-agent | proxy-agent ]]
**Has this project been reviewed before?**
No
**Working test environment**
This code is deployed to the Beta Cluster. A custom docker-compose setup for testing can be created if needed.
**Post-deployment**
The software components created in the course of this work will be maintained primarily by the Product Infrastructure team.