A feed reader + readability mashup for reading on handheld devices
HCL JavaScript HTML Makefile Smarty CSS
Fetching latest commit…
Cannot retrieve the latest commit at this time.



Build Status


Feedpaper is a feed reader + readability mashup for reading on handheld devices.

This is handy for anyone who wants to speed-read the articles from a personalised list of web site feeds.

This is an experimental project using serverless architecture with App.js, Terraform, and Amazon Web Services.


Architecture Diagram

Component Description
feedpaper-web Single page App.js web app served as AWS S3 static website
feedpaper-api Content API using AWS API Gateway, and content fetcher using AWS Lambda
feedpaper-data Content storage using AWS DynamoDB with scheduled content expirer using AWS Lambda


Set AWS resources:

  • Create an S3 bucket for storing Terraform state files
  • Create an IAM group with the following managed policies:
    • AWSLambdaFullAccess
    • IAMFullAccess
    • AmazonS3FullAccess
    • AmazonAPIGatewayInvokeFullAccess
    • AmazonDynamoDBFullAccess
    • AWSLambdaDynamoDBExecutionRole
    • AmazonAPIGatewayAdministrator

Download Feedpaper code:

git clone https://github.com/cliffano/feedpaper


Create feedpaper.json, feeds.json, and terraform.tfvars files under a configuration directory. Have a look at conf/ci for example configuration files.

Set up the following environment variables:

export FEEDPAPER_ENV=local
export FEEDPAPER_CFG=/path/to/conf_dir
export TF_CFG_BUCKET=<aws_s3_bucket_name>
export TF_CFG_REGION=<aws_region>


Set up content storage:

cd feedpaper-data && make all

Set up content API:

cd feedpaper-api && make all

Get the REST API ID from content API output:

aws_api_gateway_deployment.api_deployment: Creating...
  rest_api_id: "" => "<some_rest_api_id>"

Set this REST API ID in feedpaper.json's api.host property:

  "api": {
    "protocol": "https",
    "host": "<some_rest_api_id>.execute-api.<aws_region>.amazonaws.com",
    "version": "0",
    "path": "feedpaper-<env>"

Set up single page web app:

cd feedpaper-web && make all