-
-
Notifications
You must be signed in to change notification settings - Fork 407
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1093 from ONEARMY/feat/dev-docs
Add new developer documentation backend (docusaurus)
- Loading branch information
Showing
20 changed files
with
11,062 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
module.exports = { | ||
presets: [require.resolve('@docusaurus/core/lib/babel/preset')], | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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_! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|
||
::: |
Oops, something went wrong.