2017-05-29 21:35:24 +02:00
# [![site](media/repo-banner@2x.png)](https://www.bigchaindb.com)
2015-12-19 20:56:04 +01:00
2017-05-29 21:35:24 +02:00
> The fabulous cat of blockchain websites.
2015-12-19 20:56:04 +01:00
2016-06-23 16:23:53 +02:00
[![Build Status ](https://travis-ci.com/ascribe/bigchain-website.svg?token=3psqw6c8KMDqfdGQ2x6d&branch=master )](https://travis-ci.com/ascribe/bigchain-website)
2017-05-31 20:35:20 +02:00
[![css bigchaindb ](https://img.shields.io/badge/css-bigchaindb-39BA91.svg )](https://github.com/bigchaindb/stylelint-config-bigchaindb)
2017-05-29 21:35:24 +02:00
< img src = "http://forthebadge.com/images/badges/powered-by-electricity.svg" height = "20" / >
< img src = "http://forthebadge.com/images/badges/as-seen-on-tv.svg" height = "20" / >
< img src = "http://forthebadge.com/images/badges/uses-badges.svg" height = "20" / >
---
2016-03-03 17:56:56 +01:00
2017-03-20 16:16:03 +01:00
[Live ](https://www.bigchaindb.com ) | [Styleguide ](https://www.bigchaindb.com/styleguide/ ) | [Beta ](http://beta.bigchaindb.com ) | [Gamma ](http://gamma.bigchaindb.com )
2015-12-22 15:35:12 +01:00
2017-05-29 21:35:24 +02:00
---
## Table of Contents
* [Development ](#development )
* [Install dependencies ](#install-dependencies )
* [Development build ](#development-build )
* [Continuous deployment: always be shipping ](#continuous-deployment-always-be-shipping )
* [Manual deployment ](#manual-deployment )
* [Prerequisite: authentication ](#prerequisite-authentication )
* [Staging build & beta deployment ](#staging-build--beta-deployment )
* [Production build & live deployment ](#production-build--live-deployment )
* [Coding conventions ](#coding-conventions )
* [(S)CSS ](#scss )
2017-05-31 20:35:20 +02:00
* [JavaScript ](#javascript )
2017-05-29 21:35:24 +02:00
* [Authors ](#authors )
2015-12-19 20:56:04 +01:00
## Development
2015-12-20 05:22:45 +01:00
You need to have the following tools installed on your development machine before moving on:
- [node.js ](http://nodejs.org/ ) & [npm ](https://npmjs.org/ )
2016-11-11 00:15:26 +01:00
- (optional) use [Yarn ](https://yarnpkg.com ) instead of npm for faster dependency installations
2015-12-20 05:22:45 +01:00
- [Ruby ](https://www.ruby-lang.org ) (for sanity, install with [rvm ](https://rvm.io/ ))
- [Bundler ](http://bundler.io/ )
### Install dependencies
Run the following command from the repository's root folder to install all dependencies.
```bash
npm i & & bundle install
```
2016-11-11 00:15:26 +01:00
or
```bash
yarn & & bundle install
```
2015-12-20 05:22:45 +01:00
### Development build
Spin up local dev server and livereloading watch task, reachable under [https://localhost:1337 ](https://localhost:1337 ):
```bash
gulp
```
2017-05-29 21:35:24 +02:00
## Continuous deployment: always be shipping
2016-03-03 17:54:45 +01:00
2017-05-29 21:35:24 +02:00
![shipping ](https://cloud.githubusercontent.com/assets/90316/26559768/e21e9724-44b1-11e7-90cf-6ef6ebb06d09.gif )
The site gets built & deployed automatically via Travis. This is the preferred way of deployment, it makes sure the site is always deployed with fresh dependencies and only after a successful build.
Build & deployment happens under the following conditions on Travis:
2016-03-03 17:54:45 +01:00
- every push builds the site
2017-05-29 21:35:24 +02:00
- **live deployment**: every push to the master branch initiates a live deployment
- **beta deployment**: every new pull request and every subsequent push to it initiates a beta deployment
2016-03-03 17:54:45 +01:00
2017-05-29 21:35:24 +02:00
## Manual deployment
2015-12-20 05:22:45 +01:00
2017-05-29 21:35:24 +02:00
For emergency live deployments or beta & gamma deployments, the manual method can be used. The site is hosted in an S3 bucket and gets deployed via a gulp task.
2015-12-20 05:22:45 +01:00
2017-05-29 21:35:24 +02:00
### Prerequisite: authentication
2016-01-08 12:00:57 +01:00
To deploy the site, you must authenticate yourself against the AWS API with your AWS credentials. Get your AWS access key and secret and add them to `~/.aws/credentials` :
```
[default]
aws_access_key_id = < YOUR_ACCESS_KEY_ID >
aws_secret_access_key = < YOUR_SECRET_ACCESS_KEY >
```
This is all that is needed to authenticate with AWS if you've setup your credentials as the default profile.
2017-05-29 21:35:24 +02:00
If you've set them up as another profile, say `[bigchaindb]` you can grab those credentials by using the `AWS_PROFILE` variable like so:
2015-12-20 05:22:45 +01:00
```bash
2017-05-29 21:35:24 +02:00
AWS_PROFILE=bigchaindb gulp deploy --live
2016-01-08 12:00:57 +01:00
```
In case that you get authentication errors or need an alternative way to authenticate with AWS, check out the [AWS documentation ](http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html ).
2017-03-20 16:16:03 +01:00
### Staging build & beta deployment
2017-05-29 21:35:24 +02:00
The staging build is a full production build but prevents search engine indexing & Google Analytics tracking.
2016-01-08 15:42:05 +01:00
```bash
# make sure your local npm packages & gems are up to date
npm update & & bundle update
2017-03-20 16:16:03 +01:00
# make staging build in /_dist
gulp build --staging
2016-01-08 15:42:05 +01:00
# deploy contents of /_dist to beta
2016-06-23 16:23:53 +02:00
gulp deploy --beta
2016-01-08 15:42:05 +01:00
```
2017-03-07 16:24:23 +01:00
There's also a second beta deployment target called gamma under http://gamma.bigchaindb.com:
```bash
2017-03-20 16:16:03 +01:00
# build preventing search engine indexing & Google Analytics tracking
gulp build --staging
2017-03-07 16:24:23 +01:00
# deploy contents of /_dist to gamma
gulp deploy --gamma
```
2016-01-08 12:00:57 +01:00
### Production build & live deployment
```bash
# make sure your local npm packages & gems are up to date
npm update & & bundle update
# make production build in /_dist
2015-12-20 05:22:45 +01:00
gulp build --production
2016-01-08 12:00:57 +01:00
# deploy contents of /_dist to live
2016-06-23 16:23:53 +02:00
gulp deploy --live
2015-12-20 05:22:45 +01:00
```
2017-05-06 18:03:40 +02:00
## Coding conventions
### (S)CSS
2017-05-31 20:35:20 +02:00
Follows [stylelint-config-bigchaindb ](https://github.com/bigchaindb/stylelint-config-bigchaindb ) which itself extends [stylelint-config-standard ](https://github.com/stylelint/stylelint-config-standard ).
2017-05-06 18:03:40 +02:00
2017-05-31 20:35:20 +02:00
Lint with [stylelint ](https://stylelint.io ) in your editor or run:
2017-05-06 18:03:40 +02:00
2017-05-31 20:35:20 +02:00
```bash
npm test
```
### JavaScript
It's a wild mess right now between old school vanilla js, jQuery and some ES2015 features. Don't bother with the old stuff unless dependency updates break it.
New js should follow [eslint-config-ascribe ](https://github.com/ascribe/javascript ). Linting in this repo is not setup for it yet.
2017-05-29 21:35:24 +02:00
## Authors
- Matthias Kretschmann ([@kremalicious](https://github.com/kremalicious)) - [BigchainDB ](https://www.bigchaindb.com )