Home

Awesome

Puffery

An iOS App written in SwiftUI to send push notifications fueled by Siri Shortcuts.

You can follow other's channels and directly receive updates. There is no algorithm deciding wether you should receive notifications or not.

Download on the App Store

Join the public beta on TestFlight.

Do you want to stay up to date with Puffery-dev-builds? There is a channel for that!

Do you need inspiration or help? Head over to our GitHub discussions!

Server-Configuration

envDescriptionDefault
DATABASE_URLConnection string for SQL Database.postgres://puffery-test:puffery-test@localhost:5431/puffery-test
REDIS_URLConnection string for Queues.redis://localhost:6378
PUFFERY_IN_PROCESS_JOBSRuns jobs inside the server.false
APNS_KEY_IDKey ID for Auth Key.Only required for push notifications
APNS_TEAM_IDTeam ID for Auth Key.Only required for push notifications
APNS_KEY_PATHPath to private auth key for APNS.private/AuthKey_$APNS_KEY_ID.p8
APNS_ENVIRONMENTPath to private auth key for APNS.production
SENDGRID_API_KEYAPI Key for sending emails.Only required for emails
PUFFERY_STATISTICS_CHANNELSComma separated list of notify keys to receive stats.[]

Run Server

$ cd PufferyServer
$ swift run puffery serve --hostname 0.0.0.0 --auto-migrate

To access your server from the mobile app add 127.0.0.1 local.puffery.app to /etc/hosts and select the Puffery (Local) scheme.

API-Routes

$ cd PufferyServer && swift run puffery routes
+--------+----------------------------------------------+
| GET    | /                                            |
+--------+----------------------------------------------+
| GET    | /hello                                       |
+--------+----------------------------------------------+
| POST   | /api/v1/register                             |
+--------+----------------------------------------------+
| POST   | /api/v1/login                                |
+--------+----------------------------------------------+
| POST   | /api/v1/confirmations/login/:confirmation_id |
+--------+----------------------------------------------+
| POST   | /api/v1/confirmations/email/:confirmation_id |
+--------+----------------------------------------------+
| GET    | /api/v1/profile                              |
+--------+----------------------------------------------+
| PUT    | /api/v1/profile                              |
+--------+----------------------------------------------+
| POST   | /api/v1/devices                              |
+--------+----------------------------------------------+
| PUT    | /api/v1/devices/:device_token                |
+--------+----------------------------------------------+
| POST   | /api/v1/channels                             |
+--------+----------------------------------------------+
| GET    | /api/v1/channels/:subscription_id            |
+--------+----------------------------------------------+
| POST   | /api/v1/channels/:subscription_id            |
+--------+----------------------------------------------+
| DELETE | /api/v1/channels/:subscription_id            |
+--------+----------------------------------------------+
| GET    | /api/v1/channels                             |
+--------+----------------------------------------------+
| GET    | /api/v1/channels/shared                      |
+--------+----------------------------------------------+
| GET    | /api/v1/channels/own                         |
+--------+----------------------------------------------+
| POST   | /api/v1/notify-inbound-email                 |
+--------+----------------------------------------------+
| POST   | /api/v1/notify/:notify_key                   |
+--------+----------------------------------------------+
| POST   | /notify/:notify_key                          |
+--------+----------------------------------------------+
| GET    | /api/v1/channels/messages                    |
+--------+----------------------------------------------+
| GET    | /api/v1/channels/:subscription_id/messages   |
+--------+----------------------------------------------+
| POST   | /api/v1/channels/:subscription_id/messages   |
+--------+----------------------------------------------+
| POST   | /api/v1/channels/subscribe                   |
+--------+----------------------------------------------+

License

Puffery is available under the MIT license.