node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »

ponyfoo

Pony Foo Build Status

Open-source blogging platform

Development

Merely install dependencies and run the application using npm start. The start command will compile and bundle all necessary assets, set up file watchers, as well as nodemon and browser-sync so that you're able to continuously develop.

npm install
npm start

Deployments

First off you'll need to download and install the awscli tool.

pip install awscli

Then configure it with your AWS credentials. Make sure to leave the default JSON format output as-is, the deployment scripts revolve around using jq to parse the awscli output.

aws configure

You'll probably want to create an instance on EC2. The command below will spin up a new instance, give it an IP address, and set it up for node and nginx. Note that the database server must be hosted separately. For this purpose I chose MongoLab as my DBaaS provider of choice, the free tier should suffice.

npm run launch

Configure it with it's private environment variables, which you should place in an .env file in the application root. The command below will push the .env file via rsync to the server and restart it, so make sure you only update environment variables when necessary.

npm run configure

Whenever you want to deploy, use the command below. It'll bump the version by a single patch digit and upload the diff since the last deployment. Uploading occurs via rsync, then nginx and node are hot-reloaded thanks to forever and recluster.

npm run deploy

You can then quickly access the deployed site on your favorite browser.

npm run open

If you run into trouble, you can ssh into the instance and ammend the situation by yourself.

npm run ssh

Usage

To access the production site visit ponyfoo.com, or use curl to get a plaintext edition.

curl -L -H "Accept: text/plain" ponyfoo.com/articles/last

License

MIT