🐉🐲 **Highly in development right now, nothing in `master` is final. Content & structure development [happening in Google Doc](https://docs.google.com/a/bigchaindb.com/document/d/1bgQozCf47XGOViYT0KOCwRV2UdPlpeDQh1JuAPaHi-A/edit?usp=sharing)** 🐲🐉
Most content on the site can be edited on GitHub without messing with HTML markup.
The site's source and structure is in the [`_src/`](_src) folder. Ignore everything with an underscore in its name.
When viewing a file on GitHub you will see a small pencil icon in the top right. Click that to edit the file.
## Pages
All pages are simple Markdown files. Markdown is a way of telling the site how an element should be marked up, like headings & bold text:
```markdown
I'm a simple paragraph. No fancy symbols needed.
# I'm a heading 1
## I'm a heading 2
You can make text **bold like so**
```
## Special pages
Some pages like front page source their content dynamically during site build. This is so we have a single source of truth for content used in multiple places on the site.
### Front page
Content for all sections on front page is coming from a data file:
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:
- every push builds the site
- **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
# Manual deployment
For emergency live deployments or beta deployments, the manual method can be used. The site is hosted in an S3 bucket and gets deployed via a gulp task.
## Prerequisite: authentication
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.
If you've set them up as another profile, say `[ipdb]` you can grab those credentials by using the `AWS_PROFILE` variable like so:
```bash
AWS_PROFILE=ipdb gulp deploy --live
```
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).
## Staging build & beta deployment
The staging build is a full production build but prevents search engine indexing & Google Analytics tracking.
```bash
# make sure your local npm packages & gems are up to date
npm update && bundle update
# make staging build in /_dist
# build preventing search engine indexing & Google Analytics tracking
gulp build --staging
# deploy contents of /_dist to beta
gulp deploy --beta
```
## 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
gulp build --production
# deploy contents of /_dist to live
gulp deploy --live
```
# Coding conventions
Lint with ESLint & [stylelint](https://stylelint.io) in your editor or run:
```bash
npm test
```
## (S)CSS
Follows [stylelint-config-bigchaindb](https://github.com/bigchaindb/stylelint-config-bigchaindb) which itself extends [stylelint-config-standard](https://github.com/stylelint/stylelint-config-standard).
# js
Follows [ascribe/javascript](https://github.com/ascribe/javascript) which itself extends [airbnb/javascript](https://github.com/airbnb/javascript).