Skip to content

Latest commit

 

History

History
31 lines (19 loc) · 1.33 KB

README.md

File metadata and controls

31 lines (19 loc) · 1.33 KB

Paragone

Store your receipts in the ☁️ instead of bloating your wallet! 💸

How it works?

Architecture

The whole application architectures consist of 2 stacks:

ParagoneFrontendStack

Stores frontend app built with React in Amazon S3 using Amazon CloudFront as CDN

ParagoneStack

Handles the backend for the applications.

  • GraphQL API serves as an entry point for the client app and uses Cognito for authentication.
  • User gets presigned URL to the S3 bucket to store (getUploadUrl) and retrieve (getDownloadUrl) receipt images.
  • Inserting new object into the bucket triggers the asynchronous processing. The sendReceiptToTextract Lambda stores the image metadata in DynamoDB and starts the image processing using Textract.
  • Once the analysis is completed, the sendTextractResultToDynamo Lambda is triggered based on SNS notification. It retrieves the text detection results from Textract, performs naive heuristics to get the price and stores it in DynamoDB.
  • When the data is inserted or updated in DynamoDB, it triggers receiptProcessed Lambda performing GraphQL mutation. It triggers the GraphQL subscription, pushing the update to the web app client.

Demo