diff --git a/README.md b/README.md index cab2723d1..9af4fbdb7 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,13 @@ Thanks for using! :smile: Before you go too far, here is the great docker repo for HackMD. With docker, you can deploy a server in minutes without any downtime. +Heroku Deployment +--- + +You can quickly setup a sample heroku hackmd application by clicking the button below. + +[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) + [migration-to-0.4.0](https://github.com/hackmdio/migration-to-0.4.0) --- diff --git a/app.json b/app.json new file mode 100644 index 000000000..2ed969350 --- /dev/null +++ b/app.json @@ -0,0 +1,33 @@ +{ + "name": "HackMD", + "description": "Realtime collaborative markdown notes on all platforms", + "keywords": [ + "Collaborative", + "Markdown", + "Notes" + ], + "website": "https://hackmd.io", + "repository": "https://github.com/hackmdio/hackmd", + "logo": "https://github.com/hackmdio/hackmd/raw/master/public/hackmd-icon-1024.png", + "success_url": "/", + "scripts": { + "postdeploy": "./node_modules/.bin/sequelize db:migrate" + }, + "env": { + "BUILD_ASSETS": { + "description": "Our build script variable", + "value": "true" + }, + "NPM_CONFIG_PRODUCTION": { + "description": "Let npm also install development build tool", + "value": "false" + }, + "DB_TYPE": { + "description": "Specify database type. See sequelize available databases. Default using postgres", + "value": "postgres" + } + }, + "addons": [ + "heroku-postgresql" + ] +} diff --git a/bin/heroku b/bin/heroku new file mode 100755 index 000000000..12f9cc177 --- /dev/null +++ b/bin/heroku @@ -0,0 +1,35 @@ +#!/bin/bash + +set -e + +if [ "$BUILD_ASSETS" = true ]; then + BUILD_ASSETS=false npm install && npm run assets:install + + # setup config files + cat << EOF > .sequelizerc +var path = require('path'); + +module.exports = { + 'config': path.resolve('config.json'), + 'migrations-path': path.resolve('lib', 'migrations'), + 'models-path': path.resolve('lib', 'models'), + 'url': process.env.DATABASE_URL, + 'dialect': process.env.DB_TYPE +} + +EOF + + cat << EOF > config.json + +{ + "production": { + } +} + +EOF + + cp public/js/config.js.example public/js/config.js + + # build app + npm run build +fi diff --git a/bin/setup b/bin/setup index 8cd20dc7b..19edeecf9 100755 --- a/bin/setup +++ b/bin/setup @@ -2,7 +2,9 @@ # run command at repo root CURRENT_PATH=$PWD -cd $(git rev-parse --show-toplevel) +if [ -d .git ]; then + cd $(git rev-parse --show-toplevel) +fi if ! type npm > /dev/null then @@ -34,7 +36,7 @@ if [ ! -f .sequelizerc ]; then fi echo "install npm and bower packages" -npm install && bower install +BUILD_ASSETS=false npm install && bower install cat << EOF diff --git a/package.json b/package.json index 80a0e22b0..abd6096f7 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,10 @@ "license": "MIT", "scripts": { "dev": "webpack --config webpack.config.js --progress --colors --watch", - "build": "webpack --config webpack.production.js --progress --colors" + "build": "webpack --config webpack.production.js --progress --colors", + "assets:install": "bower install", + "postinstall": "bin/heroku", + "start": "node app.js" }, "dependencies": { "Idle.Js": "github:shawnmclean/Idle.js", @@ -121,6 +124,7 @@ "devDependencies": { "babel-core": "^6.17.0", "babel-loader": "^6.2.5", + "bower": "^1.7.9", "bower-webpack-plugin": "^0.1.9", "css-loader": "^0.25.0", "ejs-loader": "^0.3.0",