The Kindle Archive Project

June 06, 2021

Over the past year I’ve been working on this project to archive my saved highlights and notes from my Kindle app. As an avid reader and patron of the San Francisco Public Library, this project has morphed from its original inception as a Flask app to its current form:

Kindle Archive Project Diagram

What really helped me execute this project was this Medium article written by a developer, Sawyer Hollenshead. He provides an overview of the technologies he used to execute his project, which is live here.

I copied the same workflow of using AWS SES, AWS Lambda and AWS S3. By contrast, I chose to save my data to my GitHub repo and use GatsbyJS to build the site. Further, the site is deployed from Netlify.

I’m still working on this project and continuing to improve it. At this point it’s functional so we’ll see what happens next. Throughout the course of the year, the project became a forcing function (pun unintended) to develop a few different skills and overcome challenges along the way. This list includes:

  • AWS

    • How to set-up AWS as a new user
    • How to use AWS SES and AWS Lambda
    • How to configure a domain for AWS SES services
    • How to set permissions to AWS S3 buckets
    • How to write an AWS Lambda function
    • How to deploy additional Python libraries to AWS Lambda on MacOS
    • How to update AWS Lambda functions from the command-line
    • How to set AWS Lambda environment variables
    • How to access AWS S3 data and process the data using the Boto3 library
  • Domains

  • Deployment

    • How to deploy a Flask app to PythonAnywhere
  • Docker

    • How to copy files from Docker to local machine
  • Flask

    • How to write and deploy a Flask app
  • GatsbyJS / ReactJS

    • How to add global CSS to a GatsbyJS site
    • How to source JSON directly to a GatsbyJS site
    • How to write React components
  • Python Libraries

    • How to write a HTML parser in Python
    • How to use the PyGithub library to copy files processed from an AWS Lambda function to a Github repo

This list is not comprehensive and I hope to further document the “how” component of getting this done.