System Block Diagram
Figure 1. High level design of the Patreon Shout application
Figure 1 depicts the high-level design of the application from the perspective of patrons and creators. From the content creator’s perspective, they decide to use Patreon Shout to forward their Patreon posts to other platforms so that their outreach to future potential patrons is greater. To do this they sign up to PatreonShout by logging into the application through Patreon, then they select which social platforms they wish to output their posts to and complete all tasks required to output to the chosen social platforms. Afterwards, the Post Endpoint will use Patreon’s API to collect the creator’s posts on Patreon and save them in the MySQL database. The Post Parser does by having Patreon trigger a new post endpoint inside of the Post Parser that will send us the post information. Furthermore, we need both of these options when getting posts from Patreon because we can only use Patreon’s API for a given creator when we have that specific creator’s permission to retrieve posts from Patreon. This means that when we don’t have a creator that has signed up to our website, we will use Selenium to web scrape the posts off of Patreon. Those posts will subsequently be given to our Java backend and be output to the creator specified social platforms. Then, from a patron’s perspective, they will be able to see these posts on the specified social platforms. Furthermore, a patron will also be able to view the content creators they follow on the Patreon Shout website. To do this, they will initially follow the same procedure as the content creators do by signing up to Patreon Shout through Patreon. Then Patreon Shout will automatically get the creators that the patron follows and output their posts to the Patreon Shout main feed for the user to view. The backend of our application, including the “Java App API Interface”, the MySQL database, and the “Post Parser” will be hosted on AWS. The “Java App API Interface” and the “Post Parser” will run in EC2 instances and deployed using Elastic Beanstalk. Furthermore, S3 buckets will be used to contain the application versions for Elastic Beanstalk and our MySQL database will be using RDS through AWS. The frontend of our application uses hostinger.com for the domain and hosting of our website.