Perfecty Push WP Plugin โšก๏ธ

December 28, 2024 ยท View on GitHub

tests deployment License PHP compatibility WP compatibility

Self-hosted Push Notifications from your Wordpress server for free! ๐Ÿฅณ

Perfecty Push for Wordpress

Perfecty Push WP is an Open Source plugin for WordPress that allows you to send web Push Notifications directly from your server: No hidden fees, no third-party dependencies and you own your data. ๐Ÿ‘

Install it now: https://wordpress.org/plugins/perfecty-push-notifications/

More information about the project: https://perfecty.org/

Features โœจ

  • Open Source, send Push Notifications from your server for free!
  • 10.000 notifications/minute in a 2 GB, 1vCPU host. Can achieve better performance with better specs.
  • PWA compatible / AMP (Transitional)
  • Can be called by other plugins using the Perfecty_Push_Integration class
  • No third-party dependencies
  • Migrate users from other push services like OneSignal
  • Send push notifications on posts publishing
  • Customize the public widget
  • The user authorization tokens stay in your server
  • Offline browser notifications through Push API (Safari is not supported yet)
  • Built-in Push Server based on web-push-php

Requirements ๐Ÿงฉ

  • PHP >= 7.2
  • gmp extension for message encryption (optional)

Note: The gmp extension is optional and recommended for better performance.

Documentation

https://docs.perfecty.org/

External integrations ๐Ÿ›ธ

You can use and extend Perfecty Push Notifications from third party plugins or your own code.

Send notifications through Perfecty Push

You can use the Perfecty_Push_Integration class to send Push Notifications from other plugins:

  • Perfecty_Push_Integration::notify( $wp_user_id, $message, $title = '', $image_url = '', $url_to_open = '' ) Send a notification to a registered WordPress user. If the user has multiple devices, it will send the notification to all the devices the user has subscribed.

  • Perfecty_Push_Integration::broadcast( $message, $title = '', $image_url = '', $url_to_open = '' ) Schedule a broadcast notification that will be sent to all the Push Notifications users.

Hooks

  • perfecty_push_broadcast_scheduled($payload) executed when a broadcast notification has been scheduled. You have access to the provided payload.

  • perfecty_push_wp_user_notified($payload, $wp_user_id) executed when a notification has been sent to a WordPress user. You have access to the provided payload and WP User ID.

Filters

  • perfecty_push_custom_payload($payload) use this filter to customize the $payload array content. More information about the payload array here.

Local development ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป

To see it in action in your local development environment you can run the following commands:

make up
make setup

You can now go to https://localhost/wp-login.php > Plugins > Activate the Perfecty Push plugin.

Available commands ๐Ÿ‘พ

# start the service containers
make up

# stop de service containers
make down

# remote console
make console

# run the unit tests
make test

# run the formatter
make format

# setup all: make wordpress, make composer, make phpunit and make sdk
make setup

# setup wordpress and plugins
make wordpress

# install all the composer dependencies
make deps

# setup wordpress as a testing environment for phpunit
make phpunit

# generates the redistributable bundle in dist/perfecty-push-notifications.zip
make bundle

Demo ๐ŸŽญ

Admin Dashboard

Dashboard

Public view

Screenshot preview

Testing โœ…

This project relies on automated tests as in the Wordpress Core guidelines.

Run all the test suites:

make test

Run a single test:

make console
cd wp-contents/plugins/perfecty-push/
phpunit --filter test_schedule_broadcast_async

Troubleshooting ๐Ÿ› 

Not intended for production: In case the plugins cannot be installed on your local installation do:

make console
chown -R www-data wp-content

License ๐Ÿ‘“

The WordPress Plugin is an Open Source project licensed under GPL v2.

The bell icon SVG code is a Font Awesome icon, a MIT License.

Banner photo by NASA on Unsplash

Contributing ๐Ÿš€

If you're interesting on contributing to this project, feel free to submit your suggestions as a PR or an issue directly to any of the projects repos. Remember to read the Code of Conduct and the license information of each project, which in general use the MIT license, except the WordPress plugin (GPL v2).

Open Source contributors ๐Ÿ”ฅ

Rowinson GallegoMocioF

Special Thanks

Jetbrains

Thanks to Jetbrains for supporting this Open Source project with their magnificent tools.