Periscope allows users to express their appreciation for streams but the audience remains anonymous. Send a pug allows people to display their appreciation by including their username below the floating pugs.

What it does

Users click a pug button to send floating pugs on other screens who are watching the same screen.

How I built it

Service technologies including AWS AppSync, Cognito, Lambda, Dynamo DB (on demand), Kinesis, Kinesis Analytics. Front end is written using ReasonML/reason-apollo, and bs-react-native (on top of react-native-web).

Challenges I ran into

Cognito requires a password for the accounts I am generating from the Twitch tokens. I was being told the Cognito API response that the same password I created was wrong during the verification step. The password was not wrong. The issue was that the original password was too short. This took a whole day to figure out.

Accomplishments that I'm proud of

Having a useful application of Kinesis Analytics and the speed with which AppSync can publish notifications to subscribers with such little code on my part. I learned a lot of ReasonML and really appreciate the strong types I can generate from AppSync / GraphQL schema.

What I learned

Applications of a large variety of AWS serverless technologies, reason-apollo, and more.

What's next for Send a Pug

Customizable characters, collaborative scoring (e.g. limiting the number of pugs one can send but allow users to earn more pugs if they are part of a "wave" of appreciation towards the streamer).

Built With

  • api-gateway
  • appsync
  • cognito
  • graphql
  • kinesis
  • kinesis-analytics
  • lambda
  • reason-apollo
  • reasonml
  • serverless-framework
Share this project: