docs/README.md

212 lines
8.1 KiB
Markdown
Raw Normal View History

2018-11-09 22:59:22 +01:00
[![banner](https://raw.githubusercontent.com/oceanprotocol/art/master/github/repo-banner%402x.png)](https://docs.oceanprotocol.com)
2018-11-07 11:25:05 +01:00
<h1 align="center">docs</h1>
> 🐍 Ocean Protocol's official documentation.
2018-11-07 11:25:05 +01:00
[![Build Status](https://travis-ci.com/oceanprotocol/docs.svg?token=3psqw6c8KMDqfdGQ2x6d&branch=master)](https://travis-ci.com/oceanprotocol/docs)
2018-11-07 12:24:53 +01:00
[![js oceanprotocol](https://img.shields.io/badge/js-oceanprotocol-7b1173.svg)](https://github.com/oceanprotocol/eslint-config-oceanprotocol)
2018-11-10 15:04:16 +01:00
[![css bigchaindb](https://img.shields.io/badge/css-bigchaindb-39BA91.svg)](https://github.com/bigchaindb/stylelint-config-bigchaindb)
2018-11-07 12:24:53 +01:00
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-7b1173.svg?style=flat-square)](https://github.com/prettier/prettier)
2018-11-07 13:05:13 +01:00
[![Greenkeeper badge](https://badges.greenkeeper.io/oceanprotocol/docs.svg?token=2757ede2de02f4679c4dfc6597a331a26f2f206fed53bfeb708c64cbe3d5f55f&ts=1541590505792)](https://greenkeeper.io/)
2018-11-07 12:24:53 +01:00
---
2018-11-09 12:46:43 +01:00
**These docs are meant to be viewed on [docs.oceanprotocol.com](https://docs.oceanprotocol.com). You can still browse them here but links or images might not work in some places.**
2018-11-11 04:02:34 +01:00
**If you want to contribute to those docs, then [read on here](#content).**
2018-11-09 12:46:43 +01:00
---
2018-11-07 11:25:05 +01:00
- [Content](#content)
2018-11-11 04:02:34 +01:00
- [Content files](#content-files)
2018-11-07 11:25:05 +01:00
- [Editing docs](#editing-docs)
- [Adding docs](#adding-docs)
- [Repositories](#repositories)
2018-11-07 11:25:05 +01:00
- [Development](#development)
2018-11-10 14:47:09 +01:00
- [Use Docker](#use-docker)
- [GitHub GraphQL API](#github-graphql-api)
2018-11-07 11:25:05 +01:00
- [Authors](#authors)
- [License](#license)
## Content
2018-11-11 04:02:34 +01:00
The documentation is split in multiple sections whose content lives in this repo:
2018-11-07 11:25:05 +01:00
2018-11-11 04:02:34 +01:00
- **Core concepts**: high-level explanation of concepts, assumptions, and components
- **Setup**: getting started for various stakeholders and use cases
- **Tutorials**: detailed tutorials
2018-11-11 04:02:34 +01:00
Those sections are defined in the [`/data/sections.yml`](data/sections.yml) file.
2018-11-11 04:02:34 +01:00
### Content files
2018-11-11 04:02:34 +01:00
All content lives in the [`/content`](content/) & [`/data`](data/) folders utilizing GitHub Flavored Markdown and YAML. Content is organized through subfolders corresponding to the sections mentioned above. Those subfolder names, along with the file name, define the final url of a given piece of content.
2018-11-07 12:24:53 +01:00
2018-11-11 04:02:34 +01:00
The final navigational organisation of the content is driven through the sidebar files under [`/data/sidebars`](data/sidebars/). Some global values used throughout the site can be set in [`config.js`](config.js).
2018-11-07 12:24:53 +01:00
2018-11-11 04:02:34 +01:00
Have a look at [docs.oceanprotocol.com/test/](https://docs.oceanprotocol.com/test/) to see what content elements can be used in the docs.
TODO: Additionally, these docs live in their respective repos and are pulled into this site on build time:
2018-11-07 12:24:53 +01:00
2018-11-10 21:08:10 +01:00
- API references
2018-11-07 12:24:53 +01:00
- Component docs
2018-11-07 11:25:05 +01:00
### Editing docs
2018-11-10 21:08:10 +01:00
Every article on [docs.oceanprotocol.com](https://docs.oceanprotocol.com) ends with an _Edit this page on GitHub_ link. Clicking that will put you to the right place in the repository from where you can hit the _Edit_ pencil icon on GitHub.
GitHub will automatically fork the repository if you are not part of the `oceanprotocol` organisation on GitHub. Members can simply push to a new branch on the original repo.
The editing workflow is as follows:
1. Make your changes
2. Push your changes to a new branch in the repo, or in your fork
3. Open a pull request against `master`, automatically asking for review
2018-11-10 21:08:10 +01:00
4. Wait for review, possibly make requested changes
5. Wait for all checks to pass
6. Merge!
2018-11-07 11:25:05 +01:00
### Adding docs
2018-11-10 21:08:10 +01:00
1. Add new Markdown file under one of the folders under [`/content`](content/)
2. Add new path to one of the sidebars in [`/data/sidebars`](data/sidebars/)
3. ...
### Repositories
The repositories list is currently sourced from the [`/data/repositories.yml`](data/repositories.yml) file, defining the grouping, the display order, and which repos to include.
2018-11-10 21:08:10 +01:00
Including a repo requires only the `name` key and value, and it needs to be exactly the same as the repo name on GitHub:
```yaml
2018-11-10 22:21:04 +01:00
- name: pleuston
```
2018-11-10 21:08:10 +01:00
Additional information about a repo will then be fetched automatically via [GitHub's GraphQL API](https://developer.github.com/v4/) on build time, and re-fetched every 5 minutes on client side. You can also add a private repo to prepare for a release, it will show up as soon as it is made public on GitHub.
The above example will result in:
<img width="547" alt="screen shot 2018-11-10 at 22 43 41" src="https://user-images.githubusercontent.com/90316/48306511-164fea00-e53a-11e8-97d6-c481ea087c7d.png">
2018-11-10 21:08:10 +01:00
2018-11-11 04:02:34 +01:00
This repository component can also be used within any Markdown content like so:
```
<repo name="pleuston"></repo>
```
2018-11-10 22:21:04 +01:00
Additionally, you can attach multiple links to a repo. The GitHub link is automatically added for every repository and will always be displayed. Add more links like so:
```yaml
- name: keeper-contracts
links:
- name: Documentation
url: https://github.com/oceanprotocol/keeper-contracts/tree/develop/doc
```
- [`/data/repositories.yml`](data/repositories.yml)
2018-11-07 11:25:05 +01:00
## Development
2018-11-07 12:24:53 +01:00
The site is a React app built with [Gatsby](https://www.gatsbyjs.org), pulling its content from various sources.
2018-11-10 14:47:09 +01:00
As a prerequisite you'll need on your machine:
- Node.js
- npm
Clone this repo, install all dependencies, and start the development server:
2018-11-07 12:24:53 +01:00
2018-11-07 11:25:05 +01:00
```bash
2018-11-07 12:24:53 +01:00
git clone git@github.com:oceanprotocol/docs.git
cd docs/
2018-11-11 04:02:34 +01:00
# add GITHUB_TOKEN
cp .env.sample .env
vi .env
2018-11-07 11:25:05 +01:00
npm i
npm start
```
2018-11-11 04:02:34 +01:00
For getting your `GITHUB_TOKEN`, see [GitHub GraphQL API](#github-graphql-api)
2018-11-07 12:24:53 +01:00
This will start a hot-reloading local server exposed under [localhost:8000](http://localhost:8000).
2018-11-10 14:47:09 +01:00
### Use Docker
Alternatively, you can use Docker for which you need to have installed on your machine:
- [Docker](https://www.docker.com)
- [Docker Compose](https://docs.docker.com/compose/)
2018-11-11 04:02:34 +01:00
- `GITHUB_TOKEN` in `.env`, see [GitHub GraphQL API](#github-graphql-api)
2018-11-10 14:47:09 +01:00
Then use Compose to bring everything up:
```bash
docker-compose up
```
This will expose a hot-reloading server under [localhost:8000](http://localhost:8000).
## GitHub GraphQL API
The GitHub GraphQL API integration is done through [gatsby-source-graphql](https://www.gatsbyjs.org/packages/gatsby-source-graphql/) and requires authorization.
An environment variable `GITHUB_TOKEN` needs to present, filled with a [personal access token](https://github.com/settings/tokens) with the scope `public_repo`.
2018-11-10 21:08:10 +01:00
For local development, you can simply [create a personal access token](https://github.com/settings/tokens) and use it in your local .env file:
```bash
2018-11-11 01:32:05 +01:00
cp .env.sample .env
vi .env
2018-11-11 04:02:34 +01:00
# GITHUB_TOKEN=add_your_token_here
```
2018-11-10 21:08:10 +01:00
When running the site locally, you can use the GraphiQL client running under [localhost:8000/\_\_\_graphql](http://localhost:8000/___graphql) to explore the whole GraphQL layer of the site (not just the GitHub infos).
2018-11-10 19:27:27 +01:00
<img width="982" alt="screen shot 2018-11-10 at 18 41 45" src="https://user-images.githubusercontent.com/90316/48304718-66b94e80-e51e-11e8-8333-e5cadbf4d4b8.png">
2018-11-10 21:08:10 +01:00
This query should get you started to explore what information you can get from GitHub:
2018-11-10 19:27:27 +01:00
```graphql
query {
github {
organization(login: "oceanprotocol") {
repositories(first: 100) {
edges {
node {
name
description
url
}
}
}
}
}
}
```
2018-11-07 11:25:05 +01:00
## Authors
2018-11-07 12:24:53 +01:00
- Troy McConaghy ([@ttmc](https://github.com/ttmc)) - [Ocean Protocol](https://oceanprotocol.com)
- Matthias Kretschmann ([@kremalicious](https://github.com/kremalicious)) - [Ocean Protocol](https://oceanprotocol.com)
2018-11-07 11:25:05 +01:00
## License
```
Copyright 2018 Ocean Protocol Foundation Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
2018-11-07 12:24:53 +01:00
```