Skip to content

Commit

Permalink
Merge pull request #1093 from ONEARMY/feat/dev-docs
Browse files Browse the repository at this point in the history
Add new developer documentation backend (docusaurus)
  • Loading branch information
chrismclarke authored Jan 30, 2021
2 parents c43ea28 + eec4e46 commit 06d3ed3
Show file tree
Hide file tree
Showing 20 changed files with 11,062 additions and 0 deletions.
20 changes: 20 additions & 0 deletions documentation/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Dependencies
/node_modules

# Production
/build

# Generated files
.docusaurus
.cache-loader

# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
33 changes: 33 additions & 0 deletions documentation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Website

This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern static website generator.

## Installation

```console
yarn install
```

## Local Development

```console
yarn start
```

This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server.

## Build

```console
yarn build
```

This command generates static content into the `build` directory and can be served using any static contents hosting service.

## Deployment

```console
GIT_USER=<Your GitHub username> USE_SSH=true yarn deploy
```

If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
3 changes: 3 additions & 0 deletions documentation/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
}
17 changes: 17 additions & 0 deletions documentation/docs/Examples/mdx.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
id: mdx
title: Powered by MDX
---

You can write JSX and use React components within your Markdown thanks to [MDX](https://mdxjs.com/).

export const Highlight = ({children, color}) => ( <span style={{
backgroundColor: color,
borderRadius: '2px',
color: '#fff',
padding: '0.2rem',
}}>{children}</span> );

<Highlight color="#25c2a0">Docusaurus green</Highlight> and <Highlight color="#1877F2">Facebook blue</Highlight> are my favorite colors.

I can write **Markdown** alongside my _JSX_!
23 changes: 23 additions & 0 deletions documentation/docs/Server Maintenance/data-migration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
id: dataMigration
title: Automated Backup and Migration
---

The platform consists of many interacting components, including local cache and server databases, frontend code, backend code and serverless functions, and cloud file storage.

From time to time (such as ahead of large updates), it might be useful to migrate all data to a In order to fully ensure major updates aren't breaking, a full preview deployment is a useful way to check for legacy or unexepected issues.

Currently this can be done in a semi-automated way using a script in the scripts folder to take a copy of the production site database and copy it to a preview site.

```
cd scripts
ts-node ./maintenance/reset-staging-site.ts
```

:::note
This script requires access to a service worker with specific permissions for source and target projects, and intermediate storage buckets.
:::

For more information about the script and known limitations see the source code at [scripts/maintenance/reset-staging-site.ts](https://github.com/ONEARMY/community-platform/blob/master/scripts/maintenance/reset-staging-site.ts).

The script is currently run weekly via the github action, see the source code at [.github/workflows/reset-staging-site.yml](https://github.com/ONEARMY/community-platform/blob/master/.github/workflows/reset-staging-site.yml))
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
76 changes: 76 additions & 0 deletions documentation/docs/Server Maintenance/manual-backups.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
id: manualBackups
title: Manual Backups
---

In order to fully backup the platform there are 3 areas that need to be backed up:

1. Firestore Database
https://console.cloud.google.com/firestore/import-export?project=onearmyworld

Use in interactive export tool to create a backup of the database. If the data is simply for re-importing later the entire database can be selected. If only some specific data collections are likely to be imported, or tools like bigquery will be used to analyse the exported data then individual collections should be specified (e.g. `v3_howtos`)

![](images/firestore-backup-1.png)

The backup can be made to the existing `onearmyworld-exports` bucket, or a personal storage bucket. Exports should be named in a consistent way, prefixed with a timestamp (`yyyy-mm-dd`)

The backup can also be downloaded locally using the [gsutil](https://cloud.google.com/storage/docs/gsutil) tool

```
gsutil cp -r gs://onearmyworld-exports/name-of-backup ./my-local-backup-folder
```

2. Firebase Storage
This is a bucket in firebase cloud storage, and so can be handled in a similar way to the firestore database, via the gcloud console

![](images/firestore-backup-2.png)

Additionally, files can be downloaded to backup locally or to another storage provider via [gsutil](https://cloud.google.com/storage/docs/gsutil) run from a local command line, e.g.

```
gsutil cp -r \
gs://onearmyworld.appspot.com/uploads \
./my-local-backup-folder
```

3. Firbase Auth Users
See documentation: https://firebase.google.com/docs/cli/auth

## Importing Data from a Backup

The same graphical interface can be used to import data. However care should be taken before importing in case of unintended side-effects.

Specifically firebase functions should first be disabled and data may need to first be deleted from the target project.

:::danger

If functions are triggered on database changes they will be triggered for every document that is imported
:::
:::caution
When importing a collection any existing data will be merged with the import.
:::

## Migrate/Clone

In order to migrate the data to another server similar steps must be taken and permissions

## Service worker

- activate required api: https://console.cloud.google.com/apis/api/cloudresourcemanager.googleapis.com
- creating
- permissions (easiest to assign as viewer for source, and datastore import/export target)
- Source firestore - viewer
- Target firestore - viewer, datastore import/export
- Storage bucket - storage admin
- Service Account User
- https://cloud.google.com/firestore/docs/security/iam#roles
- https://cloud.google.com/iam/docs/granting-changing-revoking-access
- - Check

```
gcloud projects list
```

```
gcloud auth list
```
203 changes: 203 additions & 0 deletions documentation/docs/doc1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
---
id: doc1
title: Style Guide
sidebar_label: Style Guide
slug: /
---

You can write content using [GitHub-flavored Markdown syntax](https://github.github.com/gfm/).

## Markdown Syntax

To serve as an example page when styling markdown based Docusaurus sites.

## Headers

# H1 - Create the best documentation

## H2 - Create the best documentation

### H3 - Create the best documentation

#### H4 - Create the best documentation

##### H5 - Create the best documentation

###### H6 - Create the best documentation

---

## Emphasis

Emphasis, aka italics, with *asterisks* or _underscores_.

Strong emphasis, aka bold, with **asterisks** or __underscores__.

Combined emphasis with **asterisks and _underscores_**.

Strikethrough uses two tildes. ~~Scratch this.~~

---

## Lists

1. First ordered list item
1. Another item
- Unordered sub-list.
1. Actual numbers don't matter, just that it's a number
1. Ordered sub-list
1. And another item.

* Unordered list can use asterisks

- Or minuses

+ Or pluses

---

## Links

[I'm an inline-style link](https://www.google.com/)

[I'm an inline-style link with title](https://www.google.com/ "Google's Homepage")

[I'm a reference-style link][arbitrary case-insensitive reference text]

[You can use numbers for reference-style link definitions][1]

Or leave it empty and use the [link text itself].

URLs and URLs in angle brackets will automatically get turned into links. http://www.example.com/ or <http://www.example.com/> and sometimes example.com (but not on GitHub, for example).

Some text to show that the reference links can follow later.

[arbitrary case-insensitive reference text]: https://www.mozilla.org/
[1]: http://slashdot.org/
[link text itself]: http://www.reddit.com/

---

## Images

Here's our logo (hover to see the title text):

Inline-style: ![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png 'Logo Title Text 1')

Reference-style: ![alt text][logo]

[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png 'Logo Title Text 2'

Images from any folder can be used by providing path to file. Path should be relative to markdown file.

![img](../static/img/logo.svg)

---

## Code

```javascript
var s = 'JavaScript syntax highlighting';
alert(s);
```

```python
s = "Python syntax highlighting"
print(s)
```

```
No language indicated, so no syntax highlighting.
But let's throw in a <b>tag</b>.
```

```js {2}
function highlightMe() {
console.log('This line can be highlighted!');
}
```

---

## Tables

Colons can be used to align columns.

| Tables | Are | Cool |
| ------------- | :-----------: | -----: |
| col 3 is | right-aligned | \$1600 |
| col 2 is | centered | \$12 |
| zebra stripes | are neat | \$1 |

There must be at least 3 dashes separating each header cell. The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown.

| Markdown | Less | Pretty |
| -------- | --------- | ---------- |
| _Still_ | `renders` | **nicely** |
| 1 | 2 | 3 |

---

## Blockquotes

> Blockquotes are very handy in email to emulate reply text. This line is part of the same quote.
Quote break.

> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can _put_ **Markdown** into a blockquote.
---

## Inline HTML

<dl>
<dt>Definition list</dt>
<dd>Is something people use sometimes.</dd>

<dt>Markdown in HTML</dt>
<dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
</dl>

---

## Line Breaks

Here's a line for us to start with.

This line is separated from the one above by two newlines, so it will be a _separate paragraph_.

This line is also a separate paragraph, but... This line is only separated by a single newline, so it's a separate line in the _same paragraph_.

---

## Admonitions

:::note

This is a note

:::

:::tip

This is a tip

:::

:::important

This is important

:::

:::caution

This is a caution

:::

:::warning

This is a warning

:::
Loading

0 comments on commit 06d3ed3

Please sign in to comment.