Nietzsche

A serverless application that fetches quotes from Goodreads and saves it to DynamoDB with example use cases using `Lambda`, `SNS`, `SQS`, `Step Functions`, `DynamoDB`, `API Gateway`, `CloudWatch`

View on Github

Nietzsche

serverless Open Source Love FOSSA Status

A Serverless application that fetches quotes from Goodreads and saves it to DynamoDB. (About 88K+ unique quotes)

It also includes:

  1. Quotes Search API
  2. Tweet Quotes

Architecture

High Level Block Diagram

logo

Quote Tweet State Machine

logo

Requirements

  1. AWS CLI
  2. Serverless

Setup

  1. Get Twitter API keys
  2. aws ssm put-parameter --name nietzsche-twitter-consumer-secret --type String --value $CONSUMER_SECRET --profile default --overwrite --region eu-west-1
  3. aws ssm put-parameter --name nietzsche-twitter-consumer-key --type String --value $CONSUMER_KEY --profile default --overwrite --region eu-west-1
  4. aws ssm put-parameter --name nietzsche-twitter-access-token --type String --value $ACCESS_TOKEN --profile default --overwrite --region eu-west-1
  5. aws ssm put-parameter --name nietzsche-twitter-access-token-secret --type String --value $ACCESS_TOKEN_SECRET --profile default --overwrite --region eu-west-1
  6. npm i

Deploy

npm run deploy

Invoke

Start Quotes Scrapping Job

serverless invoke -f dispatchScrappers --stage prod

Tweet Random Quote

serverless invoke stepf --name tweetQuoteStateMachine --stage prod

Contribute

Help make this app better and future proof.

  • Clone the code
  • Install the dependencies with npm install
  • Create a feature branch git checkout -b new_feature
  • Lint with standard npm run lint

License

This software is released under the MIT license. See the license file for more details.