Compare commits

...

22 Commits

Author SHA1 Message Date
Matthias Kretschmann 0eebe25c90
Merge pull request #55 from danacr/master
Removed the news regarding the shutdown.
2018-10-02 11:23:14 +02:00
Matthias Kretschmann 9fd6bf0a2e
Merge pull request #54 from msutherl/master
Remove Morgan from README
2018-10-02 11:20:43 +02:00
Trent McConaghy c79fe48b4d
Update README.md 2018-10-02 10:28:06 +02:00
Dan Acristinii 168ba6951c
Removed the news regarding the shutdown.
This information is obsolete
2018-10-02 10:26:00 +02:00
Morgan Sutherland f375228d04
Remove Morgan from README
Morgan no longer works on this project
2018-10-01 23:37:54 -07:00
Matthias Kretschmann 6eaf796a0a
Merge pull request #50 from ipdb/feature/revival
Revival
2018-10-01 17:27:03 +02:00
Matthias Kretschmann 545917de99
update privacy policy 2018-10-01 17:22:28 +02:00
Matthias Kretschmann 43bacf0475
change main email 2018-10-01 16:59:31 +02:00
Matthias Kretschmann 8199f4bb33
banner updates 2018-10-01 15:25:04 +02:00
Matthias Kretschmann fbe210fb7e
photos fix 2018-10-01 14:45:12 +02:00
Matthias Kretschmann 2aca73c43e
copy updates 2018-10-01 14:24:10 +02:00
Matthias Kretschmann 85a9e3ad19
rebased against master 2018-10-01 13:42:40 +02:00
Matthias Kretschmann 68603c3314
remove all CTAs 2018-10-01 13:29:39 +02:00
Matthias Kretschmann bd05b0deb5
restore front page 2018-10-01 13:29:05 +02:00
Matthias Kretschmann dd7c23c9bf
reduced front page 2018-10-01 13:28:05 +02:00
Matthias Kretschmann 8dd2379c78
update all build tools 2018-10-01 13:26:44 +02:00
Matthias Kretschmann a1c1949134
reduced front page 2018-09-28 16:04:27 +02:00
Matthias Kretschmann f24bb443ad
fix deployment command 2018-09-28 13:22:26 +02:00
Matthias Kretschmann f390dd3022
Merge pull request #49 from ipdb/fix/dependencies
update all build tools
2018-09-28 13:16:13 +02:00
Matthias Kretschmann afd2d09de2
update TOC 2018-09-28 13:11:16 +02:00
Matthias Kretschmann 0dc0f09742
remove gulp-util, Travis updates 2018-09-28 13:06:58 +02:00
Matthias Kretschmann a6b689ed84
update all build tools 2018-09-28 12:08:19 +02:00
56 changed files with 1401 additions and 230 deletions

View File

@ -1,3 +1,3 @@
{
"presets": ["env"]
"presets": ["@babel/env"]
}

View File

@ -1,6 +1,6 @@
language: ruby
rvm:
- 2.4
- 2.5
cache:
bundler: true
@ -8,7 +8,7 @@ cache:
- $TRAVIS_BUILD_DIR/node_modules
before_install:
- nvm install 9
- nvm install 10
before_script: "_ci/setup.sh"
script: "_ci/build.sh"

View File

