Skip to content

A demo app to send lab reports of animals using Gatsby, TypeScript, and event-driven architecture with API Gateway, EventBridge, and SNS.

Notifications You must be signed in to change notification settings

SharjeelSafdar/project14d-pet-theory-event-driven

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Gatsby

Project 14D: Pet Theory App for Lab Reports with Event-Driven Architecture

Link to Web App

A serverless JAMstack App with Gatsby, TypeScript, ApiGateway, EventBridge, SNS, and CloudFront. The web app has been deployed to AWS CloudFront, and can be accessed here.

Frontend

The following are some of the features of this project:

  • An HTML form to submit a dummy lab report of an animal
  • Lab report is submitted through an API Gateway endpoint.
  • The API Gateway puts the lab report data in the form of an event on the EventBridge default bus.
  • EventBridge publishes a message on an SNS topic.
  • SNS sends the message to an email subscriber and a phone number subscriber.
  • Bootstrapped with GatsbyJS
  • Additionally, includes TypeScript support for gatsby-config, gatsby-node, gatsby-browser and gatsby-ssr files.
  • Site hosted on AWS CloudFront.
  • CI/CD with GitHub Actions
  • Completely typed with TypeScript

Backend

This AWS CDK App deploys the backend infrastructure for Project 14D. The app consists of two stacks.

Stack 1: API Gateway API, EventBridge and SNS

It contanis the AWS services for delivering the lab report. It has the following constructs:

  • An API Gateway Rest API with CORS enabled which puts the lab report data as an event on EventBridge default bus
  • An EventBridge rule to publish a message (containing the lab report data) on an SNS topic
  • An email and a phone number subscribers to the SNS topic

Architecture Diagram

Stack 2: CloudFront Distribution and S3 Bucket

It contains the infrastructure to deploy frontend client. It has the following constructs:

  • A S3 Bucket with public access to store the static assets of Gatsby web app
  • A Cloud Front Distribution to serve the static assets through a CDN. It also has the error handling capability: redirects any 404s to /404.html.

Architecture Diagram