broccoli-plugins-server
API server for [broccoliplugins.com](Broccoli Plugins)
Getting started
- Install Node.js
- Install Postgresql
- Import
schema.sql
in to your Postgres database - Change relevant .env environment variables
Heroku
- Setup a Node.js app and deploy code
- Setup a database via the heroku-postgresql addon:
heroku addons:add heroku-postgresql:hobby-dev
- Setup environment variables via
config:set
or the control panel - Import
schema.sql
in to database:heroku pg:psql --app broccoli-plugins < schema.sql
- Run the update.js file manually or as a background-process:
heroku run node update.js
S3 Configuration
Whichever bucket you decide to use, you'll need to setup a policy on the bucket to allow public reading of files, and a CORS policy, like so:
Bucket Policy (allows public reading of files)
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<BUCKET NAME>/*"
}
]
}
CORS Policy
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
IAM Policy
{
"Statement": [
{
"Effect": "Allow",
"Action": "S3:*",
"Resource": "arn:aws:s3:::<BUCKET NAME>/*",
"Condition": {}
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::<BUCKET NAME>",
"Condition": {}
}
]
}
Environment variables
You'll need to setup a few environment variables. The easiest way to do this locally is to place a .env
file in the root of the project with the following envrionment variables:
PORT=3000
DATABASE_URL='postgres://'
AWS_ACCESS_KEY=''
AWS_SECRET_KEY=''
AWS_BUCKET_NAME=''
AWS_REGION=''
PAGES_FILENAME='pages-dev.json'
PLUGIN_JSON_FILENAME='plugins-dev.json'
FEED_FILENAME='feed-dev.xml'
MAX_ITEMS_PER_PAGE='100'