diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..44597e6a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_size = 4 +end_of_line = lf +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..c38f65cd --- /dev/null +++ b/.eslintrc @@ -0,0 +1,14 @@ +{ + "parser": "babel-eslint", + "extends": [ + "oceanprotocol", + "oceanprotocol/react", + "plugin:prettier/recommended", + "prettier/react", + "prettier/standard" + ], + "plugins": ["prettier"], + "rules": { + "prettier/prettier": "error" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a2ab7551 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules +package-lock.json +yarn.lock +yarn-error.log +.cache +/public +.DS_Store diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..910ce78b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "none" +} diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..72ed8476 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: node_js +node_js: node + +# will run `npm install` automatically here + +script: + - npm test + - npm run build + +notifications: + email: false + +cache: + directories: + - node_modules diff --git a/README.md b/README.md index 1da8d207..cfd284b5 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,11 @@ > One site to rule all docs. +[![Build Status](https://travis-ci.com/oceanprotocol/docs.svg?branch=master)](https://travis-ci.com/oceanprotocol/docs) +[![js oceanprotocol](https://img.shields.io/badge/js-oceanprotocol-7b1173.svg)](https://github.com/oceanprotocol/eslint-config-oceanprotocol) +[![code style: prettier](https://img.shields.io/badge/code_style-prettier-7b1173.svg?style=flat-square)](https://github.com/prettier/prettier) +[![Greenkeeper badge](https://badges.greenkeeper.io/oceanprotocol/docs.svg)](https://greenkeeper.io/) + - [Content](#content) - [Editing docs](#editing-docs) - [Adding docs](#adding-docs) @@ -15,21 +20,41 @@ ...documentation concept... +The documentation is split in multiple parts whose content lives in this repo: + +- Core concepts: high-level explanation of concepts, assumptions, and components +- Setup: getting started for various stakeholders and use cases +- Tutorials: detailed tutorials + +Additionally, these docs live in their respective repos and are pulled into this site on build time: + +- API reference +- Component docs + ### Editing docs ### Adding docs ## Development +The site is a React app built with [Gatsby](https://www.gatsbyjs.org), pulling its content from various sources. + +To start development, clone this repo, install all dependencies, and start the development server: + ```bash +git clone git@github.com:oceanprotocol/docs.git +cd docs/ + npm i npm start ``` +This will start a hot-reloading local server exposed under [localhost:8000](http://localhost:8000). + ## Authors -- Troy McConaghy ([@ttmc](https://github.com/ttmc)) - [Ocean Protocol](https://oceanprotocol.com) -- Matthias Kretschmann ([@kremalicious](https://github.com/kremalicious)) - [Ocean Protocol](https://oceanprotocol.com) +- Troy McConaghy ([@ttmc](https://github.com/ttmc)) - [Ocean Protocol](https://oceanprotocol.com) +- Matthias Kretschmann ([@kremalicious](https://github.com/kremalicious)) - [Ocean Protocol](https://oceanprotocol.com) ## License @@ -47,4 +72,4 @@ 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. -``` \ No newline at end of file +``` diff --git a/content/coreconcepts/components.md b/content/coreconcepts/components.md new file mode 100644 index 00000000..70bd2bdd --- /dev/null +++ b/content/coreconcepts/components.md @@ -0,0 +1,3 @@ +--- +title: The components of Ocean Protocol +--- diff --git a/content/setup/marketplace.md b/content/setup/marketplace.md new file mode 100644 index 00000000..6b56f819 --- /dev/null +++ b/content/setup/marketplace.md @@ -0,0 +1,3 @@ +--- +title: Set up a data marketplace +--- diff --git a/content/tutorials/jupyter.md b/content/tutorials/jupyter.md new file mode 100644 index 00000000..2dd04817 --- /dev/null +++ b/content/tutorials/jupyter.md @@ -0,0 +1,5 @@ +--- +title: Use Jupyter notebooks to interact with the Ocean network +--- + +How to use Mantaray? diff --git a/gatsby-browser.js b/gatsby-browser.js new file mode 100755 index 00000000..b1e5c316 --- /dev/null +++ b/gatsby-browser.js @@ -0,0 +1,7 @@ +/** + * Implement Gatsby's Browser APIs in this file. + * + * See: https://www.gatsbyjs.org/docs/browser-apis/ + */ + +// You can delete this file if you're not using it diff --git a/gatsby-config.js b/gatsby-config.js new file mode 100755 index 00000000..3e48cb02 --- /dev/null +++ b/gatsby-config.js @@ -0,0 +1,25 @@ +module.exports = { + siteMetadata: { + title: 'Ocean Protocol Docs' + }, + plugins: [ + { + resolve: 'gatsby-source-filesystem', + options: { + name: 'images', + path: `${__dirname}/src/images` + } + }, + { + resolve: 'gatsby-source-filesystem', + options: { + name: 'content', + path: `${__dirname}/content` + } + }, + 'gatsby-plugin-react-helmet', + 'gatsby-transformer-sharp', + 'gatsby-plugin-sharp' + // 'gatsby-plugin-offline', + ] +} diff --git a/gatsby-node.js b/gatsby-node.js new file mode 100755 index 00000000..2f426651 --- /dev/null +++ b/gatsby-node.js @@ -0,0 +1,7 @@ +/** + * Implement Gatsby's Node APIs in this file. + * + * See: https://www.gatsbyjs.org/docs/node-apis/ + */ + +// You can delete this file if you're not using it diff --git a/gatsby-ssr.js b/gatsby-ssr.js new file mode 100755 index 00000000..b17b8fc1 --- /dev/null +++ b/gatsby-ssr.js @@ -0,0 +1,7 @@ +/** + * Implement Gatsby's SSR (Server Side Rendering) APIs in this file. + * + * See: https://www.gatsbyjs.org/docs/ssr-apis/ + */ + +// You can delete this file if you're not using it diff --git a/package.json b/package.json new file mode 100755 index 00000000..b136b5ca --- /dev/null +++ b/package.json @@ -0,0 +1,44 @@ +{ + "name": "@oceanprotocol/docs", + "description": "One site to rule all docs", + "version": "0.0.1", + "author": "Ocean Protocol ", + "dependencies": { + "gatsby": "^2.0.19", + "gatsby-image": "^2.0.15", + "gatsby-plugin-manifest": "^2.0.5", + "gatsby-plugin-offline": "^2.0.11", + "gatsby-plugin-react-helmet": "^3.0.0", + "gatsby-plugin-sharp": "^2.0.7", + "gatsby-source-filesystem": "^2.0.4", + "gatsby-transformer-sharp": "^2.1.4", + "react": "^16.5.1", + "react-dom": "^16.5.1", + "react-helmet": "^5.2.0" + }, + "license": "Apache-2.0", + "scripts": { + "build": "gatsby build", + "start": "gatsby develop", + "ssr": "npm run build && serve -s public/", + "format": "prettier --write 'src/**/*.{js,jsx}'", + "test": "eslint --ext .js,.jsx ." + }, + "devDependencies": { + "eslint": "^5.8.0", + "eslint-config-oceanprotocol": "^1.3.0", + "eslint-config-prettier": "^3.1.0", + "eslint-plugin-prettier": "^3.0.0", + "prettier": "^1.14.2" + }, + "repository": { + "type": "git", + "url": "https://github.com/oceanprotocol/docs" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/src/components/header.js b/src/components/header.js new file mode 100755 index 00000000..770cb641 --- /dev/null +++ b/src/components/header.js @@ -0,0 +1,17 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { Link } from 'gatsby' + +const Header = ({ siteTitle }) => ( +
+

+ {siteTitle} +

+
+) + +Header.propTypes = { + siteTitle: PropTypes.string +} + +export default Header diff --git a/src/components/image.js b/src/components/image.js new file mode 100755 index 00000000..70b81723 --- /dev/null +++ b/src/components/image.js @@ -0,0 +1,36 @@ +import React from 'react' +import { StaticQuery, graphql } from 'gatsby' +import Img from 'gatsby-image' + +/* + * This component is built using `gatsby-image` to automatically serve optimized + * images with lazy loading and reduced file sizes. The image is loaded using a + * `StaticQuery`, which allows us to load the image from directly within this + * component, rather than having to pass the image data down from pages. + * + * For more information, see the docs: + * - `gatsby-image`: https://gatsby.app/gatsby-image + * - `StaticQuery`: https://gatsby.app/staticquery + */ + +const Image = () => ( + ( + + )} + /> +) +export default Image diff --git a/src/components/layout.css b/src/components/layout.css new file mode 100755 index 00000000..e485487b --- /dev/null +++ b/src/components/layout.css @@ -0,0 +1,624 @@ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; +} +audio:not([controls]) { + display: none; + height: 0; +} +progress { + vertical-align: baseline; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} +a:active, +a:hover { + outline-width: 0; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} +b, +strong { + font-weight: inherit; + font-weight: bolder; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: .67em 0; +} +mark { + background-color: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -.25em; +} +sup { + top: -.5em; +} +img { + border-style: none; +} +svg:not(:root) { + overflow: hidden; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +figure { + margin: 1em 40px; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +button, +input, +optgroup, +select, +textarea { + font: inherit; + margin: 0; +} +optgroup { + font-weight: 700; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +[type=reset], +[type=submit], +button, +html [type=button] { + -webkit-appearance: button; +} +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0; +} +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em; +} +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} +textarea { + overflow: auto; +} +[type=checkbox], +[type=radio] { + box-sizing: border-box; + padding: 0; +} +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto; +} +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +[type=search]::-webkit-search-cancel-button, +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} +html { + font: 112.5%/1.45em georgia, serif; + box-sizing: border-box; + overflow-y: scroll; +} +* { + box-sizing: inherit; +} +*:before { + box-sizing: inherit; +} +*:after { + box-sizing: inherit; +} +body { + color: hsla(0, 0%, 0%, 0.8); + font-family: georgia, serif; + font-weight: normal; + word-wrap: break-word; + font-kerning: normal; + -moz-font-feature-settings: "kern", "liga", "clig", "calt"; + -ms-font-feature-settings: "kern", "liga", "clig", "calt"; + -webkit-font-feature-settings: "kern", "liga", "clig", "calt"; + font-feature-settings: "kern", "liga", "clig", "calt"; +} +img { + max-width: 100%; + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +h1 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 2.25rem; + line-height: 1.1; +} +h2 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 1.62671rem; + line-height: 1.1; +} +h3 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 1.38316rem; + line-height: 1.1; +} +h4 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 1rem; + line-height: 1.1; +} +h5 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 0.85028rem; + line-height: 1.1; +} +h6 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 0.78405rem; + line-height: 1.1; +} +hgroup { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +ul { + margin-left: 1.45rem; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + list-style-position: outside; + list-style-image: none; +} +ol { + margin-left: 1.45rem; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + list-style-position: outside; + list-style-image: none; +} +dl { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +dd { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +p { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +figure { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +pre { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + font-size: 0.85rem; + line-height: 1.42; + background: hsla(0, 0%, 0%, 0.04); + border-radius: 3px; + overflow: auto; + word-wrap: normal; + padding: 1.45rem; +} +table { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + font-size: 1rem; + line-height: 1.45rem; + border-collapse: collapse; + width: 100%; +} +fieldset { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +blockquote { + margin-left: 1.45rem; + margin-right: 1.45rem; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +form { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +noscript { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +iframe { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +hr { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: calc(1.45rem - 1px); + background: hsla(0, 0%, 0%, 0.2); + border: none; + height: 1px; +} +address { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +b { + font-weight: bold; +} +strong { + font-weight: bold; +} +dt { + font-weight: bold; +} +th { + font-weight: bold; +} +li { + margin-bottom: calc(1.45rem / 2); +} +ol li { + padding-left: 0; +} +ul li { + padding-left: 0; +} +li > ol { + margin-left: 1.45rem; + margin-bottom: calc(1.45rem / 2); + margin-top: calc(1.45rem / 2); +} +li > ul { + margin-left: 1.45rem; + margin-bottom: calc(1.45rem / 2); + margin-top: calc(1.45rem / 2); +} +blockquote *:last-child { + margin-bottom: 0; +} +li *:last-child { + margin-bottom: 0; +} +p *:last-child { + margin-bottom: 0; +} +li > p { + margin-bottom: calc(1.45rem / 2); +} +code { + font-size: 0.85rem; + line-height: 1.45rem; +} +kbd { + font-size: 0.85rem; + line-height: 1.45rem; +} +samp { + font-size: 0.85rem; + line-height: 1.45rem; +} +abbr { + border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); + cursor: help; +} +acronym { + border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); + cursor: help; +} +abbr[title] { + border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); + cursor: help; + text-decoration: none; +} +thead { + text-align: left; +} +td, +th { + text-align: left; + border-bottom: 1px solid hsla(0, 0%, 0%, 0.12); + font-feature-settings: "tnum"; + -moz-font-feature-settings: "tnum"; + -ms-font-feature-settings: "tnum"; + -webkit-font-feature-settings: "tnum"; + padding-left: 0.96667rem; + padding-right: 0.96667rem; + padding-top: 0.725rem; + padding-bottom: calc(0.725rem - 1px); +} +th:first-child, +td:first-child { + padding-left: 0; +} +th:last-child, +td:last-child { + padding-right: 0; +} +tt, +code { + background-color: hsla(0, 0%, 0%, 0.04); + border-radius: 3px; + font-family: "SFMono-Regular", Consolas, "Roboto Mono", "Droid Sans Mono", + "Liberation Mono", Menlo, Courier, monospace; + padding: 0; + padding-top: 0.2em; + padding-bottom: 0.2em; +} +pre code { + background: none; + line-height: 1.42; +} +code:before, +code:after, +tt:before, +tt:after { + letter-spacing: -0.2em; + content: " "; +} +pre code:before, +pre code:after, +pre tt:before, +pre tt:after { + content: ""; +} +@media only screen and (max-width: 480px) { + html { + font-size: 100%; + } +} diff --git a/src/components/layout.js b/src/components/layout.js new file mode 100755 index 00000000..e56aa0e4 --- /dev/null +++ b/src/components/layout.js @@ -0,0 +1,42 @@ +import React from 'react' +import PropTypes from 'prop-types' +import Helmet from 'react-helmet' +import { StaticQuery, graphql } from 'gatsby' + +import Header from './header' +import './layout.css' + +const Layout = ({ children }) => ( + ( + <> + + + +
+
{children}
+ + )} + /> +) + +Layout.propTypes = { + children: PropTypes.node.isRequired +} + +export default Layout diff --git a/src/images/gatsby-astronaut.png b/src/images/gatsby-astronaut.png new file mode 100755 index 00000000..da58ece0 Binary files /dev/null and b/src/images/gatsby-astronaut.png differ diff --git a/src/images/gatsby-icon.png b/src/images/gatsby-icon.png new file mode 100755 index 00000000..908bc78a Binary files /dev/null and b/src/images/gatsby-icon.png differ diff --git a/src/pages/404.js b/src/pages/404.js new file mode 100755 index 00000000..666eca23 --- /dev/null +++ b/src/pages/404.js @@ -0,0 +1,11 @@ +import React from 'react' +import Layout from '../components/layout' + +const NotFoundPage = () => ( + +

NOT FOUND

+

You just hit a route that doesn't exist... the sadness.

+
+) + +export default NotFoundPage diff --git a/src/pages/index.js b/src/pages/index.js new file mode 100755 index 00000000..333f4ef1 --- /dev/null +++ b/src/pages/index.js @@ -0,0 +1,17 @@ +import React from 'react' +import { Link } from 'gatsby' + +import Layout from '../components/layout' +import Image from '../components/image' + +const IndexPage = () => ( + +

Hi people

+

Welcome to your new Gatsby site.

+

Now go build something great.

+ + Go to page 2 +
+) + +export default IndexPage diff --git a/src/pages/page-2.js b/src/pages/page-2.js new file mode 100755 index 00000000..568c2b6f --- /dev/null +++ b/src/pages/page-2.js @@ -0,0 +1,14 @@ +import React from 'react' +import { Link } from 'gatsby' + +import Layout from '../components/layout' + +const SecondPage = () => ( + +

Hi from the second page

+

Welcome to page 2

+ Go back to the homepage +
+) + +export default SecondPage