A gateway for various cloud notification services

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD-3-Clause licensed and maintained by Drew Hess


pinpon is a silly little service that implements an Internet-enabled doorbell in Haskell, using Amazon Simple Notification Service to notify subscribers that the button has been pushed. Effectively, it’s a simple REST service which, when POSTed to, will send a notification to an SNS topic. You can then build a client application which subscribes to that topic and notifies the user when the doorbell has been pressed. No such client application is included in the pinpon package, but an iOS app may be made available at some point in the future.

The package provides a pinpon-gpio executable, intended for use on Linux systems with GPIO functionality. When the specified GPIO pin is triggered (e.g., via a momentary switch such as this one), pinpon-gpio will POST a notification to the specified pinpon server.

Why not simply build the Amazon SNS functionality into the pinpon-gpio executable and eliminate the pinpon REST service? Chiefly because the host system running the pinpon-gpio executable may be particularly vulnerable to physical attacks (after all, it is presumably hooked up to a doorbell button that is exposed in a public space). I did not feel comfortable storing my Amazon AWS credentials on such a device, nor even allowing such a device to communicate directly with the public Internet. By proxying the AWS access via a more physically secure host running the pinpon server on my internal network, I can better protect my AWS credentials and limit network access on the GPIO device to just the pinpon service.


pinpon changelog


  • Fix hlint 2.1 issue.

  • Fix a bounds typo in package.yaml.


  • Bump hlint upper bound.


  • This package now uses Protolude.

  • Switch to hpack.

  • We only support GHC 8.0.2 and 8.2.2 now.

  • The test-hlint cabal flag is now disabled by default.

  • Updated copyright year.

  • Requires hlint 2.0.*.

  • Much improved Nix support, including a default fixed nixpkgs revision, Hydra jobsets, and Nix/Hydra builds against LTS package sets.

  • Test on armv7l.


  • All dependencies should now have PVP bounds.

  • swagger.json must be a data-file for Stack tests.

  • Remove an unused mellon-core dependency from stack.yaml.

  • Requires Servant 0.11+.

  • Other minor fixes.

Initial release.

comments powered byDisqus