@ -3,40 +3,36 @@
> The blockchain database network for the decentralized stack
> https://ipdb.io
**Note: As of February 2nd, 2018, IPDB will be shutting down. [Read about why](https://ipdb.io).**
[![Build Status](https://travis-ci.org/ipdb/website.svg?branch=master)](https://travis-ci.org/ipdb/website)
[![Build Status](https://travis-ci.com/ipdb/website.svg?branch=master)](https://travis-ci.com/ipdb/website)
[![css bigchaindb](https://img.shields.io/badge/css-bigchaindb-39BA91.svg)](https://github.com/bigchaindb/stylelint-config-bigchaindb)
[![js ascribe](https://img.shields.io/badge/js-ascribe-39BA91.svg)](https://github.com/ascribe/javascript)
[![Greenkeeper badge](https://badges.greenkeeper.io/ipdb/website.svg)](https://greenkeeper.io/)
---
[**Live**](https://ipdb.io) | [**Styleguide**](https://ipdb.io/styleguide/)
---
# Contents
## Table of Contents
- [Content editing](#content-editing)
- [Pages](#pages)
- [Special pages](#special-pages)
- [Pages](#pages)
- [Special pages](#special-pages)
- [Front page](#front-page)
- [Development](#development)
- [Install dependencies](#install-dependencies)
- [Development build](#development-build)
- [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--browser-support)
- [(S)CSS](#scss)
- [js](#js)
- [Authors & Contributors](#authors--contributors)
- [Prerequisite: authentication](#prerequisite-authentication)
- [Staging build & beta deployment](#staging-build-beta-deployment)
- [Production build & live deployment](#production-build-live-deployment)
- [Coding conventions & Browser support](#coding-conventions-browser-support)
- [(S)CSS](#s-css)
- [js](#js)
- [Authors & Contributors](#authors-contributors)
- [License](#license)
# Content editing
---
## Content editing
Most content on the site can be edited on GitHub without messing with HTML markup.
@ -44,7 +40,7 @@ The site's source and structure is in the [`_src/`](_src) folder. Ignore everyth
When viewing a file on GitHub you will see a small pencil icon in the top right. Click that to edit the file.
## Pages
### 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:
@ -57,24 +53,22 @@ I'm a simple paragraph. No fancy symbols needed.
You can make text **bold like so**
```
## Special pages
### 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.
- [`_src/_data/content-front.yml`](_src/_data/content-front.yml)
- [`_src/_data/content-foundation.yml`](_src/_data/content-foundation.yml)
# Development
## Development
You need to have the following tools installed on your development machine before moving on:
- [node.js](http://nodejs.org/) & [npm](https://npmjs.org/)
- (optional) use [Yarn](https://yarnpkg.com) instead of npm for faster dependency installations
- [Node.js](http://nodejs.org/) & [npm](https://npmjs.org/)
- [Ruby](https://www.ruby-lang.org) (for sanity, install with [rvm](https://rvm.io/))
- [Bundler](http://bundler.io/)
## Install dependencies
### Install dependencies
Run the following command from the repository's root folder to install all dependencies.
@ -82,13 +76,7 @@ Run the following command from the repository's root folder to install all depen
npm i && bundle install
```
or
```bash
yarn && bundle install
```
## Development build
### Development build
Spin up local dev server and livereloading watch task, reachable under [https://localhost:1337](https://localhost:1337):
@ -96,7 +84,7 @@ Spin up local dev server and livereloading watch task, reachable under [https://
gulp
```
# Continuous deployment: always be shipping
## Continuous deployment: always be shipping
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.
@ -106,15 +94,15 @@ Build & deployment happens under the following conditions on Travis:
- **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
## 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
### 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`:
```
```bash
[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>
@ -130,7 +118,7 @@ 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
### Staging build & beta deployment
The staging build is a full production build but prevents search engine indexing & Google Analytics tracking.
@ -146,7 +134,7 @@ gulp build --staging
gulp deploy --beta
```
## Production build & live deployment
### Production build & live deployment
```bash
# make sure your local npm packages & gems are up to date
@ -159,7 +147,7 @@ gulp build --production
gulp deploy --live
```
# Coding conventions & Browser support
## Coding conventions & Browser support
Lint with ESLint & [stylelint](https://stylelint.io) in your editor or run:
@ -169,11 +157,11 @@ npm test
As a rule of thumb, make your CSS & JavaScript work in the last 2 versions of modern browsers, and ideally in IE 11. Adapt the `browserslist` key values in the [`package.json`](package.json) when a change in visitor statistics allows that.
## (S)CSS
### (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
### js
Follows [ascribe/javascript](https://github.com/ascribe/javascript) which itself extends [airbnb/javascript](https://github.com/airbnb/javascript).
@ -181,21 +169,19 @@ Try to not use any jQuery, always prefer vanilla JavaScript.
At the moment, jQuery is only used for the form submissions for its simple `$.ajax` functionality, and neither `XMLHttpRequest` or `fetch` seem to work with MailChimp.
# Authors & Contributors
## Authors & Contributors
- Greg McMullen ([@gmcmullen](https://github.com/gmcmullen)) - [IPDB Foundation](https://ipdb.io)
- Morgan Sutherland ([@msutherl](https://github.com/msutherl)) - [IPDB Foundation](https://ipdb.io)
- Matthias Kretschmann ([@kremalicious](https://github.com/kremalicious)) - [BigchainDB](https://www.bigchaindb.com)
- Matthias Kretschmann ([@kremalicious](https://github.com/kremalicious)) - [BigchainDB](https://www.bigchaindb.com)/[Ocean Protocol](https://oceanprotocol.com)
- Members of the BigchainDB development team
- Representatives of Caretakers in the IPDB
# License
## License
For all code in this repository the Apache License, Version 2.0 is applied.
```
Copyright Interplanetary Database Foundation 2017. All rights reserved.
```text
Copyright Interplanetary Database Foundation 2018. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@ -7,7 +7,7 @@ echo " Installing dependencies "
echo "============================================="
echo "$(tput sgr0)" # reset
npm install gulpjs/gulp.git#4.0 -g
npm install gulp@next -g
npm install
# Travis does that automatically after selecting ruby

View File

@ -18,7 +18,7 @@ login:
# Form actions
forms:
contact: '//formspree.io/contact@ipdb.io'
contact: '//formspree.io/contact@ipdb.global'
newsletter: "//foundation.us15.list-manage.com/subscribe/post?u=036bac2d4e3a3ea3de876a8dd&amp;id=8a21e3e9ca"
# Urls

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="189" height="85" viewBox="0 0 189 85">
<g fill="#000000" transform="matrix(1 0 0 -1 0 85)">
<path d="M23.2079033 83.5860575C22.9478826 82.8048075 22.5828295 80.4423075 22.4094408 78.4181408L22.0900974 74.6885575 17.0861767 75.0564742C11.0178196 75.5031408 6.31996234 73.0339742 4.02057335 68.1885575 1.99777379 63.9260575 1.98769935 62.1060575 3.96562181 58.2785575 5.61762335 55.0818908 11.9671908 51.3952242 14.8505231 51.9585575 17.1927077 52.4164742 17.9151956 54.9752242 15.7023137 54.9752242 14.7036943 54.9752242 12.5083802 56.3606408 10.8049656 58.0652242 5.11073701 63.7648075 7.50445948 72.0243908 14.8505231 72.0243908 20.2408115 72.0243908 21.5205996 70.2131408 22.3790509 61.3689742 22.9374751 55.6143908 23.5719989 53.3768908 24.6451359 53.3768908 26.9874454 53.3768908 27.585876 81.7868908 25.2840308 83.6985575 24.0063659 84.7593908 23.5911903 84.7368908 23.2079033 83.5860575M86.9262976 75.8981408C80.1127227 72.8314742 76.9080487 63.8098075 80.7055333 58.3852242 83.0730289 55.0027242 87.7780465 52.8443908 92.7819672 52.8443908 98.3179187 52.8443908 99.2849826 54.5577242 94.2723196 55.4860575 90.1201478 56.2548075 84.3710509 60.7223075 84.3710509 63.1802242 84.3710509 65.3648075 89.6946897 66.9848075 95.0174958 66.4210575 101.085894 65.7777242 102.470091 66.3039742 102.470091 69.2539742 102.470091 74.9527242 93.4205707 78.8206408 86.9262976 75.8981408L86.9262976 75.8981408zM94.9900201 72.5573075C96.9732712 70.1598075 95.4433703 67.7623075 91.9302183 67.7623075 87.8846192 67.7623075 84.8651985 70.5473075 86.6161544 72.6639742 88.2559584 74.6464742 93.3152469 74.5818908 94.9900201 72.5573075L94.9900201 72.5573075zM29.4268775 73.0902242C29.7816897 71.3393908 32.0736269 65.8443908 34.493035 60.9423075 38.7009077 52.4181408 38.8303769 51.8648075 37.2079326 49.3277242 36.1668507 47.6998075 34.0139575 46.3877242 31.6718145 45.9543908 27.0938099 45.1068908 26.6555714 43.2539742 31.0330445 43.2539742 36.1136892 43.2539742 39.9393989 47.9423075 46.0748218 61.6885575 49.1662623 68.6148075 51.4001258 74.5410575 51.0479363 74.8827242 49.6266897 76.2639742 47.3607712 74.1556408 46.7167557 70.8523075 45.9482667 66.9098075 42.1266368 60.3031408 40.6146368 60.3031408 40.0272381 60.3031408 38.3291522 63.0735575 36.8264357 66.4835575 32.7409967 75.7539742 28.0350216 79.9556408 29.4268775 73.0902242M59.35228 75.3352242L54.0290575 74.6885575 53.6968504 66.1639742C53.3105245 56.2539742 53.9403857 52.8443908 56.1584297 52.8443908 57.3802689 52.8443908 57.7553549 54.2827242 57.7553549 58.9710575 57.7553549 62.3810575 58.2511676 66.8702242 58.8731192 69.0943908 59.8868086 72.7168908 60.3289187 73.0902242 63.6110245 73.0902242 68.8747161 73.0902242 70.531172 70.1064742 70.531172 60.6227242 70.531172 53.5898075 70.7351588 52.8443908 72.660128 52.8443908 74.6350531 52.8443908 74.7895002 53.5368908 74.7895002 62.3810575 74.7895002 71.4385575 74.6504562 72.0268908 72.0215245 74.0839742 69.0712095 76.3927242 68.5079562 76.4481408 59.35228 75.3352242M121.420463 73.6068908C116.310386 70.8198075 113.741817 63.0231408 116.33578 58.1718908 117.889826 55.2660575 122.911232 52.8443908 127.382705 52.8443908 130.044108 52.8443908 132.17348 53.7810575 134.834883 56.1227242 139.604428 60.3193908 140.271339 62.7539742 138.169859 68.2948075 136.876417 71.7048075 135.587553 73.1768908 133.131802 74.0489742 128.660328 75.6373075 124.88241 75.4943908 121.420463 73.6068908L121.420463 73.6068908zM129.618234 72.0285575C132.965698 70.7639742 135.80278 64.6718908 134.830304 60.8360575 134.073888 57.8523075 130.678965 54.9752242 127.914736 54.9752242 126.922278 54.9752242 124.614729 56.2206408 122.804659 57.7331408 118.333185 61.4693908 118.087569 67.5098075 122.272212 70.8210575 125.494787 73.3706408 125.891936 73.4356408 129.618234 72.0285575L129.618234 72.0285575zM145.481328 74.2623075C145.249033 74.0298075 145.055454 69.0406408 145.055454 63.2868908 145.055454 53.8031408 145.243621 52.7698075 146.918811 53.0573075 148.409163 53.3131408 148.837119 54.6556408 149.057758 59.7702242 149.448663 68.8277242 150.112661 70.8718908 153.040496 72.0335575 154.530848 72.6252242 155.701899 73.5118908 155.701899 74.0489742 155.701899 74.9014742 146.315593 75.0973075 145.481328 74.2623075"/>
<path d="M164.484987,72.9835575 C161.717011,71.1931408 161.035945,70.0743908 161.078408,67.3893908 C161.107132,65.5777242 161.842317,63.0760575 162.675333,61.9548075 C163.547897,60.7802242 164.218972,58.8114742 164.218972,57.4260575 C164.218972,54.8418908 164.431701,54.7543908 171.351848,54.5073075 C176.568914,54.3206408 179.124161,52.5127242 179.124161,49.0081408 C179.124161,45.4677242 175.929894,44.2164742 167.625967,44.5031408 C158.49402,44.8185575 135.899778,41.2539742 116.203813,36.3909325 C87.2460156,29.2410158 86.8580245,29.2149742 63.0785773,32.8417658 C46.3637337,35.3910992 39.9323218,35.9171408 30.0748894,35.5416408 C13.9987326,34.9291825 10.9168253,33.4978492 6.75936653,24.7130158 C2.72484098,16.1882658 -0.19999647,6.64872417 0.58447842,4.5735575 C1.37494802,2.48222833 7.82401102,0.630990833 14.3182841,0.630990833 C20.8322482,0.630990833 37.9532337,3.21922417 49.877302,6.00647417 C54.9873791,7.20114083 60.5041808,7.93584917 62.013683,7.62301583 C72.803335,5.3871825 105.557368,2.43893667 120.568714,2.352345 C138.348452,2.249645 144.391456,3.03772417 157.192668,7.1291825 C175.929894,13.1178075 190.552417,26.3370575 188.312309,35.2621825 C187.736566,37.5554742 183.275917,41.3360575 179.762765,42.5081408 C179.220326,42.6889742 180.02878,44.0531408 181.625705,45.6514742 C183.22263,47.2498075 184.446967,49.0764742 184.446967,49.8606408 C184.446967,52.5173075 181.678991,55.1193908 178.059267,55.8652242 C173.374648,56.8306408 172.926709,59.2906408 176.994789,61.7085575 C179.451372,63.1685575 180.188639,64.4056408 180.188639,67.0698075 C180.188639,68.9877242 180.924657,71.5785575 181.83885,72.8768908 L183.489062,75.2210575 L175.717165,75.2210575 C169.648767,75.2210575 167.186771,74.7306408 164.484987,72.9835575 L164.484987,72.9835575 Z M174.013668,71.2735575 C176.625115,68.9239742 176.462342,64.9356408 173.694366,63.4448075 C169.682071,61.2843908 163.962947,67.0160575 165.665196,71.4914742 C166.471152,73.6102242 171.564994,73.4773075 174.013668,71.2735575 L174.013668,71.2735575 Z M180.082066,38.2351408 C184.494842,34.9472242 184.296683,30.4670992 179.502577,25.1391408 C174.996135,20.1309742 165.821725,13.8722242 161.344423,12.7519325 L158.469875,12.0326825 L160.817388,15.9752242 C163.990007,21.3031825 163.823903,23.3601408 159.960643,26.6034742 C155.652776,30.2195158 151.6563,31.1580158 134.515582,32.5788908 C126.637529,33.2320575 119.974654,33.9389325 119.770251,34.1433492 C119.566265,34.3476408 122.911232,35.2698075 127.16956,36.1830575 C133.938174,37.6347242 139.732232,38.5597242 154.104974,40.4823075 C155.847187,40.7156408 161.823584,40.7885575 167.253379,40.6435575 C175.238005,40.4298075 177.776183,39.9530992 180.082066,38.2351408 L180.082066,38.2351408 Z M55.5194099,31.5933908 C63.3978791,30.4416825 70.0003901,29.2932658 70.2647403,29.0284742 C70.527009,28.7662658 67.922639,27.9698492 64.5160597,27.2703075 C60.3772095,26.4205575 52.7514341,26.1786825 41.7856875,26.5493075 C25.6034159,27.0963075 17.2992388,28.4610575 17.2992388,30.5735575 C17.2992388,34.1436825 34.865748,34.6124325 55.5194099,31.5933908 L55.5194099,31.5933908 Z M121.633608,31.1064325 C121.633608,30.8712242 118.173326,29.8920575 113.914998,28.9220158 C109.677901,27.9568492 94.9109231,23.3907658 81.1772007,18.7989742 C67.4434782,14.2073075 50.3960112,9.13376583 43.3830289,7.55122417 C29.1166095,4.33201583 11.9453767,2.9783075 7.50445948,4.7229325 L4.63003591,5.85234917 L6.56537093,12.5653908 C9.0231619,21.0899742 11.6103804,27.2703075 12.7212341,27.2703075 C13.1858245,27.2703075 16.2345526,26.5575992 19.4285278,25.7022658 C27.3642381,23.5772658 56.6908769,23.5691408 70.9566302,25.6881408 C89.800846,28.4869325 102.921776,30.3878075 106.196388,30.7932658 C110.987163,31.3865158 121.633608,31.6025158 121.633608,31.1064325 L121.633608,31.1064325 Z M141.329157,29.4870992 C150.059375,28.2335158 156.766377,26.3443908 156.766377,25.1391408 C156.766377,21.6578492 123.230533,19.9249325 113.116535,22.8837658 C106.850811,24.7165992 108.964364,25.7258908 127.488861,29.7468908 C131.039897,30.5175575 134.622154,30.4503075 141.329157,29.4870992 L141.329157,29.4870992 Z M112.584088,20.3404742 C124.082282,18.4520992 142.310375,18.2750158 150.698394,19.9701825 C153.998401,20.6371825 157.057787,20.9119325 157.405397,20.5723908 C158.802082,19.2078075 153.253225,12.3495992 148.675179,9.78201583 C140.012817,4.9238075 128.553756,3.52047417 108.645062,4.8801825 C99.0630949,5.53464083 87.0003989,6.52926583 81.7096478,7.10122417 C64.1430553,9.0003075 62.3275729,9.82014083 70.531172,12.1475992 C72.5801985,12.7289742 79.0482447,14.8948075 84.903498,16.9604325 C100.766593,22.5564325 99.8057734,22.4390992 112.584088,20.3404742 L112.584088,20.3404742 Z"/>
<path d="M107.064372,56.5735575 C106.695947,55.6143908 106.921582,54.3560575 107.580168,53.6964742 C109.211646,52.0635575 112.244388,53.5898075 111.81435,55.8277242 C111.343516,58.2785575 107.925696,58.8152242 107.064372,56.5735575"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="137" height="86" viewBox="0 0 137 86">
<g fill="#000000" transform="translate(-.21 .593)">
<path d="M118.198711,84.837436 C117.756081,84.6898927 117.460995,84.1734909 117.460995,83.7308608 L117.460995,72.3700215 C115.838018,72.6651083 112.44452,74.4356287 110.674,74.5094003 C86.1818008,76.0586057 61.8371453,75.5422039 37.2711747,74.1405419 C29.3776045,73.6979118 24.5824451,70.2306427 20.5987742,66.6896019 C20.0823724,66.2469718 19.6397423,65.6567983 20.0823724,65.2141682 C20.5250025,64.6977664 20.9676326,64.9190815 21.4840344,65.2879399 C25.0988469,68.4601223 30.6317231,69.935556 38.0088915,70.3781861 C62.5010904,71.7798481 87.2883761,71.7060764 111.706803,70.156871 C113.846182,70.0093276 115.911789,70.156871 117.829853,69.7142409 C118.198711,69.6404692 118.493798,69.7142409 118.788885,69.935556 C119.083972,70.156871 119.231515,70.5257294 119.231515,70.8945879 L119.305287,81.5177103 C124.69062,74.5094003 129.928409,65.6567983 131.551386,61.8944425 C134.502254,54.9599042 134.79734,45.9597588 134.79734,37.2547002 C134.207167,25.2299158 133.248135,17.9265191 129.854637,13.9428482 C126.387368,9.81163391 119.89546,7.22962498 111.706803,6.49190815 C87.2146044,4.27875764 62.4273187,4.20498596 38.0088915,6.19682141 C31.2956683,6.78699488 25.9841071,8.18865687 22.3692946,11.0657525 C21.8528928,11.5083826 21.7791211,11.3608393 21.336491,10.8444375 C20.9676326,10.3280357 21.6315777,9.51654717 22.1479795,9.14768876 C26.1316504,5.97550636 30.5579515,2.50823724 37.7875764,1.91806377 C62.353547,-0.147543367 87.2883761,-0.811488519 111.780575,1.47543367 C120.559405,2.28692219 127.272629,7.45094003 131.108756,12.0985561 C134.871112,16.6724005 135.977687,24.3446556 136.567861,36.8858418 L136.567861,36.9596134 C136.567861,45.8859871 136.272774,55.1812193 133.174363,62.5583876 C131.256299,66.9846886 125.797195,75.9110623 119.379058,83.7308608 C119.157743,84.0259475 118.346255,84.9112077 118.198711,84.837436"/>
<g transform="translate(85.74 13.279)">
<path d="M0.516401785,0.295086734 L11.9510127,0.295086734 L22.6479068,19.3281811 L23.0167653,19.3281811 C22.5741352,16.4510854 21.9839617,13.5002181 21.9839617,10.5493507 L21.9839617,0.221315051 L33.3448009,0.221315051 L33.3448009,34.6726912 L21.9839617,34.6726912 L11.5083826,16.5986288 L11.1395242,16.5986288 C11.5083826,18.9593227 11.877241,21.1724732 11.877241,23.4593954 L11.877241,34.6726912 L0.516401785,34.6726912 L0.516401785,0.295086734 L0.516401785,0.295086734 Z"/>
<path d="M21.9839617,8.85260202 L33.3448009,8.85260202 L33.3448009,20.508528 L21.9839617,20.508528 L21.9839617,8.85260202 Z M0.516401785,11.9510127 L11.877241,11.9510127 L11.877241,23.6069387 L0.516401785,23.6069387 L0.516401785,11.9510127 Z"/>
</g>
<path d="M46.9352652,28.9184999 L48.1156121,28.9184999 C50.1812193,28.9184999 52.4681415,28.5496415 52.4681415,25.7463175 C52.4681415,23.0905369 50.0336759,22.9429936 48.1156121,22.9429936 L47.0090369,22.9429936 L47.0090369,28.9184999 L46.9352652,28.9184999 Z M35.4268826,13.5739898 L50.476306,13.5739898 C58.1485611,13.5739898 63.755209,17.705204 63.755209,26.1889476 C63.755209,33.1972576 59.5502231,37.5497869 52.9107716,37.5497869 L46.8614935,37.5497869 L46.8614935,47.8778226 L35.4268826,47.8778226 L35.4268826,13.5739898 Z"/>
<polygon points="62.501 13.574 84.559 13.574 84.559 22.943 74.526 22.943 74.526 26.263 83.674 26.263 83.674 35.189 74.526 35.189 74.526 38.509 84.854 38.509 84.854 47.952 62.501 47.952"/>
<path d="M12.5576607,30.9841071 C12.5576607,34.8940063 15.0658979,37.6235586 18.6807104,37.6235586 C22.2955229,37.6235586 24.8037601,34.8940063 24.8037601,30.9841071 C24.8037601,27.3692946 22.4430663,24.2708839 18.6807104,24.2708839 C14.9183545,24.3446556 12.5576607,27.3692946 12.5576607,30.9841071 M36.8285445,30.8365637 C36.8285445,41.9023162 28.7136594,48.4679961 18.7544821,48.4679961 C8.79530482,48.4679961 0.68041963,41.8285445 0.68041963,30.8365637 C0.68041963,20.0658979 8.8690765,12.9838163 18.7544821,12.9838163 C28.6398877,12.9838163 36.8285445,19.9921262 36.8285445,30.8365637"/>
<g transform="translate(45.165 43.525)">
<path d="M2.65578061,9.00014539 L0.516401785,9.00014539 L0.516401785,6.63945152 L5.16401785,6.63945152 L5.16401785,8.33620024 C6.63945152,7.08208162 8.11488519,6.41813647 9.51654717,6.41813647 C10.9182092,6.41813647 12.0247844,7.1558533 12.6149579,8.55751529 C14.45925,7.08208162 15.7871403,6.41813647 17.1888023,6.41813647 C19.3281811,6.41813647 20.5822997,7.74602677 20.5822997,10.1067206 L20.5822997,17.705204 L22.7954502,17.705204 L22.7954502,20.0658979 L18.0740625,20.0658979 L18.0740625,10.7706658 C18.0740625,9.44277549 17.483889,8.77883034 16.5248571,8.77883034 C15.4920535,8.77883034 14.1641632,9.44277549 12.9100446,10.5493507 L12.9100446,17.7789757 L15.1231951,17.7789757 L15.1231951,20.1396696 L10.4018074,20.1396696 L10.4018074,10.8444375 C10.4018074,9.44277549 9.66409054,8.9263737 8.85260202,8.9263737 C7.96734182,8.9263737 6.78699488,9.44277549 5.23778953,10.5493507 L5.23778953,17.7789757 L7.45094003,17.7789757 L7.45094003,20.1396696 L0.368858418,20.1396696 L0.368858418,17.7789757 L2.72955229,17.7789757 L2.72955229,9.00014539 L2.65578061,9.00014539 Z M33.3448009,12.0985561 C32.9021708,9.95917727 31.1316504,8.40997192 29.139815,8.40997192 C27.1479795,8.40997192 25.5987742,9.88540559 25.2299158,12.0985561 L33.3448009,12.0985561 Z M25.1561441,14.0903916 C25.5250025,16.6724005 27.1479795,18.2216058 29.5086734,18.2216058 C31.1316504,18.2216058 32.6808558,17.483889 33.6398877,16.0084553 L35.8530382,17.0412589 C34.4513762,19.2544094 32.164454,20.508528 29.4349017,20.508528 C25.3036874,20.508528 22.2790484,17.5576607 22.2790484,13.4264464 C22.2790484,9.07391707 25.6725459,6.34436478 28.9922716,6.34436478 C32.5333124,6.34436478 35.7792665,9.14768876 35.7792665,14.0903916 L25.1561441,14.0903916 L25.1561441,14.0903916 Z M43.1564349,18.0002908 C45.5171287,18.0002908 47.2138774,16.0084553 47.2138774,13.278903 C47.2138774,10.5493507 45.5171287,8.70505865 43.0826632,8.70505865 C40.795741,8.70505865 39.0989923,10.6968941 39.0989923,13.3526747 C39.0989923,16.1559987 40.795741,18.0002908 43.1564349,18.0002908 L43.1564349,18.0002908 Z M52.1565802,20.1396696 L47.2876491,20.1396696 L47.2876491,18.1478341 C45.9597588,19.6232678 44.5580968,20.3609846 42.7138048,20.3609846 C39.8367091,20.3609846 36.4432117,18.2953775 36.4432117,13.5002181 C36.4432117,9.44277549 39.1727639,6.34436478 42.7875764,6.34436478 C44.4843252,6.34436478 46.0335305,7.08208162 47.2876491,8.4837436 L47.2876491,3.17218239 L44.8531836,3.17218239 L44.8531836,0.811488519 L49.8696581,0.811488519 L49.8696581,17.7789757 L52.2303519,17.7789757 L52.1565802,20.1396696 Z"/>
<path d="M55.9927078,2.13937882 C55.9927078,3.02463902 55.3287626,3.76235586 54.4435024,3.76235586 C53.6320139,3.76235586 52.8942971,3.02463902 52.8942971,2.13937882 C52.8942971,1.25411862 53.5582422,0.516401785 54.4435024,0.516401785 C55.3287626,0.516401785 55.9927078,1.25411862 55.9927078,2.13937882 L55.9927078,2.13937882 Z M53.2631555,9.00014539 L51.1975484,9.00014539 L51.1975484,6.63945152 L55.7713927,6.63945152 L55.7713927,17.705204 L57.8369999,17.705204 L57.8369999,20.0658979 L51.1975484,20.0658979 L51.1975484,17.705204 L53.2631555,17.705204 L53.2631555,9.00014539 L53.2631555,9.00014539 Z M66.2469718,15.1231951 C65.1403965,14.2379349 64.0338213,13.7953048 62.927246,13.7953048 C61.525584,13.7953048 60.4927805,14.7543367 60.4927805,16.082227 C60.4927805,17.4101173 61.4518124,18.2953775 62.7797027,18.2953775 C63.8862779,18.2953775 65.2141682,17.705204 66.2469718,16.6724005 L66.2469718,15.1231951 L66.2469718,15.1231951 Z M70.9683595,20.1396696 L66.5420585,20.1396696 L66.5420585,18.4429209 C64.9190815,19.7708112 63.8125062,20.287213 62.4108442,20.287213 C59.9763787,20.287213 58.0583149,18.4429209 58.0583149,16.0084553 C58.0583149,13.5739898 60.1239221,11.655926 62.705931,11.655926 C63.8125062,11.655926 65.1403965,12.0985561 66.1732001,12.7625012 L66.1732001,11.0657525 C66.1732001,9.14768876 64.8453098,8.4837436 63.2961045,8.4837436 C62.0419858,8.4837436 61.1567256,9.00014539 60.5665522,10.1067206 L58.1320866,9.44277549 C59.2386619,7.37716835 61.0829539,6.34436478 63.6649629,6.34436478 C67.4273187,6.34436478 68.6814373,8.33620024 68.6814373,10.4755791 L68.6814373,17.8527474 L70.8945879,17.8527474 L70.9683595,20.1396696 L70.9683595,20.1396696 Z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 8.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -3,7 +3,7 @@
/* eslint-disable spaced-comment */
//=include _dnt.js
//=include _newsletter.js
//=include smooth-scroll/dist/js/smooth-scroll.js
//=include smooth-scroll/dist/smooth-scroll.js
//=include textarea-autogrow/textarea-autogrow.js
//=include cookie-banner/src/cookiebanner.js
/* eslint-enable spaced-comment */

View File

@ -52,6 +52,10 @@
transform: scale(1.2);
}
.logo-caretaker--riddle-and-code {
transform: scale(1.2);
}
//
// The logo fallback
//

View File

@ -1,8 +1,8 @@
.oceanprotocol {
.banner {
display: block;
box-shadow: none;
height: 100%;
background: #141414;
background: $brand-01;
padding-top: $spacer / 2;
padding-bottom: $spacer / 2;
@ -10,12 +10,12 @@
&:focus {
background: #fff;
.oceanprotocol__title {
.banner__title {
opacity: 1;
color: #141414;
}
.oceanprotocol__logo {
.banner__logo {
fill: #141414;
}
}
@ -28,22 +28,21 @@
}
}
.oceanprotocol__title {
font-size: .65rem;
.banner__title {
font-size: .7rem;
margin: 0;
opacity: .8;
color: #fff;
@media ($screen-sm) {
font-size: .75rem;
font-size: $font-size-small;
}
}
.oceanprotocol__logo {
.banner__logo {
fill: #fff;
width: 1rem;
height: 1rem;
margin-right: $spacer / 4;
margin-bottom: -.3rem;
margin-bottom: -.2rem;
display: inline-block;
}

View File

@ -19,7 +19,7 @@
@import 'alerts';
@import 'cookiebanner';
@import 'syntax';
@import 'oceanprotocol';
@import 'banner';
.content--page--markdown {
padding-top: $spacer * 2;

View File

@ -1,9 +1,287 @@
@import 'variables';
@import 'hero';
.section--farewell {
margin-top: -3rem;
z-index: 2;
.section--intro {
.section__description {
margin-bottom: $spacer * 2;
}
}
.feature {
padding-top: $spacer;
padding-bottom: $spacer;
&:first-child {
padding-top: $spacer * 2;
}
}
.feature__image {
margin: 0 auto;
background: $brand-05;
border-radius: $border-radius;
overflow: hidden;
max-width: 400px;
@media ($screen-sm) {
margin: 0;
}
img {
width: 100%;
height: auto;
max-width: 100%;
display: block;
}
}
.feature__title {
font-size: $font-size-h4;
margin-bottom: $spacer / $line-height;
}
.feature__list {
margin: 0;
padding: 0;
margin-top: $spacer;
li {
display: block;
color: $brand-02;
@media ($screen-sm) {
display: inline-block;
margin-left: $spacer * 2;
&:first-child {
margin-left: 0;
}
}
&:before {
content: '\2714';
font-size: $font-size-small;
color: $brand-success;
margin-right: $spacer / 4;
}
}
}
.connect__title {
font-size: $font-size-h3;
}
.roadmap {
border-left: .2rem solid $brand-02;
margin-left: $spacer * 2;
padding-left: $spacer;
margin-top: $spacer * 4;
margin-bottom: $spacer * 2;
@media ($screen-sm) {
margin-left: $spacer * 3;
padding-left: 0;
}
@media ($screen-md) {
margin-left: 0;
border-left: 0;
border-bottom: .2rem solid $brand-02;
.row {
display: flex;
justify-content: space-between;
}
}
}
.roadmap__step {
position: relative;
margin-bottom: $spacer * 2;
@media ($screen-md) {
text-align: center;
margin-bottom: 0;
padding-left: $spacer / 2;
padding-right: $spacer / 2;
}
&:after {
content: '\2714';
color: transparent;
text-align: center;
font-size: $font-size-mini;
line-height: 2;
width: 1.75rem;
height: 1.75rem;
border-radius: 50%;
display: inline-block;
background: $brand-05;
border: .2rem solid #fff;
position: absolute;
left: -2.95rem;
top: -.25rem;
@media ($screen-md) {
position: relative;
left: auto;
top: auto;
bottom: -.95rem;
}
}
&.is-complete {
&:after {
content: '\2714';
color: $brand-03;
background: $brand-success;
}
}
&.is-progress {
&:after {
background: $brand-07;
}
}
}
.roadmap__net,
.roadmap__target {
margin-bottom: 0;
}
.roadmap__target {
color: $brand-07;
}
.roadmap__time {
color: $brand-02;
font-size: $font-size-small;
@media ($screen-md) {
position: absolute;
left: 0;
bottom: -70%;
width: 100%;
}
}
//
// Get started
//
.section--getstarted {
counter-reset: getstarted-steps;
.feature__image {
background: rgba(255, 255, 255, .5);
}
.section__actions {
border-top: 0;
padding-top: 0;
margin-top: $spacer * 2;
}
}
.getstarted-bigchaindb,
.getstarted-tools {
padding-top: $spacer * 3;
margin-top: $spacer * 3;
border-top: .1rem solid darken($brand-05, 8%);
.grid {
margin-bottom: 0;
}
.feature__image {
background: #8e9eb0;
display: flex;
align-items: flex-end;
padding: $spacer;
padding-bottom: 0;
svg {
margin-bottom: -.5rem;
}
}
}
.getstarted {
color: $text-color;
counter-increment: getstarted-steps;
margin-top: $spacer * 2;
display: block;
padding-top: $spacer;
padding-bottom: $spacer;
@media ($screen-sm) {
display: flex;
flex-wrap: wrap;
height: 100%;
margin-top: 0;
padding-left: $spacer * 2;
padding-right: $spacer * 2;
.grid__col:first-child & {
border-right: .1rem solid darken($brand-05, 8%);
padding-left: 0;
}
.grid__col:last-child & {
border-left: .1rem solid darken($brand-05, 8%);
padding-right: 0;
}
}
}
.getstarted__title {
font-size: $font-size-h4;
margin-bottom: $spacer / 4;
a & {
color: $link-color;
}
&:before {
content: counter(getstarted-steps);
display: block;
background: rgba($brand-02, .3);
width: 1.75rem;
height: 1.75rem;
border-radius: 50%;
text-align: center;
line-height: 1.75rem;
font-size: $font-size-base;
font-weight: $font-weight-bold;
margin-bottom: $spacer / 1.5;
color: $text-color;
}
}
.getstarted__text {
opacity: .9;
}
// Community tools
.tool {
margin-bottom: $spacer * 2;
&:last-child {
margin-bottom: 0;
}
}
.tool__title {
font-size: $font-size-h5;
margin-bottom: $spacer / 4;
.icon {
fill: inherit;
opacity: .5;
margin-left: $spacer / 2;
width: $font-size-mini;
margin-bottom: -.2rem;
}
}
//
@ -11,12 +289,6 @@
//
.articles {
max-width: 100%;
margin-top: $spacer;
margin-bottom: -$spacer;
.button {
padding-bottom: 0;
}
}
.article {

81
_src/_data/board.yml Executable file
View File

@ -0,0 +1,81 @@
#
# HEADS UP!
#
# Possible keys:
# - name
# - position
# - bio
# - social (optional)
# - prefix (optional): used to prefix the name, like Dr.
#
# The photo is grabbed automatically based on the webified version of the name.
# Each photo needs to be put as a square JPG in _src/_assets/img/board/ with the file name reflecting the name, e.g. David Holtzman would be david-holtzman.jpg
#
- name: Joachim Lohkamp
position: President
bio: |
Joachim Lohkamp is an entrepreneur and tech-enthusiast with a heart for activism. As the founder of Jolocom, he has been working at the forefront of the decentralization movement in Berlin since 2014. With Jolocom, he is providing the identity solution that will enable real world use cases in smart contract based business models.
To ultimately harvest this potential and inform innovation aimed regulation, he co-founded the German Blockchain Association (Bundesblock) that establishes the dialogue between blockchain businesses and politics. He is further active as an advisor for BlockchainHub, a decentralized Think Tank and as a Connector for OuiShare. Finally, you might find him as the Organizer of events like GetDecentralized, Decentralized Web Summit among others.
social:
- name: Twitter
link: https://twitter.com/JockelLohkamp
- name: LinkedIn
link: https://www.linkedin.com/in/joachimlohkamp/
- name: Thomas Fürstner
position: General Secretary
bio: |
Tom Fürstner is a research scientist and university professor with over 30 years of experience in formal logic, social economy theory and digital art. Tom is the founder and CTO of Riddle & Code, a company focused on developing dedicated hardware for the physical internet and public ledger systems.
These days, he is working on hardened server systems for operating BigchainDB and IPFS. The aim is to enable sustainable and resilient identity services in an emerging world of shared sovereignty between humans, machines, algorithms and protocols.
social:
- name: LinkedIn
link: https://www.linkedin.com/in/thomas-fuerstner-0797592/
- name: Elfriede Sixt
position: Treasurer
bio: |
Elfriede Sixt believes in the disruptive potential of decentralized peer-to-peer networks and blockchains. She is curious to learn how industries and business models will change along this way.
Elfriede Sixt is a blogger and book author writing about crowdfunding, blockchains, and regulation. Her background is in Business administration and corporate finance. Besides that she is a founder of fintech.academy as well as ebit4u.
social:
- name: Twitter
link: https://twitter.com/ebit4u
- name: LinkedIn
link: https://www.linkedin.com/in/elfriede-sixt-05384719/
- name: David Holtzman
position: Member-at-Large
bio: |
David Holtzman is an information technology security expert, educator and activist. He started his career as a cryptographic analyst, military codebreaker, U.S. Naval Security Group submariner, and Soviet Manned Space Program analyst. Holtzman is an early-stage internet pioneer.
He was the CTO at Network Solutions when it managed the domain name system, where he oversaw the explosive growth of the commercial internet to more than 20 million domain names by the late 1990s. He is the author of Privacy Lost: How Technology is Endangering Your Privacy, and a regular commentator for major news media, including Bloomberg Television, BBC, CNN, The New York Times, Business Week, and The Washington Post.
social:
- name: Twitter
link: https://twitter.com/theglobalpov
- name: Nina-Luisa Siedler
prefix: Dr.
position: Member-at-Large
bio: |
Dr. Nina-Luisa Siedler is a lawyer and partner at [DWF Berlin](https://www.dwf.law/people/n/nina-siedler/) with over 15 years of experience. She is interested in FinTech and decentralized technology, and her practice includes blockchain matters. She is an advisor to Blockchain Hub Berlin.
Dr. Siedler is specialized in structured finance, including credit and capital market instruments, especially acquisition and project financing, real estate transactions, asset-backed securities, structured cover bonds, debt loans, and corporate bonds.
social:
- name: Twitter
link: https://twitter.com/ninsie3

42
_src/_data/caretakers.yml Executable file
View File

@ -0,0 +1,42 @@
- name: Jolocom
link: http://jolocom.io
- name: Riddle And Code
link: https://www.riddleandcode.com
- name: COALA
link: http://coala.global
- name: Internet Archive
link: https://archive.org
- name: Human Data Commons Foundation
link: https://humandatacommons.org
- name: Monax
link: https://monax.io
- name: IPFS
link: https://ipfs.io
- name: unMonastery
link: http://unmonastery.org
- name: BigchainDB
link: https://www.bigchaindb.com
- name: OuiShare
link: http://ouishare.net
- name: Tendermint
link: https://tendermint.com
- name: Stratumn
link: https://www.stratumn.com
- name: CREATE-NET
link: http://create-net.fbk.eu
logo: false
- name: KICTANet
link: https://www.kictanet.or.ke

0
_src/_data/colors.yml Normal file → Executable file
View File

14
_src/_data/contact.yml Normal file → Executable file
View File

@ -1,21 +1,19 @@
company: "Interplanetary Database Foundation e.V."
registration: "Registration VR 36146 B"
registration: "Amtsgericht: VR 36146 B"
address:
street: "Wichertstraße 14a"
zip: "10439"
street: "Köpenicker Strasse 154"
zip: "10997"
city: "Berlin"
country: "Germany"
email: "contact@ipdb.io"
email_caretakers: "caretakers@ipdb.io"
email: "contact@ipdb.global"
email_caretakers: "contact@ipdb.global"
# All the social links
social:
- name: "Twitter"
link: "https://twitter.com/ipdbfoundation"
- name: "Facebook"
link: "https://facebook.com/ipdbfoundation"
- name: "LinkedIn"
link: "https://www.linkedin.com/company/7963161"
link: "https://www.linkedin.com/company/interplanetary-database-foundation-ipdb/"
- name: "GitHub"
link: "https://github.com/ipdb"
org: "ipdb"

View File

@ -0,0 +1,34 @@
intro: |
Building a decentralized organization that runs smoothly is not easy. Weve learned from those who came before us, from the DNS to The DAO.
IPDB is coordinated by the IPDB Foundation, which is made up of its member caretakers and its elected management board. The IPDB Foundation advances the research of blockchain technology and decentralized governance for the benefit of society.
caretakers:
title: Caretakers
description: "The IPDB Foundation is made up of member organizations we call caretakers. Our caretakers elect our management board and run the nodes that store and validate blocks containing the transactions sent to IPDB."
features:
- title: "Public interest mandate"
description: "A majority of caretakers must be not-for-profit organizations so the mission will take priority over profit."
- title: "Jurisdictional diversity"
description: "Less than half of the caretakers can be based in any one legal jurisdiction, so a single legal attack can't shut down the network."
- title: "Geographical diversity"
description: "Our caretakers are based around the world to limit disruption from regional events such as power outages or natural disasters."
- title: "Management board"
description: "Caretakers elect the management board, which is responsible for the day-to-day operations of IPDB."
members:
title: "Current Caretakers"
description: "Our caretakers share our commitment to building a decentralized internet."
board:
title: Management Board
description: "The management board oversees the day-to-day operations of the IDPB Foundation. The management board is elected by the caretakers for a two year term."
vision:
title: "Science & Research"
description: "The IPDB Foundation advances science and research."
text: |
The IPDB Foundation promotes science and research on the operation of scalable blockchain databases, the governance of decentralized systems, and the applications of blockchain technology.
The IPDB Foundation has taken a leading role in the Berlin blockchain community. We co-organized the [9984 Summit](https://2017.9984.io/), a two-day conference in Berlin bringing together top blockchain thinkers from around the world. We co-organize the [IPDB Meetup](https://www.meetup.com/blockchain-and-identity/) in Berlin. We have sent speakers to numerous conferences and events in Berlin and across the EU, and have published numerous [blog posts](https://medium.com/ipdb-blog) on blockchain technology.
In the future we will continue to make our work available in many ways——hosting or presenting at conferences and workshops, publishing research results and technical papers, releasing open source software, and more. Everything we do will be made available online, for the benefit of the public.

19
_src/_data/content-front.yml Normal file → Executable file
View File

@ -3,28 +3,11 @@ hero:
description: "IPDB is a ready-to-use public network with a focus on strong governance, all powered by BigchainDB."
action: "Get started with IPDB"
farewell:
title: "As of February 2nd, 2018, IPDB will be shutting down."
text: |
We've thought long and hard about this decision. Our plan to be an internet-scale blockchain database for the world started in mid-2015, and those two and a half years are an eternity in blockchain time. The world has changed, and funding to maintain and operate IPDB while maintaining its core values became an insurmountable struggle.
Weve reached milestones in our short time that make us extremely proud. We built a governance model that offered transparency and legitimacy. We confronted the reality of data protection law. We will make these and other learnings available to you in the form of blog posts, reports, or contributions to other projects over the coming months.
We want to thank everyone who has contributed to IPDB, especially our caretakers and board members. IPDB would not have made it this far without your guidance and expertise.
We also want to thank the people who have been using the IPDB Test Network. Weve been driven by the dreams of what youll build.
The IPDB Test Network will continue to run until February 2nd, 2018, at which point it will be shut down. All accounts and data will be erased and no new sign-ups will be accepted.
[BigchainDB](https://www.bigchaindb.com) has started its own test network running the same BigchainDB software that powered IPDB. [You can sign up to use it today](https://testnet.bigchaindb.com).
See you on the internet.
intro:
title: "A planetary-scale blockchain database"
description: "The distributed, permanent web is evolving and needs a decentralized database. We are that database."
text: |
IPDB is a planetary-scale blockchain database built on [BigchainDB](https://www.bigchaindb.com). Its a ready-to-use public network with a focus on strong governance. It shares all the features of BigchainDB to make developers lives easier.
IPDB is a planetary-scale blockchain database built on BigchainDB. Its a ready-to-use public network with a focus on strong governance. It shares all the features of BigchainDB to make developers lives easier.
features:
- title: "A single public database"

102
_src/_data/faq.yml Executable file
View File

@ -0,0 +1,102 @@
- question: What is IPDB?
answer: |
IPDB is the Interplanetary Database. It's a ready-to-use public network with a focus on strong governance, all powered by BigchainDB. Think of IPDB as being the database for a decentralized world computer.
- question: Who owns IPDB?
answer: |
No one “owns” IPDB. We see it as a public good. IPDB is operated by the IPDB Foundation e.V., a charitable organization registered in Berlin, Germany. The IPDB Foundation has a number of member organizations, or Caretakers, who provide consensus voting and input on governance.
- question: How is IPDB funded?
answer: |
The IPDB Foundation is currently funded by BigchainDB GmbH, but plans to become self-sufficient through donations and by selling transactions on IPDB.
- question: Where can I find the IPDB governance documents?
answer: |
Our [Articles of Association](/foundation/articles/) are available in German and in English.
- question: Who is on the Board of Directors?
answer: |
You can always find the current [Board of Directors on the Foundation page](/foundation/#board).
- question: Who can use IPDB?
answer: |
Anyone can use IPDB. You can learn more about getting started [on the front page](/).
- question: What are the IPDB Terms of Service and Privacy Policy?
answer: |
The most recent versions of the [IPDB Terms of Service](https://ipdb.io/terms) and [IPDB Privacy Policy](https://ipdb.io/privacy) are always available on the IPDB website.
- question: How do I use IPDB?
answer: |
IPDB is based on BigchainDB. You can learn about using the IPDB client API on the BigchainDB documentation page.
- question: How much does it cost to use IPDB?
answer: |
When it launches, IPDB will be free to everyone. Eventually IPDB will start charging its heavy users on a per-transaction basis. For most users, IPDB will remain free.
- question: How much *will* it cost?
answer: |
We dont know yet, but we intend to keep it really cheap. Cheap means orders of magnitude cheaper than other blockchain databases.
- question: Is it open source?
answer: |
All the code and documentation used or produced by IPDB is open source. You can view the source for [BigchainDB](https://github.com/bigchaindb/bigchaindb), or better yet, make a contribution!
- question: What do Caretakers do?
answer: |
Caretakers play a critical role in IPDBs operation and governance (see “How does consensus work on IPDB?”). In addition to voting on transactions on IPDB, Caretakers vote to approve new Caretakers and to select the IPDB Foundations board of directors.
- question: How are Caretakers chosen?
answer: |
Caretakers can apply to IPDB to be considered. The existing Caretakers will vote to decide whether a new Caretaker should be added.
- question: Who can become a Caretaker?
answer: |
Caretakers must have demonstrated a commitment to building or protecting an open, decentralized Internet. A majority of the Caretaker roles must be held by not-for-profit organizations. Caretakers are chosen to reflect a diversity of roles, geographical locations, and jurisdictions.
- question: Who are the current Caretakers?
answer: |
You can always find the current list of [IPDB Caretakers on the Foundation page](/foundation/#caretakers).
- question: Can my organization be a Caretaker?
answer: |
Maybe! If you think youre a good fit, contact us at !EMAIL_CARETAKERS!.
## Transactions
- question: Can I delete a Transaction?
answer: |
No. Transactions cannot be deleted from IPDB once they have been written. Not even the IPDB Foundation or any of the Caretakers can delete or change Transactions once they have been written.
- question: Who owns the information I write to IPDB?
answer: |
You do. You keep the copyright or other rights in all information you record to IPDB.
## Technical
- question: What technology is IPDB based on?
answer: |
IPDB is a public instance of BigchainDB, a scalable blockchain database.
- question: What is the IPDB consensus model?
answer: |
IPDB operates on a federated model for consensus. The IPDB federation relies on a number of trusted entities we call Caretakers. The Caretakers vote on all transactions on the network, and transactions approved by the majority are added to the database. You can learn more about the consensus model in the BigchainDB [whitepaper](https://www.bigchaindb.com/whitepaper/).
- question: Is IPDB a blockchain?
answer: |
No. IPDB brings blockchain characteristics to an open source big data database: 1) decentralized control, 2) immutability, and 3) assets.
- question: Is IPDB a currency?
answer: |
No. IPDB has native assets but those assets are not a currency. Instead, anyone can issue and transfer assets or tokens that represent something else.
- question: Can other people see my transactions?
answer: |
Yes. Anyone can see the transactions made on IPDB. IPDB is a public instance of BigchainDB.
- question: Can IPDB talk to other blockchains?
answer: |
BigchainDB has already been integrated with other services. Other integrations are waiting to be created. If you have a request, or better still, if you want to help out, you can head over to the [BigchainDB developer community](https://github.com/bigchaindb/bigchaindb) at Github.
- question: Why is IPDB better than Ethereum, Bitcoin, IPFS, Dogecoin…?
answer: |
IPDB is not a replacement for decetralized computation platforms such as Ethereum, file storage from IPFS, or cryptocurrencies such as Bitcoin. IPDB is *complimentary* to them. We see IPDB as filling a gap in the decentralized stack.

14
_src/_data/menus.yml Normal file → Executable file
View File

@ -1,9 +1,19 @@
main:
- title: Foundation
url: /foundation/
- title: Contact
url: /contact/
footer:
- title: FAQ
url: /faq/
- title: Blog
url: https://medium.com/ipdb-blog
legal:
- title: Contact
url: /contact/
- title: Terms
url: /terms/
- title: Privacy
url: /privacy/
- title: Imprint
url: /imprint/

9
_src/_includes/banner.html Executable file
View File

@ -0,0 +1,9 @@
<a class="banner" href="https://www.meetup.com/blockchain-and-identity/">
<div class="row row--wide">
<h1 class="banner__title">
<svg class="banner__logo">
<use xlink:href="/assets/img/sprite.svg#icon-meetup"></use>
</svg>
Join us at our next IPDB meetup for the test net launch!</h1>
</div>
</a>

41
_src/_includes/board.html Executable file
View File

@ -0,0 +1,41 @@
<div class="board grid grid--full grid-small--half grid--gutters">
{% assign board = site.data.board %}
{% for member in board %}
{% assign slug = (member.name | downcase | replace: ' ', '-' | replace: 'ü', 'ue') %}
<div class="grid__col">
<div class="boardmember">
<div class="boardmember__info">
<img class="boardmember__avatar" src="/assets/img/board/{{ slug }}.jpg">
<div class="boardmember__meta">
<h1 class="boardmember__name">
{% if member.prefix %}{{ member.prefix }} {% endif %}
{{ member.name }}
</h1>
<p class="boardmember__position">{{ member.position }}</p>
{% if member.social %}
<p class="boardmember__social">
{% for item in member.social %}
<a href="{{ item.link }}" title="{{ item.name }}">
<svg class="icon" aria-labelledby="title">
<title>{{ item.name }}</title>
<use xlink:href="/assets/img/sprite.svg#icon-{{ item.name | downcase }}"></use>
</svg>
</a>
{% endfor %}
</p>
{% endif %}
</div>
</div>
<div class="boardmember__bio">{{ member.bio | markdownify }}</div>
</div>
</div>
{% endfor %}
</div>

24
_src/_includes/caretakers.html Executable file
View File

@ -0,0 +1,24 @@
<div class="caretakers grid grid--half grid-medium--fit grid-medium--columns grid--justifycenter grid--gutters">
{% assign caretakers = (site.data.caretakers | sort: 'name') %}
{% for caretaker in caretakers %}
{% assign slug = (caretaker.name | downcase | replace: ' ', '-' | replace: '.', '-') %}
<div class="grid__col grid__col--2">
<a class="caretaker" href="{{ caretaker.link }}" rel="external">
{% if caretaker.logo == false %}
<span class="caretaker__name">{{ caretaker.name }}</span>
{% else %}
<svg class="logo-caretaker logo-caretaker--{{ slug }}" aria-labelledby="title">
<title>{{ caretaker.name }}</title>
<use xlink:href="/assets/img/sprite.svg#logo-{{ slug }}"></use>
</svg>
{% endif %}
</a>
</div>
{% endfor %}
</div>

13
_src/_includes/contact.html Normal file → Executable file
View File

@ -20,3 +20,16 @@
{{ contact.address.country }}
</p>
</div>
<ul class="social-list">
{% for item in contact.social %}
<li>
<a href="{{ item.link }}" title="{{ item.name }}">
<svg class="icon" aria-labelledby="title">
<title>{{ item.name }}</title>
<use xlink:href="/assets/img/sprite.svg#icon-{{ item.name | downcase }}"></use>
</svg>
</a>
</li>
{% endfor %}
</ul>

0
_src/_includes/footer.html Normal file → Executable file
View File

0
_src/_includes/form-contact.html Normal file → Executable file
View File

View File

@ -0,0 +1,12 @@
<form class="form form--newsletter" action="//foundation.us15.list-manage.com/subscribe/post?u=036bac2d4e3a3ea3de876a8dd&amp;id=8a21e3e9ca" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" target="_blank">
<div class="form__group required">
<label class="form__label" for="mce-EMAIL">Your Email</label>
<div class="input-group">
<input class="form__control" type="email" id="mce-EMAIL" name="EMAIL" required placeholder=" ">
<input class="button button-primary button--small" type="submit" value="Subscribe">
</div>
<span class="form__help">We will never use the contact information you submit for anything except delivering our newsletter.</span>
</div>
</form>

0
_src/_includes/head.html Normal file → Executable file
View File

2
_src/_includes/header.html Normal file → Executable file
View File

@ -1,5 +1,3 @@
{% include oceanprotocol.html %}
{% include menu-main.html %}
<header class="header header--page">

24
_src/_includes/menu-footer.html Normal file → Executable file
View File

@ -10,6 +10,17 @@
</a>
</div>
<div class="grid__col">
{% for link in site.data.menus.main %}
{% assign active = nil %}
{% if page.url contains link.url %}
{% assign active = 'active' %}
{% endif %}
<a class="menu__link {{ active }}" href="{{ link.url }}">{{ link.title }}</a>
{% endfor %}
</div>
<div class="grid__col">
{% for link in site.data.menus.footer %}
{% assign active = nil %}
@ -21,5 +32,18 @@
{% endfor %}
</div>
<div class="grid__col">
<h2 class="footer__title">Follow us</h2>
<div class="social">
{% for item in site.data.contact.social %}
<a class="social-link" href="{{ item.link }}" title="{{ item.name }}">
<svg class="icon" aria-labelledby="title">
<title>{{ item.name }}</title>
<use xlink:href="/assets/img/sprite.svg#icon-{{ item.name | downcase }}"></use>
</svg>
</a>
{% endfor %}
</div>
</div>
</div>
</nav>

View File

@ -0,0 +1,28 @@
<nav class="menu menu--sub menu--foundation section--background">
<div class="row">
<div class="menu-overflow">
<a class="menu__link" href="/foundation/#caretakers" data-scroll>{{ site.data.content-foundation.caretakers.title }}</a>
<a class="menu__link" href="/foundation/#board" data-scroll>{{ site.data.content-foundation.board.title }}</a>
<a class="menu__link" href="/foundation/#vision" data-scroll>{{ site.data.content-foundation.vision.title }}</a>
{% assign current_page = page %}
|
{% for page in site.pages %}
{% if page.path contains 'foundation' %}
{% assign active = nil %}
{% if page.url == current_page.url %}
{% assign active = 'active' %}
{% endif %}
{% unless page.path contains 'foundation/index' or page.language == 'de' %}
<a class="menu__link {{ active }}" href="{{ page.url }}">{{ page.title }}</a>
{% endunless %}
{% endif %}
{% endfor%}
</div>
</div>
</nav>

15
_src/_includes/menu-main.html Normal file → Executable file
View File

@ -2,7 +2,10 @@
<div class="row">
<div class="menu__logo">
<a class="menu__link menu__link--logo" href="/">
<svg class="logo" aria-labelledby="title"><title>Logo IPDB</title><use xlink:href="/assets/img/sprite.svg#logo"></use></svg>
<svg class="logo" aria-labelledby="title">
<title>Logo IPDB</title>
<use xlink:href="/assets/img/sprite.svg#logo"></use>
</svg>
</a>
</div>
@ -11,12 +14,12 @@
<div class="menu-overflow">
{% for link in site.data.menus.main %}
{% assign active = nil %}
{% if page.url contains link.url %}
{% assign active = 'active' %}
{% endif %}
{% assign active = nil %}
{% if page.url contains link.url %}
{% assign active = 'active' %}
{% endif %}
<a class="menu__link {{ active }}" href="{{ link.url }}">{{ link.title }}</a>
<a class="menu__link {{ active }}" href="{{ link.url }}">{{ link.title }}</a>
{% endfor %}
</div>

View File

@ -1,9 +0,0 @@
<a class="banner--ocean oceanprotocol" href="https://oceanprotocol.com/?utm_source=ipdb.io&utm_medium=banner&utm_campaign=ocean_banner">
<div class="row row--wide">
<h1 class="oceanprotocol__title">
<svg class="oceanprotocol__logo">
<use xlink:href="/assets/img/sprite.svg#logo-oceanprotocol"></use>
</svg>
Meet Ocean. A Decentralized Data Exchange Protocol</h1>
</div>
</a>

0
_src/_includes/scripts.html Normal file → Executable file
View File

0
_src/_includes/sharing.html Normal file → Executable file
View File

31
_src/faq.html Executable file
View File

@ -0,0 +1,31 @@
---
layout: page
title: Frequently Asked Questions
subtitle: Get answers to your most pressing questions
css: page-faq
---
{% capture email_caretakers %}<a href="mailto:{{ site.data.contact.email_caretakers }}">{{ site.data.contact.email_caretakers }}</a>{% endcapture %}
<section class="section section--faq">
<div class="row row--narrow">
<div class="faq-contents">
{% for faq in site.data.faq %}
<h1 class="faq-contents__title"><a href="#{{ faq.question | downcase | replace: ' ','-' | replace: '?', '' }}" data-scroll>{{ faq.question }}</a></h1>
{% endfor %}
</div>
<div class="faq content--page--markdown">
{% for faq in site.data.faq %}
{% assign id = faq.question | downcase | replace: ' ','-' | replace: '?', '' %}
<h1 class="faq__question" id="{{ id }}"><a class="header-link" href="#{{ id }}">#</a> {{ faq.question }}</h1>
<div class="faq__answer">{{ faq.answer | replace: '!EMAIL_CARETAKERS!', email_caretakers | markdownify }}</div>
{% endfor %}
</div>
</div>
</section>

19
_src/foundation/articles.md Executable file
View File

@ -0,0 +1,19 @@
---
layout: page
title: Articles
subtitle: Articles of Association of the IPDB Foundation
narrow: true
language: en
alternate:
- language: de
link: /foundation/satzung/
---
<div class="alert alert--info">
IPDB Foundation is registered as a non-profit in Germany. The English version of this document is for information only. The <a href="/foundation/satzung/">German version</a> is legally binding.
</div>
*Coming soon...*

174
_src/foundation/bylaws.md Executable file
View File

@ -0,0 +1,174 @@
---
layout: page
title: Bylaws
narrow: true
---
# Definitions
1. **Advisor** means an individual appointed to serve as an advisor to the Foundation.
1. **Advisory Committee** means a subset of Advisors established by the Board to provide advice on a specific subject area.
1. **Applicant** means an entity that has applied to become a Caretaker.
1. **Articles** means the current Articles of Association (Satzung) of the Foundation. If there is a conflict between the English and German versions of the Articles, the German version prevails.
1. **Board** means the Board of Directors of the Foundation.
1. **Board Member** means an individual member of the Board.
1. **Bylaws** means this document.
1. **Caretaker** means a member of the Foundation.
1. **Conference** means an audio or video teleconference.
1. **Foundation** means the Interplanetary Database Foundation e.V.
1. **IPDB** means the Interplanetary Database, a decentralized database made up of the cluster of Nodes operated by Caretakers.
1. **Key Pair** means a cryptographic public-private key pair generated by a Board Member, Caretaker, or Representative by the means set out in Policy.
1. **Node** means an instance of the Software operated by a Caretaker.
1. **Policy** means policies, procedures, or other guidelines approved by the Board.
1. **Private Key** means the half of a Key Pair used by Caretakers to sign blocks or votes or by Board Members or Representatives to sign votes.
1. **Public Key** means the half of a Key Pair publicly associated with a Board Member, Caretaker, or Representative and serves as their identifier on IPDB or within the Foundation.
1. **Representative** means an individual or individuals designated by a Caretaker to be the Staffs point of contact for that Caretaker, with the authority to vote on the Caretakers behalf in Caretakers meetings.
1. **Software** means the software the Board determines must be run on each Node.
1. **Staff** means individuals appointed by the Board to administer the day-to-day activities of the Foundation.
# Structure
1. The Foundation will be registered in Berlin, Germany, as a charitable organization.
1. The Bylaws expand on the text of the Articles. If there is a conflict between the Bylaws and the Articles, the Articles prevail.
# Board (Article 6)
## Board meetings
1. The Board will meet at least once per quarter.
1. Board Members may attend Board meetings in person or by Conference.
1. Additional Board meetings can be called with the agreement of two Board Members.
1. A Board meeting quorum is met if at least 3 Board Members are in attendance.
## Votes by board members
1. Board Members may cast votes in person, by Conference, or by email.
1. Votes by voice can be cast in person or by Conference.
1. Votes in writing must be cast by email and, if required by Policy, must be signed with the Board Members Private Key.
## Board elections
1. The Board will determine the date of elections for the Board.
1. Staff will deliver notice of a Board election, listing any vacancies and candidates nominated by the Board, within one month of the election, by email to the Representatives and on a page on the Foundation website.
1. The Board may nominate candidates for vacancies on the Board to be delivered with notice of the Board election, or at any time up to two weeks before the election.
1. Caretakers may nominate candidates for vacancies on the Board at any time after notice of the Board election has been delivered, or at any time up to two weeks before the election.
1. All candidates may provide a 500 character biography and a URL to be posted on the Foundation website.
1. Staff will deliver a final notice of the Board election, along with a complete list of candidates and their biographies, two weeks before the election.
## Staff
1. The Board may delegate authority to Staff, including signing authority for the Foundation.
1. The scope of authority granted to Staff must be clearly set out by the Board in its grant of authority.
1. The Board will appoint at least one person as Staff to perform the duties set out in the Bylaws.
# Advisors (Article 7)
1. Advisors are appointed by a majority vote by the Board.
1. Consultations between Board Members and Advisors can be kept in confidence as between the Board Member and the Advisor.
1. The Board may establish Advisory Committees to provide advice in their areas of expertise.
1. The Board may delegate the development of Policies to an Advisory Committee established for that purpose.
1. The Board may vote to request formal advice from Advisors or Advisory Committees. 1. The response to such a request will be made public.
# Caretakers (Articles 3-5)
## Caretaker representatives
1. Caretakers must nominate at least one individual as a Representative.
1. The Representative must generate a Key Pair.
## Caretakers meetings
1. Staff will provide notice of meetings of the Caretakers to the Caretakers Representatives
1. Caretakers may attend meetings in person or by Conference.
## Votes by caretakers
1. Caretakers Representatives vote on behalf of the Caretakers.
1. Representatives may cast votes in person, by Conference, or by email.
1. Votes by voice can be cast in person or by Conference.
1. Votes in writing must be cast by email and, if required by Policy, must be signed with the Representatives Private Key.
## Number of caretakers
1. The Foundation may have no more than 100 Caretakers.
1. The Board may admit a maximum of 20 Caretakers each year, at the discretion of the Board.
## Adding caretakers (Article 3)
1. Entities that wish to become a Caretaker may apply in writing to the Foundation.
1. The Board reviews Applicants with consideration to the requirements and targets listed in this section.
1. To admit an Applicant, the Board must be satisfied that the Applicant is committed to the Foundations mission and building a decentralized internet that is open, inclusive, transparent, and diverse.
1. The following requirements for Caretaker diversity must always be met by the current membership:
1. More than 50% of Caretakers must be not-for-profit or charitable organizations.
1. Fewer than 50% of Caretakers may be based in any one country.
1. The following targets for Caretaker diversity are not requirements, but will be weighted highly in the Boards determination:
1. More than 66% of the Caretakers should be not-for-profit or charitable organization.
1. Fewer than 25% of Caretakers should be based in any one country.
1. Fewer than 50% of Caretakers should be based in any one region.
1. At least one Caretaker should be based in each region.
## Expulsion of caretakers
1. The process for expulsion is triggered by a complaint regarding the conduct of the Caretaker brought to the Foundation by a Board Member, another Caretaker, or a member of the public.
1. Staff will receive complaints and present them to the Board as they are received.
Complaints will be addressed at the next regularly scheduled Board meeting.
If the matter is urgent, a special Board meeting can be called if requested by 20% of Caretakers or 2 Board Members.
1. The Board may dismiss a complaint without comment if it is unanimously voted by the Board to be frivolous or unfounded. Votes to dismiss a complaint must be in writing, and must be reported to the Caretakers by the Board along with the complaint.
The Board will call for a comments over a period of 4 weeks, during which all Caretakers, including the subject of the complaint, can present arguments and evidence for or against expulsion.
1. After the comment period the Board will consider the factors below, then either dismiss the complaint as unfounded or recommend that the Caretakers vote to expel the subject of the complaint.
1. All Caretakers except the subject of the complaint may vote on the Boards recommendation. If the vote passes, the subject of the complaint is expelled from the Foundation and their keys will be invalidated immediately.
## Grounds for expulsion
1. The following factors will be considered by the Board and Caretakers in reviewing the subject of a complaint:
1. Actions by the Caretaker determined to be in violation of the Articles or the mission statement of the Foundation.
1. Deliberate tampering with the validity or integrity of IPDB.
1. Failure to comply with Policies for security, privacy, or operating a Node.
1. Failure of the Representative to respond to communications from Staff in a timely manner.
1. Actions by the Caretaker determined to be detrimental to the success, functioning, or reputation of IPDB or the Foundation.
# Keys
## Generating keys
1. Caretakers and Representatives will generate Key Pairs in the manner set in Policy.
## Securing keys
1. Caretakers and Representatives will communicate their Public Keys to the Foundation in the manner set in Policy.
1. Private keys will be secured in the manner set in Policy.
## Revoking signing authority
1. If a complaint against a Caretaker is brought to the Board, that Caretakers authority to sign blocks on IPDB will be suspended.
1. Signing authority can be reinstated if the complaint is unfounded or dismissed.
# Nodes
## Operating a node
1. Nodes can be operated on hardware operated by third party providers or hardware managed by the Caretaker.
1. Caretakers without the technical capacity to maintain a Node may, with the approval of the Board, retain a part-time system administrator to maintain the Node, or be paired with another Caretaker who can offer assistance.
## Cloud accounts
1. The Foundation will provide Caretakers cloud accounts on which to run the Software.
Caretakers must manage their credentials in accordance with Policy.
1. Cloud accounts can only be used to operate the Software.
## Security
1. Caretakers must follow all security Policy approved by the Board.
## Software
1. Caretakers must run the version of the Software approved by the Board, and must upgrade in accordance with Policy approved by the Board.
# Privacy and Information Handling
1. Caretakers must follow all privacy Policy approved by the Board.
1. Caretakers may release information to third parties only if it is required to comply with a binding legal processes such as a court order or a warrant, except as defined in privacy Policy approved by the Board.
1. If a Caretaker or the Foundation receives any legal request, order, or demand, the recipient must notify Staff and the other Caretakers immediately.
1. Caretakers will put a file in a public location on their website called canary.txt and will remove that file if the Caretaker has received a legal request, order, or demand but is restrained from notifying the Caretakers or the Foundation of the request.

120
_src/foundation/index.html Executable file
View File

@ -0,0 +1,120 @@
---
layout: page
title: Foundation &amp; governance
css: page-foundation
---
{% assign content = site.data.content-foundation %}
<section class="section section--intro">
<div class="row">
<header class="section__header">
<div class="grid grid--full grid-small--columns grid--center grid--gutters">
<div class="grid__col grid__col--4">
<div class="section__description">{{ content.intro | markdownify }}</div>
</div>
<div class="grid__col grid__col--2">
<svg width="559" height="253" aria-labelledby="title">
<title>IPDB Governance</title>
<use xlink:href="/assets/img/sprite.svg#governance"></use>
</svg>
</div>
</div>
</header>
</div>
</section>
<section class="section section--background section--caretakers" id="caretakers">
<div class="row">
<header class="section__header">
<div class="grid grid--full grid-medium--columns grid--center grid--gutters">
<div class="grid__col grid__col--4">
<h1 class="section__title">{{ content.caretakers.title }}</h1>
<p class="section__description">{{ content.caretakers.description }}</p>
</div>
</div>
</header>
</div>
<div class="row features">
<div class="grid grid--full grid-small--half grid--gutters">
{% for feature in content.caretakers.features %}
<div class="grid__col">
<div class="feature">
<svg class="feature__image" width="298" height="220" aria-labelledby="title">
<title>IPDB Governance</title>
<use xlink:href="/assets/img/sprite.svg#distributed"></use>
</svg>
<h3 class="feature__title">{{ feature.title }}</h3>
<p class="feature__description">{{ feature.description }}</p>
</div>
</div>
{% endfor %}
</div>
</div>
<div class="row caretakers-current">
<div class="grid grid--full grid-medium--columns grid--center grid--gutters">
<div class="grid__col grid__col--4">
<h2 class="section__title">{{ content.caretakers.members.title }}</h2>
<p class="section__description">{{ content.caretakers.members.description }}</p>
</div>
</div>
{% include caretakers.html %}
</div>
<footer class="row">
<footer class="section__actions">
<a href="mailto:{{ site.data.contact.email_caretakers }}?subject=Becoming a caretaker" class="button button--text">Become
a caretaker</a>
</footer>
</footer>
</section>
<section class="section section--board" id="board">
<div class="row">
<header class="section__header">
<div class="grid grid--full grid-medium--columns grid--center grid--gutters">
<div class="grid__col grid__col--4">
<h1 class="section__title">{{ content.board.title }}</h1>
<p class="section__description">{{ content.board.description }}</p>
</div>
</div>
</header>
</div>
<div class="row">
{% include board.html %}
</div>
</section>
<section class="section section--vision section--border" id="vision">
<div class="row">
<div class="grid grid--full grid-medium--columns grid--center grid--gutters">
<div class="grid__col grid__col--4">
<header class="section__header">
<h1 class="section__title">{{ content.vision.title }}</h1>
<p class="section__description">{{ content.vision.description }}</p>
</header>
</div>
</div>
</div>
<div class="row">
<div class="grid grid--full grid-medium--columns grid--gutters">
<div class="grid__col grid__col--2">
<figure class="feature__image">
<svg>
<use xlink:href="/assets/img/sprite.svg#starbase-towers"></use>
</svg>
</figure>
</div>
<div class="grid__col grid__col--4">
{{ content.vision.text | markdownify }}
</div>
</div>
</div>
</section>

19
_src/foundation/satzung.md Executable file
View File

@ -0,0 +1,19 @@
---
layout: page
title: Satzung
subtitle: Satzung des Interplanetary Origins e.V.
narrow: true
language: de
alternate:
- language: en
link: /foundation/articles/
---
<div class="alert alert--info">
This document is also available in <a href="/foundation/articles/">English</a>.
</div>
*In Arbeit...*

View File

@ -6,21 +6,13 @@ front_page: true
css: page-front
redirect_from:
- /foundation/
- /foundation/articles/
- /foundation/satzung/
- /foundation/bylaws/
- /docs/
- /jobs/
- /privacy/
- /terms/
- /faq/
- /canary/
- /docs/
- /jobs/
---
{% assign content = site.data.content-front %}
{% include oceanprotocol.html %}
{% include banner.html %}
<header class="hero section">
@ -64,31 +56,129 @@ redirect_from:
</header>
<section class="section section--farewell section--background" id="farewell">
<div class="row row--narrow">
<section class="section section--intro">
<div class="row">
<header class="section__header">
<h1 class="section__title">{{ content.farewell.title }}</h1>
<div class="grid grid--full grid-small--columns grid--center grid--gutters">
<div class="grid__col grid__col--4">
<h1 class="section__title">{{ content.intro.title }}</h1>
<p class="section__description">{{ content.intro.description }}</p>
{{ content.intro.text | markdownify }}
</div>
<div class="grid__col grid__col--2 grid__col--center">
<svg width="298" height="220" aria-labelledby="title">
<title>IPDB Distributed</title>
<use xlink:href="/assets/img/sprite.svg#distributed"></use>
</svg>
</div>
</div>
</header>
<div class="lead">
{{ content.farewell.text | markdownify }}
</div>
<section class="features">
{% for feature in content.intro.features %}
<div class="feature">
<div class="grid grid--full grid-small--half grid-medium--columns grid--center grid--gutters">
<div class="grid__col grid__col--2">
<figure class="feature__image">
<img src="/assets/img/{{ feature.image }}.jpg" srcset="/assets/img/{{ feature.image }}.jpg 1x, /assets/img/{{ feature.image }}@2x.jpg 2x"
alt="{{ feature.title }}" width="400">
</figure>
</div>
<div class="grid__col grid__col--4">
<h1 class="feature__title">{{ feature.title }}</h1>
<div class="feature__text">{{ feature.text | markdownify }}</div>
{% if feature.list %}
<ul class="feature__list">
{% for item in feature.list %}
<li>{{ item }}</li>
{% endfor %}
</ul>
{% endif %}
</div>
</div>
</div>
{% endfor %}
</section>
</div>
</section>
<section class="section section--background section--foundation">
<div class="row">
<header class="section__header">
<div class="grid grid--full grid-small--columns grid--center grid--gutters">
<div class="grid__col grid__col--4">
<h1 class="section__title">{{ content.foundation.title }}</h1>
<p class="section__description">{{ content.foundation.description }}</p>
</div>
<div class="grid__col grid__col--2">
<svg width="559" height="253" aria-labelledby="title">
<title>IPDB Governance</title>
<use xlink:href="/assets/img/sprite.svg#governance"></use>
</svg>
</div>
</div>
</header>
{% include caretakers.html %}
<footer class="section__actions">
<a href="/foundation/" class="button button--text">{{ content.foundation.button }}</a>
</footer>
</div>
</section>
<!-- <section class="section section--roadmap">
<div class="row">
<header class="section__header">
<div class="grid grid--full grid-medium--columns grid--gutters">
<div class="grid__col grid__col--4">
<h1 class="section__title">{{ content.roadmap.title }}</h1>
<p class="section__description">{{ content.roadmap.description }}</p>
</div>
</div>
</header>
</div>
<div class="roadmap">
<div class="row">
{% for step in content.roadmap.steps %}
{% assign status = step.status %}
<div class="roadmap__step is-{{ status }}">
<p class="roadmap__net">{{ step.net }}</p>
<p class="roadmap__target">{{ step.target }}</p>
{% if step.time %}<p class="roadmap__time">{{ step.time }}</p>{% endif %}
</div>
{% endfor %}
</div>
</div>
</section> -->
<section class="section section--connect">
<div class="row">
<div class="connect connect--blog">
<h2 class="connect__title">{{ content.connect.blog_title }}</h2>
<div class="articles">
<div class="grid grid--full grid-small--half grid-medium--fourth grid--gutters">
{% for article in site.articles limit: 4 %}
<div class="grid__col">
<a class="article" href="{{ article.link }}">
<figure class="article__image" style="background-image: url('{{ article.image | escape | strip_html }}')"></figure>
<h1 class="article__title">{{ article.title }}</h1>
</a>
</div>
<div class="grid__col">
<a class="article" href="{{ article.link }}">
<figure class="article__image" style="background-image: url('{{ article.image | escape | strip_html }}')"></figure>
<h1 class="article__title">{{ article.title }}</h1>
</a>
</div>
{% endfor %}
</div>

57
_src/privacy.md Executable file
View File

@ -0,0 +1,57 @@
---
layout: page
title: Privacy policy
narrow: true
---
_Last updated: 2018/05/19_
This notice falls under the [General Data Protection Regulation (GDPR)](https://www.eugdpr.org/).
## Who we are
{% include contact.html imprint="true" %}
## How to contact us
We can be reached via the contact information on our website.
## Personal data we collect
- email address;
- names;
- IP;
- newsletter: opens, clicks, opt-ins.
## Consent to collect
We store data from users that have submitted information via our contact form.
After a user submits a request to receive updates, we ask for additional consent from the user via email, i.e. we ask the user to confirm the request to receive updates.
## Your data, your rights
- You can request a copy of your data which we will provide within 30 days;
- We strive to keep our service secure, and in the event of a data breach or misuse, we will inform our users of the incident as well as the steps we have taken to ameliorate the situation within 30 days.
## Services and third parties where IPDB stores data
IPDB relies on a limited number of third-party services to maintain its own services. IPDB never shares or resell any of its data. We store your email address and name on the following third-party services (which offer secure, privacy-focused storage solutions):
- [Sender](http://sender.net/)
## Newsletter & account statistics and reporting
IPDB records behavioural data, such as opens and clicks, for emails we distribute to our subscribers via Sender.
## Length of data collection
IPDB will keep identifiable data for an undetermined amount of time or until the user asks us to anonymize and / or delete his data.
## Who has access to our data?
Data at IPDB is not shared with or sold to any third party.
IPDB staff and contractors retain access to users data for the exclusive purpose of electronic communications.
No personal identifiable data is stored on staff or contractor computers on a permanent basis. Contractors are requested to delete this data at the end of their work agreement.

View File

@ -25,7 +25,7 @@ narrow: true
## The blockchain database network for the decentralized stack
IPDB is a planetary-scale blockchain database built on [BigchainDB](https://www.bigchaindb.com). Its a ready-to-use public network with a focus on **strong governance**. It shares _all the features_ of BigchainDB to make developers lives easier.
IPDB is a planetary-scale blockchain database built on BigchainDB. Its a ready-to-use public network with a focus on **strong governance**. It shares _all the features_ of BigchainDB to make developers lives easier.
### Maecenas sed diam eget risus

9
_src/terms.md Executable file
View File

@ -0,0 +1,9 @@
---
layout: page
title: IPDB Terms of Service
narrow: true
---
*Coming soon...*

View File

@ -1,6 +1,6 @@
/* eslint-disable no-console */
import fs from 'fs'
import cp from 'child_process'
import { src, dest, watch, parallel, series } from 'gulp'
import del from 'del'
import parallelize from 'concurrent-transform'
@ -8,16 +8,17 @@ import browser from 'browser-sync'
import critical from 'critical'
import yaml from 'js-yaml'
import request from 'request'
import chalk from 'chalk'
import minimist from 'minimist'
// required to get our mix of old and ES6+ js to work with ugify-js 3
import uglifyjs from 'uglify-es'
import composer from 'gulp-uglify/composer'
// get all the configs: `pkg` and `site`
import pkg from './package.json'
import pkg from './package'
// load plugins
const spawn = require('child_process').spawn
const $ = require('gulp-load-plugins')()
const minify = composer(uglifyjs, console)
@ -25,14 +26,16 @@ const site = yaml.safeLoad(fs.readFileSync('./_config.yml'))
// handle errors
const onError = (error) => {
console.log($.util.colors.red('\nYou fucked up:', error.message, 'on line', error.lineNumber, '\n'))
console.log(chalk.red('\nYou fucked up:', error.message, 'on line', error.lineNumber, '\n'))
this.emit('end')
}
// 'development' is just default, production overrides are triggered
// by adding the production flag to the gulp command e.g. `gulp build --production`
const isProduction = ($.util.env.production === true)
const isStaging = ($.util.env.staging === true)
const options = minimist(process.argv.slice(2))
const isProduction = options.production === true
const isStaging = options.staging === true
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -109,9 +112,15 @@ export const jekyll = (done) => {
jekyllOptions = 'jekyll build --incremental --drafts --future'
}
const jekyllInstance = spawn('bundle', ['exec', jekyllOptions], { stdio: 'inherit' })
const jekyllInstance = cp.execFile('bundle', ['exec', jekyllOptions], { stdio: 'inherit' })
jekyllInstance.on('error', (error) => onError(error)).on('close', done)
const jekyllLogger = (buffer) => {
buffer.toString()
.split(/\n/)
.forEach((message) => console.log(message))
}
jekyllInstance.stdout.on('data', jekyllLogger).on('close', done)
}
@ -291,17 +300,17 @@ export const watchSrc = () => {
const buildBanner = (done) => {
let buildEnvironment
if ($.util.env.production) {
if (isProduction) {
buildEnvironment = 'production'
} else if ($.util.env.staging) {
} else if (isStaging) {
buildEnvironment = 'staging'
} else {
buildEnvironment = 'dev'
}
console.log($.util.colors.gray(' ------------------------------------------'))
console.log($.util.colors.green(` Building ${buildEnvironment} version...`))
console.log($.util.colors.gray(' ------------------------------------------'))
console.log(chalk.gray(' ------------------------------------------'))
console.log(chalk.green(` Building ${buildEnvironment} version...`))
console.log(chalk.gray(' ------------------------------------------'))
done()
}
@ -313,18 +322,18 @@ const buildBanner = (done) => {
const deployBanner = (done) => {
let deployTarget
if ($.util.env.live) {
if (options.live) {
deployTarget = 'Live'
} else {
deployTarget = 'Beta'
}
if (($.util.env.live || $.util.env.beta || $.util.env.gamma) === true) {
console.log($.util.colors.gray(' ------------------------------------------'))
console.log($.util.colors.green(` Deploying to ${deployTarget}... `))
console.log($.util.colors.gray(' ------------------------------------------'))
if ((options.live || options.beta || options.gamma) === true) {
console.log(chalk.gray(' ------------------------------------------'))
console.log(chalk.green(` Deploying to ${deployTarget}... `))
console.log(chalk.gray(' ------------------------------------------'))
} else {
console.log($.util.colors.red('\nHold your horses! You need to specify a deployment target like so: gulp deploy --beta. Possible targets are: --live, --beta, --gamma\n'))
console.log(chalk.red('\nHold your horses! You need to specify a deployment target like so: gulp deploy --beta. Possible targets are: --live, --beta, --gamma\n'))
}
done()
}
@ -352,9 +361,7 @@ export const build = series(
//
// `gulp dev`
//
export const dev = series(
build, server, watchSrc
)
export const dev = series(build, server, watchSrc)
// Set `gulp dev` as default: `gulp`
export default dev
@ -369,18 +376,18 @@ export default dev
// gulp deploy --beta
// gulp deploy --gamma
//
export const s3 = () => {
export const s3 = (done) => {
// create publisher, define config
let publisher
if ($.util.env.live === true) {
if (options.live === true) {
publisher = $.awspublish.create({
'params': { 'Bucket': S3BUCKET },
'accessKeyId': process.env.AWS_ACCESS_KEY,
'secretAccessKey': process.env.AWS_SECRET_KEY,
'region': S3REGION
})
} else if ($.util.env.beta === true) {
} else if (options.beta === true) {
publisher = $.awspublish.create({
'params': { 'Bucket': S3BUCKET_BETA },
'accessKeyId': process.env.AWS_BETA_ACCESS_KEY,
@ -444,6 +451,8 @@ export const s3 = () => {
.pipe($.awspublish.reporter({
states: ['create', 'update', 'delete']
}))
done()
}
@ -456,17 +465,17 @@ export const seo = (done) => {
const showResponse = (error, response) => {
if (error) {
$.util.log($.util.colors.red(error))
console.log(chalk.red(error))
} else {
$.util.log($.util.colors.gray('Status:', response && response.statusCode))
console.log(chalk.gray('Status:', response && response.statusCode))
if (response.statusCode === 200) {
$.util.log($.util.colors.green('Successfully notified'))
console.log(chalk.green('Successfully notified'))
}
}
}
if ($.util.env.live === true) {
if (options.live === true) {
request(`${googleUrl + site.url}/sitemap.xml`, showResponse)
request(`${bingUrl + site.url}/sitemap.xml`, showResponse)
}

View File

@ -1,5 +1,5 @@
{
"name": "ipdb-site",
"name": "@ipdb/website",
"version": "1.0.0",
"author": {
"name": "Matthias Kretschmann",
@ -7,7 +7,7 @@
},
"description": "The blockchain database governance the universe needs",
"homepage": "https://ipdb.io",
"license": "(c) 2017 IPDB Foundation - All Rights Reserved",
"license": "(c) 2018 IPDB Foundation - All Rights Reserved",
"main": "gulpfile.babel.js",
"scripts": {
"start": "gulp",
@ -30,50 +30,53 @@
"dependencies": {
"ajaxchimp": "^1.3.0",
"cookie-banner": "github:dobarkod/cookie-banner",
"jquery": "^3.2.1",
"smooth-scroll": "^12.1.5",
"jquery": "^3.3.1",
"smooth-scroll": "^14.2.1",
"textarea-autogrow": "^1.0.0"
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-eslint": "^8.1.2",
"babel-preset-env": "^1.6.1",
"browser-sync": "^2.23.2",
"@babel/core": "^7.1.0",
"@babel/preset-env": "^7.1.0",
"@babel/register": "^7.0.0",
"babel-eslint": "^10.0.1",
"browser-sync": "^2.24.7",
"chalk": "^2.4.1",
"concurrent-transform": "^1.0.0",
"critical": "^1.1.0",
"cross-spawn": "^5.1.0",
"critical": "^1.3.4",
"cross-spawn": "^6.0.5",
"del": "^3.0.0",
"eslint": "^4.14.0",
"eslint": "^5.6.0",
"eslint-config-ascribe": "^3.0.5",
"eslint-plugin-import": "^2.8.0",
"gulp": "github:gulpjs/gulp#4.0",
"gulp-autoprefixer": "^4.1.0",
"gulp-awspublish": "^3.3.0",
"gulp-awspublish-router": "^0.1.3",
"gulp-clean-css": "^3.9.2",
"gulp-cli": "^2.0.0",
"eslint-plugin-import": "^2.14.0",
"gulp": "next",
"gulp-autoprefixer": "^6.0.0",
"gulp-awspublish": "^3.4.0",
"gulp-awspublish-router": "^0.1.5",
"gulp-clean-css": "^3.10.0",
"gulp-cli": "^2.0.1",
"gulp-concat": "^2.6.1",
"gulp-header": "^1.8.9",
"gulp-htmlmin": "^4.0.0",
"gulp-header": "^2.0.5",
"gulp-htmlmin": "^5.0.1",
"gulp-if": "^2.0.2",
"gulp-imagemin": "^4.1.0",
"gulp-include": "^2.3.1",
"gulp-load-plugins": "^1.5.0",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.6.1",
"gulp-rename": "^1.4.0",
"gulp-replace": "^1.0.0",
"gulp-rev": "^8.1.1",
"gulp-rev-replace": "^0.4.3",
"gulp-sass": "^3.1.0",
"gulp-sourcemaps": "^2.6.3",
"gulp-svg-sprite": "^1.3.7",
"gulp-uglify": "^3.0.0",
"gulp-rev-replace": "^0.4.4",
"gulp-sass": "^4.0.1",
"gulp-sourcemaps": "^2.6.4",
"gulp-svg-sprite": "^1.5.0",
"gulp-uglify": "^3.0.1",
"gulp-util": "^3.0.8",
"js-yaml": "^3.10.0",
"request": "^2.83.0",
"stylelint": "^8.4.0",
"stylelint-config-bigchaindb": "^1.2.0",
"stylelint-config-standard": "^18.0.0",
"uglify-es": "^3.3.4"
"js-yaml": "^3.12.0",
"minimist": "^1.2.0",
"request": "^2.88.0",
"stylelint": "^9.6.0",
"stylelint-config-bigchaindb": "^1.2.1",
"stylelint-config-standard": "^18.2.0",
"uglify-es": "^3.3.9"
},
"engines": {
"node": ">=7.0.0"