From 1b458ad94ed21739ed34391a2bb682b5b7e21f12 Mon Sep 17 00:00:00 2001 From: guzman-raphael Date: Mon, 19 Sep 2022 03:31:26 -0500 Subject: [PATCH 1/5] Add initial home doc site. --- .docker/Dockerfile | 6 ++ .docker/pip_requirements.txt | 3 + .gitignore | 1 + .gitmodules | 8 -- README.md | 4 +- docker-compose-mkdocs-serve.yaml | 21 ------ docker-compose-multirepo-build.yaml | 20 ----- docker-compose.yaml | 36 +++++++++ docs.build.dockerfile | 5 -- docs.dockerfile | 5 -- docs/assets/elements-logo.png | Bin 48286 -> 0 bytes docs/element-array-ephys | 1 - docs/index.md | 56 -------------- docs/stylesheets/extra.css | 36 --------- docs/stylesheets/styles.css | 44 ----------- docs/sub_docs.html | 16 ---- mkdocs.yaml | 70 ++++++++++++++++++ mkdocs.yml | 19 ----- .../.icons/datajoint/company-logo.svg | 20 +++++ .../assets/images/project-logo-black.png | Bin 0 -> 35654 bytes .../assets/images/project-logo-color.png | Bin 0 -> 47623 bytes src/.overrides/assets/stylesheets/extra.css | 36 +++++++++ src/about/contribution.md | 7 ++ src/concepts/datatypes.md | 17 +++++ src/core.md | 10 +++ src/elements.md | 7 ++ src/getting_started.md | 9 +++ src/glossary.md | 9 +++ 28 files changed, 234 insertions(+), 232 deletions(-) create mode 100644 .docker/Dockerfile create mode 100644 .docker/pip_requirements.txt create mode 100644 .gitignore delete mode 100644 .gitmodules delete mode 100644 docker-compose-mkdocs-serve.yaml delete mode 100644 docker-compose-multirepo-build.yaml create mode 100644 docker-compose.yaml delete mode 100644 docs.build.dockerfile delete mode 100644 docs.dockerfile delete mode 100644 docs/assets/elements-logo.png delete mode 160000 docs/element-array-ephys delete mode 100644 docs/index.md delete mode 100644 docs/stylesheets/extra.css delete mode 100644 docs/stylesheets/styles.css delete mode 100644 docs/sub_docs.html create mode 100644 mkdocs.yaml delete mode 100644 mkdocs.yml create mode 100644 src/.overrides/.icons/datajoint/company-logo.svg create mode 100644 src/.overrides/assets/images/project-logo-black.png create mode 100644 src/.overrides/assets/images/project-logo-color.png create mode 100644 src/.overrides/assets/stylesheets/extra.css create mode 100644 src/about/contribution.md create mode 100644 src/concepts/datatypes.md create mode 100644 src/core.md create mode 100644 src/elements.md create mode 100644 src/getting_started.md create mode 100644 src/glossary.md diff --git a/.docker/Dockerfile b/.docker/Dockerfile new file mode 100644 index 00000000..a700fa2b --- /dev/null +++ b/.docker/Dockerfile @@ -0,0 +1,6 @@ +FROM datajoint/miniconda3:4.10.3-py3.9-alpine +WORKDIR /main +COPY --chown=anaconda:anaconda ./.docker/pip_requirements.txt ${PIP_REQUIREMENTS} +RUN /entrypoint.sh echo "Dependencies installed" +COPY --chown=anaconda:anaconda ./mkdocs.yaml /main/mkdocs.yaml +COPY --chown=anaconda:anaconda ./src /main/src diff --git a/.docker/pip_requirements.txt b/.docker/pip_requirements.txt new file mode 100644 index 00000000..4420246b --- /dev/null +++ b/.docker/pip_requirements.txt @@ -0,0 +1,3 @@ +mkdocs-material +mkdocs-redirects +mdx_truly_sane_lists diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..d97e1006 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +site \ No newline at end of file diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 8f8550e1..00000000 --- a/.gitmodules +++ /dev/null @@ -1,8 +0,0 @@ -[submodule "docs/sub_docs/element-array-ephys"] - path = docs/sub_docs/element-array-ephys - url = https://github.com/A-Baji/element-array-ephys.git - branch = gh-pages -[submodule "docs/element-array-ephys"] - path = docs/element-array-ephys - url = https://github.com/A-Baji/element-array-ephys.git - branch = gh-pages diff --git a/README.md b/README.md index 3a642cf9..f4f53c5b 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ -# documentation \ No newline at end of file +# DataJoint Documentation + +This is the home for all DataJoint's open-source and commercial documentation. \ No newline at end of file diff --git a/docker-compose-mkdocs-serve.yaml b/docker-compose-mkdocs-serve.yaml deleted file mode 100644 index 730fae66..00000000 --- a/docker-compose-mkdocs-serve.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# docker-compose -f ./docker-compose-mkdocs-serve.yaml up --build -version: "2.4" -services: - docs: - build: - context: . - dockerfile: docs.dockerfile - environment: - - THEME_DIR=material - volumes: - - .:/main - ports: - - 80:80 - command: - - bash - - -c - - | - pwd - mkdocs --version - mkdocs serve -a 0.0.0.0:80 - # tail -f /dev/null diff --git a/docker-compose-multirepo-build.yaml b/docker-compose-multirepo-build.yaml deleted file mode 100644 index 59da6d45..00000000 --- a/docker-compose-multirepo-build.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# HOST_UID="$(id -u)" HOST_GID="$(id -g)" docker-compose -f ./docker-compose-multirepo-build.yaml up --build -version: "2.4" -services: - docs: - build: - context: . - dockerfile: docs.build.dockerfile - volumes: - - .:/main - user: '${HOST_UID}:${HOST_GID}' - command: - - bash - - -c - - | - pwd - git init - git submodule init - git submodule update - git submodule foreach git pull origin gh-pages - # tail -f /dev/null diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..e6607779 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,36 @@ +# MODE="LIVE|BUILD" HOST_UID=1000 docker compose up --build +# navigate to http://localhost/ +version: "2.4" +services: + docs: + build: + dockerfile: .docker/Dockerfile + environment: + - MODE + - GITHUB_TOKEN + volumes: + - .:/main + user: ${HOST_UID}:anaconda + ports: + - 80:80 + command: + - sh + - -c + - | + set -e + if echo "$${MODE}" | grep -i live &>/dev/null; then + mkdocs serve --config-file ./mkdocs.yaml -a 0.0.0.0:80 + elif echo "$${MODE}" | grep -i build &>/dev/null; then + mkdocs build --config-file ./mkdocs.yaml + # git checkout gh-pages + # rm -R ./* + # cp -R /tmp/site/* ./ + # git add . --all + # git commit -m "Update documentation" -a || true + # # The above command will fail if no changes were present, so we ignore + # # the return code. + # git push -u origin gh-pages + else + echo "Unexpected mode..." + exit 1 + fi diff --git a/docs.build.dockerfile b/docs.build.dockerfile deleted file mode 100644 index 0ff27cfb..00000000 --- a/docs.build.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM python:latest - -WORKDIR /main -COPY . /main -RUN pip install mkdocs mkdocs-material \ No newline at end of file diff --git a/docs.dockerfile b/docs.dockerfile deleted file mode 100644 index 63fea08e..00000000 --- a/docs.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM python:slim - -WORKDIR /main -COPY . /main -RUN pip install mkdocs mkdocs-material \ No newline at end of file diff --git a/docs/assets/elements-logo.png b/docs/assets/elements-logo.png deleted file mode 100644 index 19b392a9de6d0304ed8d62eab494372d71e853ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48286 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%0D7lad1xR=t?!L+=8X{;ylwqJZ>i^=spEf&WodQ+n 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 Ire+)Re=>_q=>Px# diff --git a/docs/element-array-ephys b/docs/element-array-ephys deleted file mode 160000 index 97b46206..00000000 --- a/docs/element-array-ephys +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 97b4620698de3c012afdb39b39ee6c85ffeeacc4 diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index d33d2ef7..00000000 --- a/docs/index.md +++ /dev/null @@ -1,56 +0,0 @@ -# Welcome to Docs Hub - -For full documentation visit [mkdocs.org](https://www.mkdocs.org). - -## Projects - - - - -
- - - -## Commands - -* `mkdocs new [dir-name]` - Create a new project. -* `mkdocs serve` - Start the live-reloading docs server. -* `mkdocs build` - Build the documentation site. -* `mkdocs -h` - Print help message and exit. - -## Project layout - - mkdocs.yml # The configuration file. - docs/ - index.md # The documentation homepage. - ... # Other markdown pages, images and other files. diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css deleted file mode 100644 index 9a8e3ecf..00000000 --- a/docs/stylesheets/extra.css +++ /dev/null @@ -1,36 +0,0 @@ -[data-md-color-scheme="datajoint"] { - - --dj-yellow: #fcb954; - - --md-primary-fg-color: var(--dj-yellow); - --md-primary-bg-color: #000000; - --md-primary-fg-color--dark: var(--dj-yellow); - - --md-accent-fg-color: var(--dj-yellow); - - --md-code-bg-color: #e4f3f6; - - --md-footer-fg-color: var(--dj-yellow); -} - -[data-md-color-scheme="slate"] { - - --dj-yellow: #fcb954; - - --md-typeset-color: #e4f3f6; - --md-typeset-a-color: #17b2ff; - - --md-default-fg-color: #e4f3f6; - --md-default-fg-color--light: var(--dj-yellow); - - --md-primary-fg-color: var(--dj-yellow); - --md-primary-bg-color: #000000; - --md-primary-fg-color--dark: var(--dj-yellow); - - --md-accent-fg-color: var(--dj-yellow); - - --md-code-fg-color: #76c9e9; - --md-code-hl-comment-color: #ffd28d; - - --md-footer-fg-color: var(--dj-yellow); -} \ No newline at end of file diff --git a/docs/stylesheets/styles.css b/docs/stylesheets/styles.css deleted file mode 100644 index 04f0c1a8..00000000 --- a/docs/stylesheets/styles.css +++ /dev/null @@ -1,44 +0,0 @@ -section { - max-width: 44.5rem; - padding: 0; - color: #3c4043; - line-height: 1.25rem; -} - -section ul { - margin: 0; - outline: 0; - padding: 0; - display: inline-block; - max-width: 44.5rem; -} - -section li { - min-height: 3.125rem; - vertical-align: top; - display: inline-block; -} - -section li > a { - max-height: 7rem; - padding: 0.5rem; - margin: 0.5rem; - border: .0625rem solid #dadce0; - border-radius: .5rem; - display: block; -} - -section li img { - width: 4rem; - height: auto; - display: block; - margin-left: auto; - margin-right: auto; -} - -section li span { - height: auto; - display: block; - margin: .5rem 0; - text-align: center; -} \ No newline at end of file diff --git a/docs/sub_docs.html b/docs/sub_docs.html deleted file mode 100644 index df18da4b..00000000 --- a/docs/sub_docs.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -
- -
- \ No newline at end of file diff --git a/mkdocs.yaml b/mkdocs.yaml new file mode 100644 index 00000000..084522d6 --- /dev/null +++ b/mkdocs.yaml @@ -0,0 +1,70 @@ +# ---------------------- PROJECT SPECIFIC --------------------------- + +site_name: DataJoint Documentation +repo_url: https://github.com/datajoint-company/documentation +repo_name: datajoint-company/documentation +nav: + - Getting Started: getting_started.md + - Core: core.md + - Elements: elements.md + - Concepts: + - Datatypes: concepts/datatypes.md + - Glossary: glossary.md + - About: + - Contribution: about/contribution.md + +# ---------------------------- STANDARD ----------------------------- + +docs_dir: ./src +edit_uri: ./edit/main/src +theme: + name: material + custom_dir: src/.overrides + logo: assets/images/project-logo-black.png + favicon: assets/images/project-logo-color.png + features: + - toc.integrate + palette: + - media: "(prefers-color-scheme: light)" + scheme: datajoint + toggle: + icon: material/brightness-7 + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to light mode +plugins: + - search + - redirects: + redirect_maps: + "index.md": "getting_started.md" +markdown_extensions: + - attr_list + - toc: + permalink: true + - pymdownx.emoji: + options: + custom_icons: + - .overrides/.icons + - mdx_truly_sane_lists +extra: + generator: false # Disable watermark + social: + - icon: datajoint/company-logo + link: https://www.datajoint.com/ + - icon: fontawesome/brands/slack + link: https://datajoint.slack.com + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/company/datajoint + - icon: fontawesome/brands/twitter + link: https://twitter.com/DataJointIO + - icon: fontawesome/brands/github + link: https://github.com/datajoint + - icon: fontawesome/brands/stack-overflow + link: https://stackoverflow.com/questions/tagged/datajoint + - icon: fontawesome/brands/youtube + link: https://www.youtube.com/channel/UCdeCuFOTCXlVMRzh6Wk-lGg +extra_css: + - assets/stylesheets/extra.css \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index 982c3bc8..00000000 --- a/mkdocs.yml +++ /dev/null @@ -1,19 +0,0 @@ -site_name: DataJoint Core Docs -repo_url: https://github.com/datajoint/documentation -repo_name: datajoint/documentation -theme: - name: material - palette: - - media: "(prefers-color-scheme: light)" - scheme: datajoint - toggle: - icon: material/brightness-7 - name: Switch to dark mode - - media: "(prefers-color-scheme: dark)" - scheme: slate - toggle: - icon: material/brightness-4 - name: Switch to light mode - -extra_css: - - stylesheets/extra.css diff --git a/src/.overrides/.icons/datajoint/company-logo.svg b/src/.overrides/.icons/datajoint/company-logo.svg new file mode 100644 index 00000000..b99eecb2 --- /dev/null +++ b/src/.overrides/.icons/datajoint/company-logo.svg @@ -0,0 +1,20 @@ + + www.datajoint.com + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/.overrides/assets/images/project-logo-black.png b/src/.overrides/assets/images/project-logo-black.png new file mode 100644 index 0000000000000000000000000000000000000000..c8536889d06eecef49ad82b367050bb122c312f9 GIT binary patch literal 35654 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�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 PGK0XI{bgEi;(6_V*^oRY literal 0 HcmV?d00001 diff --git a/src/.overrides/assets/images/project-logo-color.png b/src/.overrides/assets/images/project-logo-color.png new file mode 100644 index 0000000000000000000000000000000000000000..828d87ca75bdde9bcb4381d12f4a30838e0dd5ac GIT binary patch literal 47623 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 Date: Mon, 19 Sep 2022 11:59:41 -0500 Subject: [PATCH 2/5] Add GHA deploy automation. --- .github/workflows/development.yml | 51 ++++++++++++++++++++++++++++--- docker-compose.yaml | 9 ------ mkdocs.yaml | 5 +++ src/core.md | 21 ++++++++++++- 4 files changed, 71 insertions(+), 15 deletions(-) diff --git a/.github/workflows/development.yml b/.github/workflows/development.yml index 28b64c0f..2f52554b 100644 --- a/.github/workflows/development.yml +++ b/.github/workflows/development.yml @@ -4,12 +4,53 @@ on: branches: - main jobs: - deploy: + deploy-docs: runs-on: ubuntu-latest + env: + DOCKER_CLIENT_TIMEOUT: "120" + COMPOSE_HTTP_TIMEOUT: "120" steps: - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - name: Compile docs static artifacts + run: | + MODE=BUILD HOST_UID=$(id -u) docker-compose up --exit-code-from docs --build + # - name: Add docs static artifacts + # uses: actions/upload-artifact@v2 + # with: + # name: docs-static + # path: site + # retention-days: 1 + # - name: Fetch docs static artifacts + # uses: actions/download-artifact@v2 + # with: + # name: docs-static + # path: site + - name: Commit documentation changes + run: | + git clone https://github.com/${GITHUB_REPOSITORY}.git \ + --branch gh-pages --single-branch gh-pages + rm -R gh-pages/* + cp -r site/* gh-pages/ + # cp .gitignore gh-pages/ + # touch gh-pages/.nojekyll + cd gh-pages + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add . --all + git commit -m "Update documentation" -a || true + # The above command will fail if no changes were present, so we ignore + # the return code. + - name: Push changes + uses: ad-m/github-push-action@master with: - python-version: 3.x - - run: pip install mkdocs-material - - run: mkdocs gh-deploy --force + branch: gh-pages + directory: gh-pages + github_token: ${{secrets.GITHUB_TOKEN}} +# git checkout gh-pages +# rm -R ./* +# cp -R /tmp/site/* ./ +# git add . --all +# git commit -m "Update documentation" -a || true +# # The above command will fail if no changes were present, so we ignore +# # the return code. +# git push -u origin gh-pages \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index e6607779..0a43aa9d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -7,7 +7,6 @@ services: dockerfile: .docker/Dockerfile environment: - MODE - - GITHUB_TOKEN volumes: - .:/main user: ${HOST_UID}:anaconda @@ -22,14 +21,6 @@ services: mkdocs serve --config-file ./mkdocs.yaml -a 0.0.0.0:80 elif echo "$${MODE}" | grep -i build &>/dev/null; then mkdocs build --config-file ./mkdocs.yaml - # git checkout gh-pages - # rm -R ./* - # cp -R /tmp/site/* ./ - # git add . --all - # git commit -m "Update documentation" -a || true - # # The above command will fail if no changes were present, so we ignore - # # the return code. - # git push -u origin gh-pages else echo "Unexpected mode..." exit 1 diff --git a/mkdocs.yaml b/mkdocs.yaml index 084522d6..cf22b9a6 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -49,6 +49,11 @@ markdown_extensions: custom_icons: - .overrides/.icons - mdx_truly_sane_lists + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format extra: generator: false # Disable watermark social: diff --git a/src/core.md b/src/core.md index 9bbcabd0..a00e3deb 100644 --- a/src/core.md +++ b/src/core.md @@ -7,4 +7,23 @@ Below are the projects that make up the family of core open-source projects: - **[MATLAB](https://datajoint.com/docs/core/datajoint-matlab/)** - **[LabBook](https://datajoint.com/docs/core/datajoint-labbook/)**: Data entry and data model browsing web GUI. - **[SciViz](https://datajoint.com/docs/core/sci-viz/)**: Visualization framework for making low-code web apps. -- **[Pharus](https://datajoint.com/docs/core/pharus/)**: REST interface for communicating with data pipelines. \ No newline at end of file +- **[Pharus](https://datajoint.com/docs/core/pharus/)**: REST interface for communicating with data pipelines. + +``` mermaid +graph + datajoint/mysql; + datajoint/miniconda3 --> datajoint/djbase; + datajoint/djbase --> datajoint/djtest; + datajoint/djbase --> datajoint/datajoint; + datajoint/djbase --> datajoint/djlab; + datajoint/djlab --> datajoint/djlabhub; +``` + +- Container Images: + - **[datajoint/mysql](https://datajoint.com/docs/core/mysql-docker/)**: Optimized MySQL image for use with DataJoint Engine. + - **[datajoint/miniconda3](https://datajoint.com/docs/core/miniconda3-docker/)**: Minimal Python image with `conda`. + - **[datajoint/djbase](https://datajoint.com/docs/core/djbase-docker/)**: DataJoint engine dependencies only. + - **[datajoint/djtest](https://datajoint.com/docs/core/djtest-docker/)**: Includes testing tools like `pytest`. + - **[datajoint/datajoint](https://datajoint.com/docs/core/datajoint-python/)**: Official DataJoint engine image. + - **[datajoint/djlab](https://datajoint.com/docs/core/djlab-docker/)**: Includes local Jupyter Lab environment. + - **[datajoint/djlabhub](https://datajoint.com/docs/core/djlabhub-docker/)**: Includes necessary dependencies for launching with Jupyter Hub. \ No newline at end of file From 6def5ebc5b56049cd12394f7ff39eb917ee62913 Mon Sep 17 00:00:00 2001 From: guzman-raphael Date: Mon, 19 Sep 2022 13:41:52 -0500 Subject: [PATCH 3/5] Fix comment. --- .github/workflows/development.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/development.yml b/.github/workflows/development.yml index 2f52554b..feb13933 100644 --- a/.github/workflows/development.yml +++ b/.github/workflows/development.yml @@ -38,7 +38,7 @@ jobs: git config --local user.name "GitHub Action" git add . --all git commit -m "Update documentation" -a || true - # The above command will fail if no changes were present, so we ignore + # The above command will exit if no changes were present, so we ignore # the return code. - name: Push changes uses: ad-m/github-push-action@master From 3b90b668ed0ab1ea4275966203b55f3518df3d62 Mon Sep 17 00:00:00 2001 From: guzman-raphael Date: Mon, 19 Sep 2022 15:49:37 -0500 Subject: [PATCH 4/5] Add missing keys from docker compose. --- docker-compose.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yaml b/docker-compose.yaml index 0a43aa9d..4c7428fd 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,6 +5,8 @@ services: docs: build: dockerfile: .docker/Dockerfile + context: . + image: datajoint/documentation environment: - MODE volumes: From 288e48639aff5aedd2bed23029b4866b6bf22b5e Mon Sep 17 00:00:00 2001 From: guzman-raphael Date: Mon, 19 Sep 2022 17:34:47 -0500 Subject: [PATCH 5/5] Add GHA and update to finalized structure. --- .github/workflows/development.yml | 23 +-------------- README.md | 14 ++++++++- docker-compose.yaml | 5 ++-- mkdocs.yaml | 12 ++++---- src/{about => community}/contribution.md | 0 src/core.md | 37 ++++++++++++++++-------- src/{getting_started.md => welcome.md} | 0 7 files changed, 48 insertions(+), 43 deletions(-) rename src/{about => community}/contribution.md (100%) rename src/{getting_started.md => welcome.md} (100%) diff --git a/.github/workflows/development.yml b/.github/workflows/development.yml index feb13933..3720fc79 100644 --- a/.github/workflows/development.yml +++ b/.github/workflows/development.yml @@ -14,31 +14,18 @@ jobs: - name: Compile docs static artifacts run: | MODE=BUILD HOST_UID=$(id -u) docker-compose up --exit-code-from docs --build - # - name: Add docs static artifacts - # uses: actions/upload-artifact@v2 - # with: - # name: docs-static - # path: site - # retention-days: 1 - # - name: Fetch docs static artifacts - # uses: actions/download-artifact@v2 - # with: - # name: docs-static - # path: site - name: Commit documentation changes run: | git clone https://github.com/${GITHUB_REPOSITORY}.git \ --branch gh-pages --single-branch gh-pages rm -R gh-pages/* cp -r site/* gh-pages/ - # cp .gitignore gh-pages/ - # touch gh-pages/.nojekyll cd gh-pages git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git add . --all git commit -m "Update documentation" -a || true - # The above command will exit if no changes were present, so we ignore + # The above command will fail if no changes were present, so we ignore # the return code. - name: Push changes uses: ad-m/github-push-action@master @@ -46,11 +33,3 @@ jobs: branch: gh-pages directory: gh-pages github_token: ${{secrets.GITHUB_TOKEN}} -# git checkout gh-pages -# rm -R ./* -# cp -R /tmp/site/* ./ -# git add . --all -# git commit -m "Update documentation" -a || true -# # The above command will fail if no changes were present, so we ignore -# # the return code. -# git push -u origin gh-pages \ No newline at end of file diff --git a/README.md b/README.md index f4f53c5b..809d3311 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ # DataJoint Documentation -This is the home for all DataJoint's open-source and commercial documentation. \ No newline at end of file +This is the home for all DataJoint's open-source and commercial documentation. + +## Test Locally + +To run locally, ensure you have `Docker` and `Docker Compose` installed. + +Then run the following: + +`MODE="LIVE" HOST_UID=$(id -u) docker compose up --build` + +Navigate to `http://localhost/` to preview the changes. + +This setup supports live-reloading so all that is needed is to save the markdown files and/or `mkdocs.yaml` file to trigger a reload. \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 4c7428fd..d63dc3a0 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,5 +1,6 @@ -# MODE="LIVE|BUILD" HOST_UID=1000 docker compose up --build -# navigate to http://localhost/ +# MODE="LIVE|BUILD" HOST_UID=$(id -u) docker compose up --build +# +# Navigate to http://localhost/ version: "2.4" services: docs: diff --git a/mkdocs.yaml b/mkdocs.yaml index cf22b9a6..f3ca037e 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -4,14 +4,14 @@ site_name: DataJoint Documentation repo_url: https://github.com/datajoint-company/documentation repo_name: datajoint-company/documentation nav: - - Getting Started: getting_started.md - - Core: core.md - - Elements: elements.md + - Welcome: welcome.md - Concepts: - Datatypes: concepts/datatypes.md + - Core: core.md + - Elements: elements.md - Glossary: glossary.md - - About: - - Contribution: about/contribution.md + - Community: + - Contribution: community/contribution.md # ---------------------------- STANDARD ----------------------------- @@ -39,7 +39,7 @@ plugins: - search - redirects: redirect_maps: - "index.md": "getting_started.md" + "index.md": "welcome.md" markdown_extensions: - attr_list - toc: diff --git a/src/about/contribution.md b/src/community/contribution.md similarity index 100% rename from src/about/contribution.md rename to src/community/contribution.md diff --git a/src/core.md b/src/core.md index a00e3deb..5cec6262 100644 --- a/src/core.md +++ b/src/core.md @@ -1,13 +1,27 @@ # Core +## Relational Database + +- MySQL usage +- Optimal configuration +- Maintenance +- Permission management and access control + + +## Programming Interfaces + Below are the projects that make up the family of core open-source projects: -- **Engine**: Relational framework that allows for intuitive queries and reproducible computation. - - **[Python](https://datajoint.com/docs/core/datajoint-python/)** - - **[MATLAB](https://datajoint.com/docs/core/datajoint-matlab/)** +- **[Python API](https://datajoint.com/docs/core/datajoint-python/)**: Relational framework that allows for intuitive queries and reproducible computation. +- **[MATLAB API](https://datajoint.com/docs/core/datajoint-matlab/)**: Relational framework that allows for intuitive queries and reproducible computation. +- **[Pharus](https://datajoint.com/docs/core/pharus/)**: REST interface for communicating with data pipelines. + +## Web Interfaces + - **[LabBook](https://datajoint.com/docs/core/datajoint-labbook/)**: Data entry and data model browsing web GUI. - **[SciViz](https://datajoint.com/docs/core/sci-viz/)**: Visualization framework for making low-code web apps. -- **[Pharus](https://datajoint.com/docs/core/pharus/)**: REST interface for communicating with data pipelines. + +## Container Images ``` mermaid graph @@ -19,11 +33,10 @@ graph datajoint/djlab --> datajoint/djlabhub; ``` -- Container Images: - - **[datajoint/mysql](https://datajoint.com/docs/core/mysql-docker/)**: Optimized MySQL image for use with DataJoint Engine. - - **[datajoint/miniconda3](https://datajoint.com/docs/core/miniconda3-docker/)**: Minimal Python image with `conda`. - - **[datajoint/djbase](https://datajoint.com/docs/core/djbase-docker/)**: DataJoint engine dependencies only. - - **[datajoint/djtest](https://datajoint.com/docs/core/djtest-docker/)**: Includes testing tools like `pytest`. - - **[datajoint/datajoint](https://datajoint.com/docs/core/datajoint-python/)**: Official DataJoint engine image. - - **[datajoint/djlab](https://datajoint.com/docs/core/djlab-docker/)**: Includes local Jupyter Lab environment. - - **[datajoint/djlabhub](https://datajoint.com/docs/core/djlabhub-docker/)**: Includes necessary dependencies for launching with Jupyter Hub. \ No newline at end of file +- **[datajoint/mysql](https://datajoint.com/docs/core/mysql-docker/)**: Optimized MySQL image for use with DataJoint Engine. +- **[datajoint/miniconda3](https://datajoint.com/docs/core/miniconda3-docker/)**: Minimal Python image with `conda`. +- **[datajoint/djbase](https://datajoint.com/docs/core/djbase-docker/)**: DataJoint engine dependencies only. +- **[datajoint/djtest](https://datajoint.com/docs/core/djtest-docker/)**: Includes testing tools like `pytest`. +- **[datajoint/datajoint](https://datajoint.com/docs/core/datajoint-python/)**: Official DataJoint engine image. +- **[datajoint/djlab](https://datajoint.com/docs/core/djlab-docker/)**: Includes local Jupyter Lab environment. +- **[datajoint/djlabhub](https://datajoint.com/docs/core/djlabhub-docker/)**: Includes necessary dependencies for launching with Jupyter Hub. \ No newline at end of file diff --git a/src/getting_started.md b/src/welcome.md similarity index 100% rename from src/getting_started.md rename to src/welcome.md