mkdocs, notebooks, postgres workspaces

This commit is contained in:
bluxmit 2022-07-20 17:08:36 +00:00
parent 13178639cb
commit b06b934e7b
59 changed files with 1205 additions and 368 deletions

View file

@ -61,7 +61,6 @@ VS-Code extensions and works in browser. This means it can run inside a docker c
- **Job scheduler:** cron
- **Terminal multiplexer:** tmux
## Docs
See our guides

View file

@ -1,63 +0,0 @@
MkDocs-MagicSpace is an all-in-one tool, carefully crafted to make the development of gorgeous documentation
websites like [**this one**](https://mkdocs-magicspace.alnoda.org/) as easy as possible.
## Why documentation websites with MkDocs
*Why create separate documentation websites? And if so, why MkDocs?*
- MkDocs website with beautiful themes looks much better than any readme file. The resulting documentation website looks professional and awesome.
- MkDocs adds text search to your documentation website.
- In the case of closed-source software, sharing readme files from the git repository with external users is not an option.
- Github does not render beautiful extended markdown features like admonitions, tabs, etc. Neither renders diagrams, formulas, swagger docs, or notebooks.
- Using MkDocs-MagicSpace you create documentation from the same markdown readme files you have in your repo together with the code. And you
can create a unified documentation website from multiple repositories in Github, GitLab, Bitbucket.
- You can add such features as Google Analytics, multi-language localization.
## Features
**MkDocs:**
- [**MkDocs**](https://www.mkdocs.org/) - a fast, simple and downright gorgeous static site generator that's geared towards
building project documentation.
- [**Material for MkDocs**](https://squidfunk.github.io/mkdocs-material/) - gorgeous theme for MkDocs.
- [PyMdown Extensions](https://facelessuser.github.io/pymdown-extensions/) - add even more cool features of the extended markdown: sub- and superscripts, keys, magic links, sane headers etc.
- [Mkdocs-macro plugin](https://mkdocs-macros-plugin.readthedocs.io/en/latest/) - add variables and macros written in Python!
- [Mkdocs-multirepo-plugin](https://github.com/jdoiro3/mkdocs-multirepo-plugin) - import docs directly from git repositories.
- [Mkdocs-monorepo plugin](https://backstage.github.io/mkdocs-monorepo-plugin/) - build multiple documentation folders in a single Mkdocs. Designed for large codebases.
- [MkDocs Newsletter](https://lyz-code.github.io/mkdocs-newsletter/) - show the changes of documentation repositories in a user friendly format, at the same time that it's easy for the authors to maintain.
- [Mkdocs-mermaid2-plugin](https://github.com/fralau/mkdocs-mermaid2-plugin) - renders textual graph descriptions into Mermaid graphs (flow charts, sequence diagrams, pie charts, etc.).
- [Pygments](https://pygments.org/) - a generic syntax highlighter suitable for use in code hosting, forums, wikis or other applications that need to prettify source code, with over 500 languages and other text formats.
- [Mkdocs-include-markdown-plugin](https://github.com/mondeja/mkdocs-include-markdown-plugin) - include Markdown files completely or partially, and include files of any type.
- [Mkdocs-table-reader-plugin](https://pypi.org/project/mkdocs-table-reader-plugin/) - directly insert CSV files as tables in your website.
**Dev tools:**
- [**Eclipse Theia**](https://theia-ide.org/docs/) - open source version of popular Visual Studio Code IDE. Theia is trully open-source, has
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
- [**Terminal**](https://github.com/tsl0922/ttyd) - secure browser-based terminal.
- [**FileBrowser**](https://github.com/filebrowser/filebrowser) - manage files and folders inside the workspace, and exchange data between local environment and the workspace
- [**Cronicle**](https://github.com/jhuckaby/Cronicle) - task scheduler and runner, with a web based front-end UI. It handles both scheduled, repeating and on-demand jobs, targeting any number of worker servers, with real-time stats and live log viewer.
- [**Static File Server**](https://github.com/vercel/serve) - view any static html sites as easy as if you do it on your local machine. Serve static websites easily.
- [**Ungit**](https://github.com/FredrikNoren/ungit) - rings user friendliness to git without sacrificing the versatility of it.
- [**MkDocs**](https://squidfunk.github.io/mkdocs-material/) - create awesome documentation for your project with only markdown.
- [**Midnight Commander**](https://midnight-commander.org/) - Feature rich visual file manager with internal text viewer and editor.
- [**Process Monitor**](https://htop.dev/) - Monitor running process and resource utilization.
- Quicklaunch UI with getting started tutorial
Image is built from **Ubuntu 20.4** with the additional CLI apps
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
- Python 3, Pip
- Node/nodeenv
- curl, wget, telnet, jq
- **Git:** git, git-flow, lazygit
- **File browsers:** mc, xplr
- **Text editors:** nano, vim, mcedit
- **System monitors:** ncdu, htop, glances, vizex
- **Process Control:** supervisord
- **Job scheduler:** cron
## Docs
See our guides on [**getting started with MkDocs**](https://mkdocs-magicspace.alnoda.org/tutorials/get-started/),
[**extended Markdown tutorials**](https://mkdocs-magicspace.alnoda.org/tutorials/markdown/intro/)
and [**advanced features**](https://mkdocs-magicspace.alnoda.org/docs/).

View file

@ -1,5 +1,5 @@
ARG docker_registry=docker.io/alnoda
ARG image_tag=2.2
ARG image_tag=3.0
FROM ${docker_registry}/ide-workspace:${image_tag}
@ -10,15 +10,18 @@ COPY settings.json /home/abc/.theia/settings.json
# More dependencies for mkdocs and markdown
COPY mkdocs-requirements.txt /home/abc/installed-python-packages
COPY ./examples/ /home/examples/
# Customize mkdocs
COPY ./mkdocs/mkdocs.yml /home/docs/mkdocs.yml
COPY ./mkdocs/README.md /home/docs/docs/
COPY ./mkdocs/about.md /home/docs/docs/
COPY ./mkdocs/IDE.jpg /home/docs/docs/assets/home/
COPY ./mkdocs/Magicspace-web.png /home/docs/docs/assets/home/
COPY ./mkdocs/showcase.md /home/docs/docs/showcase.md
COPY ./mkdocs/helpers.py /home/docs/macros
COPY ./examples/ /home/examples/
COPY ./mkdocs/alnoda-dark.svg /home/docs/docs/assets/
COPY ./mkdocs/alnoda-white.svg /home/docs/docs/assets/
COPY ./mkdocs/about.md /home/docs/docs/about.md
RUN apt-get -y update \
&& echo "-------------------------------------------- weasyprint" \
@ -40,5 +43,4 @@ RUN apt-get -y update \
USER abc
# Custom docs for this workspace
COPY mkdocs /home/docs
COPY README.md /home/docs/docs/get-started.md
COPY mkdocs /home/docs

View file

@ -1,19 +1,20 @@
<p align="center">
<img src="../../img/Alnoda-white.svg" alt="Alnoda logo" width="150">
<img src="./img/alnoda-dark.svg" alt="Alnoda logo" width="150">
</p>
# MkDocs-MagicSpace
# MkDocs workspace
MkDocs-MagicSpace is an all-in-one tool, carefully crafted to make the development of gorgeous documentation
websites like [**this one**](https://mkdocs-magicspace.alnoda.org/) as easy as possible.
Containerized environment which helps to develop complex and awesome-looking documentation websites.
Create docs from all your GitHub, GitLab and Bitbucket repositories, automate periodic builds.
<p align="center">
<img src="https://raw.githubusercontent.com/bluxmit/alnoda-workspaces/main/workspaces/mkdocs-magicspace/img/mkdocs-collage.png" alt="Collage" width="750">
</p>
## Why this images
## Why
If want a ready tool to develop and build beautiful doccumentation websites with only Markdown.
- If want a ready tool to develop beautiful doccumentation websites.
- You need a tool to automate and schedule builds of docs from many repositories.
## Why documentation websites with MkDocs
@ -51,33 +52,28 @@ building project documentation.
- [Pygments](https://pygments.org/) - a generic syntax highlighter suitable for use in code hosting, forums, wikis or other applications that need to prettify source code, with over 500 languages and other text formats.
- [Mkdocs-include-markdown-plugin](https://github.com/mondeja/mkdocs-include-markdown-plugin) - include Markdown files completely or partially, and include files of any type.
- [Mkdocs-table-reader-plugin](https://pypi.org/project/mkdocs-table-reader-plugin/) - directly insert CSV files as tables in your website.
- [Mkdocs-video](https://github.com/soulless-viewer/mkdocs-video) - Include viedeos in the documentation.
- many other plugins
**Dev tools:**
- [**Eclipse Theia**](https://theia-ide.org/docs/) - open source version of popular Visual Studio Code IDE. Theia is trully open-source, has
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
- [**Terminal**](https://github.com/tsl0922/ttyd) - secure browser-based terminal.
- [**FileBrowser**](https://github.com/filebrowser/filebrowser) - manage files and folders inside the workspace, and exchange data between local environment and the workspace
- [**Cronicle**](https://github.com/jhuckaby/Cronicle) - task scheduler and runner, with a web based front-end UI. It handles both scheduled, repeating and on-demand jobs, targeting any number of worker servers, with real-time stats and live log viewer.
- [**Static File Server**](https://github.com/vercel/serve) - view any static html sites as easy as if you do it on your local machine. Serve static websites easily.
- [**Ungit**](https://github.com/FredrikNoren/ungit) - rings user friendliness to git without sacrificing the versatility of it.
- [**MkDocs**](https://squidfunk.github.io/mkdocs-material/) - create awesome documentation for your project with only markdown.
- [**Midnight Commander**](https://midnight-commander.org/) - Feature rich visual file manager with internal text viewer and editor.
- [**Process Monitor**](https://htop.dev/) - Monitor running process and resource utilization.
- Quicklaunch UI with getting started tutorial
Image is built from **Ubuntu 20.4** with the additional CLI apps
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
- Python 3, Pip
- Node/nodeenv
- curl, wget, telnet, jq
- **Git:** git, git-flow, lazygit
- **File browsers:** mc, xplr
- **Text editors:** nano, vim, mcedit
- **System monitors:** ncdu, htop, glances, vizex
- **Process Control:** supervisord
- **Job scheduler:** cron
- **Ubuntu 20.4** with the following CLI apps
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
- Python 3, Pip
- Node/nodeenv
- curl, wget, telnet, jq
- **Git:** git, git-flow, lazygit
- **File browsers:** mc
- **Text editors:** nano, vim, mcedit
- **System monitors:** ncdu, htop, glances, vizex
- **Process Control:** supervisord
- **Job scheduler:** cron
- **Terminal multiplexer:** tmux
## Docs

View file

@ -25,17 +25,8 @@ theme:
- search.suggest
palette:
- scheme: default
toggle:
icon: material/weather-sunny
name: Switch to light mode
primary: indigo
accent: blue
- scheme: slate
toggle:
icon: material/weather-night
name: Switch to dark mode
primary: deep orange
accent: red
extra:
# Link to open when your logo is clicked

View file

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1280" height="1024" viewBox="0 0 10000 9600" xml:space="preserve">
<desc>Created with Fabric.js 3.6.3</desc>
<defs>
</defs>
<g transform="matrix(2,0,0,2,640,512)" id="background-logo" >
</g>
<g transform="matrix(2,0,0,2,640,416.3)" id="logo-logo" >
<g transform="matrix(18.9,0,0,24.4,-502.2,-1009.3)" style="" paint-order="stroke" >
<g transform="matrix(0.2,0,0,-0.2,0,-61.6)" >
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1745)" d="M 3062 1050.1 c -466.3 107.3 -950.8 107.3 -1417.1 0 c -16.2 -3.7 -26.6 -18.2 -23.3 -32.1 c 3.4 -13.9 19 -22.1 34.9 -18.4 c 458.6 105.5 935.2 105.5 1393.9 0 c 15.9 -3.7 31.5 4.5 34.9 18.4 c 3.4 13.9 -7 28.4 -23.3 32.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-95.7,12.6)" >
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1210,-1423.3)" d="M 1847.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-111.1,21.9)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1143.2,-1383.2)" d="M 1861.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-103.4,18.6)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1176.6,-1397.2)" d="M 1894.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-95.7,17.5)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1210,-1401.8)" d="M 1928.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-88,18.6)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1243.4,-1397.2)" d="M 1961.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-80.3,21.9)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1276.8,-1383.2)" d="M 1994.9 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,0,12.6)" >
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1423.3)" d="M 2262.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-15.4,21.9)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1558.2,-1383.2)" d="M 2276.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-7.7,18.6)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1591.6,-1397.2)" d="M 2309.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,0,17.5)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1401.8)" d="M 2343.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,7.7,18.6)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1658.4,-1397.2)" d="M 2376.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,15.4,21.9)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1691.8,-1383.2)" d="M 2409.9 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,95.7,12.6)" >
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2040,-1423.3)" d="M 2677.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,80.3,21.9)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1973.2,-1383.2)" d="M 2691.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,88,18.6)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2006.6,-1397.2)" d="M 2724.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,95.7,17.5)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2040,-1401.8)" d="M 2758.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,103.4,18.6)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2073.4,-1397.2)" d="M 2791.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,111.1,21.9)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2106.8,-1383.2)" d="M 2824.8 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View file

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

View file

Before

Width:  |  Height:  |  Size: 25 MiB

After

Width:  |  Height:  |  Size: 25 MiB

View file

Before

Width:  |  Height:  |  Size: 3.6 MiB

After

Width:  |  Height:  |  Size: 3.6 MiB

View file

@ -1,15 +1,15 @@
# https://squidfunk.github.io/mkdocs-material/getting-started/#installation
mkdocs-material==8.2.14
mkdocs-material==8.3.9
mkdocs-material-extensions==1.0.3
# https://pygments.org/
Pygments== 2.12.0
# https://facelessuser.github.io/pymdown-extensions/
pymdown-extensions==9.4
pymdown-extensions==9.5
# https://github.com/mkdocstrings/mkdocstrings
mkdocstrings==0.18.1
mkdocstrings==0.19.0
# https://ai2business.github.io/mkdocstrings-sourcelink/
mkdocstrings-sourcelink==0.3.2
@ -18,57 +18,61 @@ mkdocstrings-sourcelink==0.3.2
mkdocs-mermaid2-plugin==0.6.0
# https://github.com/backstage/mkdocs-monorepo-plugin
mkdocs-monorepo-plugin==1.0.1
mkdocs-monorepo-plugin==1.0.2
# https://github.com/nqkdev/mkdocs-include
mkdocs-include==1.0.0
# https://github.com/jdoiro3/mkdocs-multirepo-plugin
mkdocs-multirepo-plugin==0.3.5
mkdocs-multirepo-plugin==0.4.3
# https://github.com/fralau/mkdocs_macros_plugin
mkdocs-macros-plugin==0.5.12
mkdocs-macros-plugin==0.7.0
# https://github.com/apenwarr/mkdocs-exclude
mkdocs-exclude==1.0.2
# https://github.com/chrieke/mkdocs-exclude-search
mkdocs-exclude-search==0.5.2
mkdocs-exclude-search==0.6.4
# https://github.com/datarobot/mkdocs-redirects
mkdocs-redirects==1.0.3
mkdocs-redirects==1.0.4
# https://github.com/midnightprioriem/mkdocs-autolinks-plugin
mkdocs-autolinks-plugin==0.4.0
mkdocs-autolinks-plugin==0.6.0
# https://github.com/fiinnnn/mkdocs-mktemplate-plugin
mkdocs-mktemplate-plugin==1.0.0
mkdocs-mktemplate-plugin==1.0.1
# https://github.com/rosscdh/mkdocs-markdownextradata-plugin
mkdocs-markdownextradata-plugin==0.2.4
mkdocs-markdownextradata-plugin==0.2.5
# https://github.com/lukasgeiter/mkdocs-awesome-pages-plugin
mkdocs-awesome-pages-plugin==2.5.0
mkdocs-awesome-pages-plugin==2.7.0
# https://github.com/christo-ph/mkdocs_build_plantuml
mkdocs-build-plantuml-plugin==1.5.0
mkdocs-build-plantuml-plugin==1.7.4
# https://github.com/mikitex70/plantuml-markdown
plantuml-markdown==3.4.2
plantuml-markdown==3.6.0
# https://github.com/mondeja/mkdocs-include-markdown-plugin
mkdocs-include-markdown-plugin==3.2.1
mkdocs-include-markdown-plugin==3.5.2
# https://github.com/zhaoterryy/mkdocs-pdf-export-plugin
mkdocs-pdf-export-plugin==0.5.8
mkdocs-pdf-export-plugin==0.5.10
# https://github.com/orzih/mkdocs-with-pdf
mkdocs-with-pdf==0.9.2
mkdocs-with-pdf==0.9.3
# https://github.com/derJD/python-mkblog
mkblog==1.2.0
# https://github.com/timvink/mkdocs-table-reader-plugin
mkdocs-table-reader-plugin==0.6
mkdocs-table-reader-plugin==1.1.0
# https://github.com/soulless-viewer/mkdocs-video
mkdocs-video==1.3.0
# https://github.com/danielfrg/mkdocs-jupyter
# mkdocs-jupyter==0.17.3

View file

Before

Width:  |  Height:  |  Size: 476 KiB

After

Width:  |  Height:  |  Size: 476 KiB

View file

Before

Width:  |  Height:  |  Size: 358 KiB

After

Width:  |  Height:  |  Size: 358 KiB

View file

@ -0,0 +1,2 @@
Containerized environment which helps to develop complex and awesome-looking documentation websites.
Create docs from all your GitHub, GitLab and Bitbucket repositories, automate periodic builds.

View file

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1280" height="1024" viewBox="0 0 10000 9600" xml:space="preserve">
<desc>Created with Fabric.js 3.6.3</desc>
<defs>
</defs>
<g transform="matrix(2,0,0,2,640,512)" id="background-logo" >
</g>
<g transform="matrix(2,0,0,2,640,416.3)" id="logo-logo" >
<g transform="matrix(18.9,0,0,24.4,-502.2,-1009.3)" style="" paint-order="stroke" >
<g transform="matrix(0.2,0,0,-0.2,0,-61.6)" >
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1745)" d="M 3062 1050.1 c -466.3 107.3 -950.8 107.3 -1417.1 0 c -16.2 -3.7 -26.6 -18.2 -23.3 -32.1 c 3.4 -13.9 19 -22.1 34.9 -18.4 c 458.6 105.5 935.2 105.5 1393.9 0 c 15.9 -3.7 31.5 4.5 34.9 18.4 c 3.4 13.9 -7 28.4 -23.3 32.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-95.7,12.6)" >
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1210,-1423.3)" d="M 1847.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-111.1,21.9)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1143.2,-1383.2)" d="M 1861.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-103.4,18.6)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1176.6,-1397.2)" d="M 1894.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-95.7,17.5)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1210,-1401.8)" d="M 1928.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-88,18.6)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1243.4,-1397.2)" d="M 1961.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-80.3,21.9)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1276.8,-1383.2)" d="M 1994.9 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,0,12.6)" >
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1423.3)" d="M 2262.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-15.4,21.9)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1558.2,-1383.2)" d="M 2276.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-7.7,18.6)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1591.6,-1397.2)" d="M 2309.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,0,17.5)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1401.8)" d="M 2343.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,7.7,18.6)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1658.4,-1397.2)" d="M 2376.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,15.4,21.9)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1691.8,-1383.2)" d="M 2409.9 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,95.7,12.6)" >
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2040,-1423.3)" d="M 2677.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,80.3,21.9)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1973.2,-1383.2)" d="M 2691.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,88,18.6)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2006.6,-1397.2)" d="M 2724.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,95.7,17.5)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2040,-1401.8)" d="M 2758.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,103.4,18.6)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2073.4,-1397.2)" d="M 2791.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,111.1,21.9)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2106.8,-1383.2)" d="M 2824.8 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1280" height="1024" viewBox="0 0 10000 9600" xml:space="preserve">
<desc>Created with Fabric.js 3.6.3</desc>
<defs>
</defs>
<g transform="matrix(2,0,0,2,640,512)" id="background-logo" >
</g>
<g transform="matrix(2,0,0,2,640,416.3)" id="logo-logo" >
<g transform="matrix(18.9,0,0,24.4,-502.2,-1009.3)" style="" paint-order="stroke" >
<g transform="matrix(0.2,0,0,-0.2,0,-61.6)" >
<path style="fill: rgb(255, 255, 255); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1745)" d="M 3062 1050.1 c -466.3 107.3 -950.8 107.3 -1417.1 0 c -16.2 -3.7 -26.6 -18.2 -23.3 -32.1 c 3.4 -13.9 19 -22.1 34.9 -18.4 c 458.6 105.5 935.2 105.5 1393.9 0 c 15.9 -3.7 31.5 4.5 34.9 18.4 c 3.4 13.9 -7 28.4 -23.3 32.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-95.7,12.6)" >
<path style="fill: rgb(255, 255, 255); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1210,-1423.3)" d="M 1847.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-111.1,21.9)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1143.2,-1383.2)" d="M 1861.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-103.4,18.6)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1176.6,-1397.2)" d="M 1894.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-95.7,17.5)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1210,-1401.8)" d="M 1928.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-88,18.6)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1243.4,-1397.2)" d="M 1961.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-80.3,21.9)" >
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1276.8,-1383.2)" d="M 1994.9 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,0,12.6)" >
<path style="fill: rgb(255, 255, 255); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1423.3)" d="M 2262.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-15.4,21.9)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1558.2,-1383.2)" d="M 2276.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,-7.7,18.6)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1591.6,-1397.2)" d="M 2309.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,0,17.5)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1401.8)" d="M 2343.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,7.7,18.6)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1658.4,-1397.2)" d="M 2376.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,15.4,21.9)" >
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1691.8,-1383.2)" d="M 2409.9 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,95.7,12.6)" >
<path style="fill: rgb(255, 255, 255); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2040,-1423.3)" d="M 2677.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,80.3,21.9)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1973.2,-1383.2)" d="M 2691.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,88,18.6)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2006.6,-1397.2)" d="M 2724.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,95.7,17.5)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2040,-1401.8)" d="M 2758.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,103.4,18.6)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2073.4,-1397.2)" d="M 2791.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
</g>
<g transform="matrix(0.2,0,0,-0.2,111.1,21.9)" >
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2106.8,-1383.2)" d="M 2824.8 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -5,17 +5,16 @@
nav:
- Home: README.md
- My apps: pages/my-apps.md
- Showcase: showcase.md
- Docs: https://mkdocs-magicspace.alnoda.org/
- About: about.md
- Docs: https://docs.alnoda.org/mkdocs-workspace/
# ===========================================================
# CONFIGURATION
# ===========================================================
site_name: MkDocs MagicSpace
site_name: MkDocs workspace
repo_url: https://github.com/bluxmit/alnoda-workspaces
site_url: https://mkdocs-magicspace.alnoda.org
site_url: https://docs.alnoda.org
edit_uri: ""
# ===========================================================
@ -24,8 +23,8 @@ edit_uri: ""
theme:
name: 'material'
favicon: 'assets/favicon.ico'
logo: 'assets/Alnoda-logo.svg'
favicon: 'assets/alnoda-dark.svg'
logo: 'assets/alnoda-white.svg'
custom_dir: overrides
font:
text: Lexend
@ -36,14 +35,14 @@ theme:
palette:
- scheme: default
toggle:
icon: material/weather-sunny
name: Switch to light mode
icon: material/brightness-7
name: Switch to dark mode
primary: deep purple
accent: deep orange
- scheme: slate
toggle:
icon: material/weather-night
name: Switch to dark mode
icon: material/brightness-4
name: Switch to light mode
primary: deep purple
accent: lime
@ -53,7 +52,6 @@ extra:
host_url: https://docs.alnoda.org
plugins:
- search
- include-markdown
# Enable Macros and jinja2 templates
- macros:
@ -65,7 +63,6 @@ plugins:
theme: forest # default, forest, dark, neutral, base
themeCSS: ".er.entityLabel{fill: black;} .messageLine0{stroke: orange;} .messageLine1{stroke: orange;} #arrowhead{fill: orange;} .messageText{fill: black; stroke: black}"
markdown_extensions:
- def_list
- pymdownx.tasklist:
@ -107,8 +104,4 @@ extra_javascript:

View file

@ -1,9 +1,9 @@
ARG docker_registry=docker.io/alnoda
ARG image_tag=2.2-3.8
ARG image_tag=3.0-3.8
## Images used:
ARG BUILD_IMAGE=node:12.18.3
ARG DEPLOY_IMAGE=${docker_registry}/python-workspace:${image_tag}
ARG DEPLOY_IMAGE=${docker_registry}/python-automate-workspace:${image_tag}
################################################################################ BUILD THEIA
@ -33,35 +33,6 @@ RUN yarn --pure-lockfile && \
yarn autoclean --force && \
yarn cache clean
################################################################################ BUILD NBVIEWER
FROM python:3.8-buster as nbviewerbuilder
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8
RUN apt-get update \
&& apt-get install -yq --no-install-recommends \
ca-certificates \
libcurl4-gnutls-dev \
git \
nodejs \
npm
RUN apt-get install -y libmemcached-dev zlib1g-dev
# Python requirements
COPY nbviewer/requirements-dev.txt /srv/nbviewer/
COPY nbviewer/requirements.txt /srv/nbviewer/
RUN python3 -mpip install -r /srv/nbviewer/requirements-dev.txt
RUN python3 -mpip install -r /srv/nbviewer/requirements.txt
WORKDIR /srv/nbviewer
# Copy source tree in
COPY nbviewer /srv/nbviewer
RUN python3 setup.py build && \
python3 -mpip wheel -vv . -w /wheels
################################################################################ IMAGE
FROM ${DEPLOY_IMAGE}
@ -70,18 +41,17 @@ USER root
RUN apt-get update \
&& rm -rf /opt/theia \
&& mkdir -p -m 777 /opt/theia \
&& mkdir -p /opt/theia \
&& cd /opt/theia && nodeenv --node=12.18.3 env && . env/bin/activate \
&& mkdir -p -m 777 /home/project \
&& mkdir -p /home/project \
&& apt-get install -y libsecret-1-dev
COPY --from=theia-builder /opt/theia /opt/theia
COPY --from=nbviewerbuilder /wheels /wheels
# To change the number of threads use env var NBVIEWER_THREADS
ENV LANG=C.UTF-8 NBVIEWER_THREADS=2
# Programs to start
COPY supervisord-notebooks.conf /etc/supervisord/
# Override - remove Ungit to reduce resource consumption
COPY supervisord-workspace-base.conf /etc/supervisord/
COPY notebooks-requirements.txt /home/abc/installed-python-packages
COPY jupyter-requirements.txt /home/abc/installed-python-packages
@ -89,24 +59,22 @@ COPY luigi/ /home/abc/luigi/
COPY examples/ /home/examples/
COPY tutorials/ /home/project/tutorials/
COPY settings.json /home/abc/.theia/settings.json
COPY ./mkdocs/mkdocs.yml /home/docs/mkdocs.yml
COPY ./mkdocs/img/* /home/docs/docs/assets/home/
COPY ./mkdocs/helpers.py /home/docs/macros
COPY ./mkdocs/README.md /home/docs/docs/README.md
COPY ./mkdocs/results.md /home/docs/docs/pages/results.md
COPY ./mkdocs/results /home/docs/docs/pages/results
COPY settings.json /home/abc/.theia/settings.json
COPY ./mkdocs/present.md /home/docs/docs/pages/present.md
COPY ./mkdocs/present /home/docs/docs/pages/present
COPY ./mkdocs/admin.md /home/docs/docs/pages/admin.md
COPY ./mkdocs/admin /home/docs/docs/pages/admin
COPY ./mkdocs/jupyter-circle.svg /home/docs/docs/assets/
COPY ./mkdocs/jupyter-circle-white.svg /home/docs/docs/assets/
COPY ./mkdocs/extra.css /home/docs/docs/stylesheets/
COPY ./mkdocs/about.md /home/docs/docs/about.md
RUN echo "------------------------------------------------------ Nbviewer" \
&& apt-get -y update \
&& apt-get install -yq --no-install-recommends ca-certificates libcurl4 \
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
&& mkdir /opt/nbviewer \
&& cd /opt/nbviewer && python3 -m venv venv && . venv/bin/activate \
&& pip install --no-cache /wheels/* && deactivate \
&& rm -rf /wheels \
&& mkdir -p /home/project/nbviewer \
&& echo "------------------------------------------------------ system nodejs-18" \
RUN echo "------------------------------------------------------ system nodejs-18" \
&& curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - \
&& apt-get install -y nodejs \
&& npm install --global yarn \
@ -123,12 +91,10 @@ RUN echo "------------------------------------------------------ Nbviewer" \
&& echo "------------------------------------------------------ user" \
&& mkdir -p /usr/local/share/jupyter && chown -R abc /usr/local/share/jupyter \
&& chown -R abc /opt/theia \
&& chown -R abc /opt/nbviewer \
&& chown -R abc /home/project/nbviewer \
&& chown -R abc /etc/service/luigid/ \
&& chown -R abc /var/log/jupyter \
&& chown -R abc /var/log/luigi \
&& mkdir /usr/etc && chmod -R 777 /usr/etc \
&& mkdir /usr/etc && chown -R abc /usr/etc \
&& find /home -type d | xargs -I{} chown -R abc {} \
&& find /home -type f | xargs -I{} chown abc {}

View file

@ -0,0 +1,179 @@
ARG docker_registry=docker.io/alnoda
ARG image_tag=3.0-3.8
## Images used:
ARG BUILD_IMAGE=node:12.18.3
ARG DEPLOY_IMAGE=${docker_registry}/python-automate-workspace:${image_tag}
################################################################################ BUILD THEIA
ARG THEIA_VERSION=1.15.0
FROM ${BUILD_IMAGE} as theia-builder
ARG THEIA_VERSION
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y apt-utils \
&& apt-get install -y git \
&& apt-get install -y libsecret-1-dev \
&& mkdir /opt/theia
WORKDIR /opt/theia
ADD ${THEIA_VERSION}.package.json ./package.json
ARG GITHUB_TOKEN
RUN yarn --pure-lockfile && \
NODE_OPTIONS="--max_old_space_size=8192" yarn theia build && \
yarn theia download:plugins && \
yarn --production && \
yarn autoclean --init && \
echo *.ts >> .yarnclean && \
echo *.ts.map >> .yarnclean && \
echo *.spec.* >> .yarnclean && \
yarn autoclean --force && \
yarn cache clean
################################################################################ BUILD NBVIEWER
FROM python:3.8-buster as nbviewerbuilder
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8
RUN apt-get update \
&& apt-get install -yq --no-install-recommends \
ca-certificates \
libcurl4-gnutls-dev \
git \
nodejs \
npm
RUN apt-get install -y libmemcached-dev zlib1g-dev
# Python requirements
COPY nbviewer/requirements-dev.txt /srv/nbviewer/
COPY nbviewer/requirements.txt /srv/nbviewer/
RUN python3 -mpip install -r /srv/nbviewer/requirements-dev.txt
RUN python3 -mpip install -r /srv/nbviewer/requirements.txt
WORKDIR /srv/nbviewer
# Copy source tree in
COPY nbviewer /srv/nbviewer
RUN python3 setup.py build && \
python3 -mpip wheel -vv . -w /wheels
################################################################################ IMAGE
FROM ${DEPLOY_IMAGE}
USER root
RUN apt-get update \
&& rm -rf /opt/theia \
&& mkdir -p /opt/theia \
&& cd /opt/theia && nodeenv --node=12.18.3 env && . env/bin/activate \
&& mkdir -p /home/project \
&& apt-get install -y libsecret-1-dev
COPY --from=theia-builder /opt/theia /opt/theia
COPY --from=nbviewerbuilder /wheels /wheels
# To change the number of threads use env var NBVIEWER_THREADS
ENV LANG=C.UTF-8 NBVIEWER_THREADS=2
COPY supervisord-notebooks.conf /etc/supervisord/
COPY notebooks-requirements.txt /home/abc/installed-python-packages
COPY jupyter-requirements.txt /home/abc/installed-python-packages
COPY luigi/ /home/abc/luigi/
COPY examples/ /home/examples/
COPY tutorials/ /home/project/tutorials/
COPY settings.json /home/abc/.theia/settings.json
COPY ./mkdocs/mkdocs.yml /home/docs/mkdocs.yml
COPY ./mkdocs/img/* /home/docs/docs/assets/home/
COPY ./mkdocs/helpers.py /home/docs/macros
COPY ./mkdocs/README.md /home/docs/docs/README.md
COPY ./mkdocs/present.md /home/docs/docs/pages/present.md
COPY ./mkdocs/present /home/docs/docs/pages/present
COPY ./mkdocs/admin.md /home/docs/docs/pages/admin.md
COPY ./mkdocs/admin /home/docs/docs/pages/admin
COPY ./mkdocs/jupyter-circle.svg /home/docs/docs/assets/
COPY ./mkdocs/jupyter-circle-white.svg /home/docs/docs/assets/
COPY ./mkdocs/extra.css /home/docs/docs/stylesheets/
COPY ./mkdocs/about.md /home/docs/docs/about.md
RUN echo "------------------------------------------------------ Nbviewer" \
&& apt-get -y update \
&& apt-get install -yq --no-install-recommends ca-certificates libcurl4 \
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
&& mkdir /opt/nbviewer \
&& cd /opt/nbviewer && python3 -m venv venv && . venv/bin/activate \
&& pip install --no-cache /wheels/* && deactivate \
&& rm -rf /wheels \
&& mkdir -p /home/project/nbviewer \
&& echo "------------------------------------------------------ system nodejs-18" \
&& curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - \
&& apt-get install -y nodejs \
&& npm install --global yarn \
&& echo "------------------------------------------------------ Packages, prep" \
&& apt-get install -y python-is-python3 \
&& pip install -r /home/abc/installed-python-packages/notebooks-requirements.txt \
&& mkdir /var/log/jupyter \
&& echo "------------------------------------------------------ Luigi" \
&& mkdir -p /etc/service/luigid/ \
&& mkdir /var/log/luigi \
&& echo "------------------------------------------------------ Pandoc (notebooks to PDF)" \
&& apt-get install -y pandoc \
&& apt-get install -y texlive-xetex texlive-fonts-recommended texlive-plain-generic \
&& echo "------------------------------------------------------ user" \
&& mkdir -p /usr/local/share/jupyter && chown -R abc /usr/local/share/jupyter \
&& chown -R abc /opt/theia \
&& chown -R abc /opt/nbviewer \
&& chown -R abc /home/project/nbviewer \
&& chown -R abc /etc/service/luigid/ \
&& chown -R abc /var/log/jupyter \
&& chown -R abc /var/log/luigi \
&& mkdir /usr/etc && chown -R abc /usr/etc \
&& find /home -type d | xargs -I{} chown -R abc {} \
&& find /home -type f | xargs -I{} chown abc {}
USER abc
RUN echo "------------------------------------------------------ Pipx" \
&& python3 -m pip install --user pipx \
&& echo "------------------------------------------------------ Voila" \
&& mkdir /home/project/voila \
&& echo "------------------------------------------------------ Notebooks in terminal" \
&& pipx install nbterm \
&& pipx install nbclient \
&& pip install "nbconvert[webpdf]" \
&& echo "------------------------------------------------------ Jupyter-lux" \
&& jupyter nbextension install --py luxwidget \
&& jupyter nbextension enable --py luxwidget \
&& jupyter labextension install @jupyter-widgets/jupyterlab-manager \
&& jupyter labextension install luxwidget \
&& echo "------------------------------------------------------ Jupyter-qgrid (Jupyter only)" \
&& jupyter nbextension enable --py --sys-prefix widgetsnbextension \
&& jupyter nbextension enable --py --sys-prefix qgrid \
&& echo "------------------------------------------------------ lite/dark toggler" \
&& jupyter labextension install jupyterlab-topbar-extension jupyterlab-theme-toggle \
&& echo "------------------------------------------------------ Jupytext" \
&& jupyter serverextension enable jupytext \
&& jupyter nbextension install --py jupytext \
&& jupyter nbextension enable --py jupytext \
&& jupyter labextension install jupyterlab-jupytext \
&& jupyter labextension enable jupyterlab-jupytext
COPY mercury/mercury-requirements.txt /home/abc/installed-python-packages
RUN echo "------------------------------------------------------ Mercury" \
&& pip install -r /home/abc/installed-python-packages/mercury-requirements.txt \
&& pip install mljar-mercury --ignore-installed --no-deps
ENV PATH="/home/abc/miniconda3/bin:$PATH" \
LUIGI_CONFIG_PATH="/home/abc/luigi/luigi.conf"

View file

@ -1,10 +1,10 @@
<p align="center">
<img src="../../img/Alnoda-white.svg" alt="Alnoda logo" width="150">
<img src="./img/jupyter-circle.svg" alt="Jupyter logo" width="150">
</p>
# Jupyter notebook workspace
Opinionated Jupyter notebook & Jupyter Lab installation, together with the toolset to get the most out of the Jupyter notebooks.
Containerized research, development and execution environment which helps to make the most from the Jupyter notebooks.
Explore and analyze data, build reports, presentations and documentation. Convert notebooks to various formats.
Serve notebooks for reporting. Create data pipelines from notebooks. Schedule executions with UI and monitoring tool.
@ -55,7 +55,6 @@ file into various static formats including executable scripts.
**Notebook as reports**
- [Voila](https://github.com/voila-dashboards/voila) - Voilà turns Jupyter notebooks into standalone web applications.
- [NBViewer](https://github.com/jupyter/nbviewer) - A simple way to view and share Jupyter Notebooks.
- [Datapane](https://github.com/datapane/datapane) -The easiest way to create data science reports from Python.
**Interactive web applications**
@ -118,28 +117,22 @@ extension which provides tabular view for csv files and allows interactive explo
**Dev tools:**
- [VS-Code](https://theia-ide.org/docs/) - browser-based open source version of popular Visual Studio Code IDE. It has
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
- [Terminal](https://github.com/tsl0922/ttyd) - secure browser-based terminal.
- [FileBrowser](https://github.com/filebrowser/filebrowser) - manage files and folders inside the workspace, and exchange data between local environment and the workspace
- [Static File Server](https://github.com/vercel/serve) - view any static html sites as easy as if you do it on your local machine. Serve static websites easily.
- [Ungit](https://github.com/FredrikNoren/ungit) - rings user friendliness to git without sacrificing the versatility of it.
- [Midnight Commander](https://midnight-commander.org/) - Feature rich visual file manager with internal text viewer and editor.
- [Process Monitor](https://htop.dev/) - Monitor running process and resource utilization.
- Quicklaunch UI with getting started tutorial
Image is built from **Ubuntu 20.4** with the additional CLI apps
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
- Python 3, Pip
- Node/nodeenv
- curl, wget, telnet, jq
- **Git:** git, git-flow, lazygit
- **File browsers:** mc, xplr
- **Text editors:** nano, vim, mcedit
- **System monitors:** ncdu, htop, glances, vizex
- **Process Control:** supervisord
- **Job scheduler:** cron
- [**Eclipse Theia**](https://theia-ide.org/docs/) - open source version of popular Visual Studio Code IDE. Theia is trully open-source, has
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
- [**Terminal**](https://github.com/tsl0922/ttyd) - secure browser-based terminal.
- [**FileBrowser**](https://github.com/filebrowser/filebrowser) - manage files and folders inside the workspace, and exchange data between local environment and the workspace
- **Ubuntu 20.4** with the following CLI apps
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
- Python 3, Pip
- Node/nodeenv
- curl, wget, telnet, jq
- **Git:** git, git-flow, lazygit
- **File browsers:** mc
- **Text editors:** nano, vim, mcedit
- **System monitors:** ncdu, htop, glances, vizex
- **Process Control:** supervisord
- **Job scheduler:** cron
- **Terminal multiplexer:** tmux
## Docs

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
<path d="M 331.076 729.223 C 331.076 754.024 312.059 774.133 288.591 774.148 C 265.115 774.148 246.083 754.034 246.083 729.223 C 246.083 704.413 265.115 684.299 288.591 684.299 C 312.059 684.312 331.076 704.422 331.076 729.223 Z M 650.962 210.459 C 650.975 230.149 635.876 246.119 617.245 246.119 C 598.606 246.132 583.492 230.159 583.505 210.459 C 583.505 190.769 598.615 174.81 617.245 174.824 C 635.866 174.824 650.962 190.779 650.962 210.459 Z M 279.49 258.131 C 279.464 272.665 268.316 284.436 254.566 284.451 C 240.797 284.451 229.632 272.659 229.619 258.105 C 229.632 243.551 240.797 231.76 254.566 231.76 C 268.335 231.774 279.49 243.576 279.49 258.131 Z M 454.289 296.013 C 544.094 296.013 622.511 330.474 663.208 381.515 C 648.113 335.815 619.867 296.144 582.361 267.968 C 545 239.921 500.199 224.831 454.242 224.818 C 408.292 224.836 363.498 239.925 326.144 267.968 C 288.63 296.141 260.376 335.811 245.273 381.515 C 286.089 330.573 364.506 296.013 454.289 296.013 Z M 454.312 628.012 C 364.53 628.012 286.089 593.526 245.392 542.484 C 260.494 588.188 288.749 627.859 326.263 656.031 C 363.605 684.087 408.389 699.193 454.337 699.232 C 500.297 699.211 545.098 684.113 582.457 656.056 C 619.963 627.881 648.208 588.21 663.304 542.509 C 622.511 593.551 544.094 628.037 454.289 628.037 L 454.312 628.012 Z" style=""/>
<text style="white-space: pre; fill: rgb(51, 51, 51); font-family: Arial, sans-serif; font-size: 43.8px;" x="-318.29" y="147.071" transform="matrix(8.375916, 0, 0, 3.912784, 2948.738525, -48.345772)">J</text>
<text style="white-space: pre; fill: rgb(51, 51, 51); font-family: Arial, sans-serif; font-size: 43.8px;" x="-318.29" y="147.071" transform="matrix(8.375916, 0, 0, 3.912784, 3103.675781, -49.854622)">u</text>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -93,54 +93,11 @@
"image": "assets/home/dtale.png",
"description": "Comprehensive visual exploration, analysis and discovery from dataset files."
},
{
"env": "NBVIEWER_URL",
"subpath": "localfile/",
"name": "Notebook viewer",
"image": "assets/home/nbviewer.png",
"description": "Display notebooks from folder <b>/home/project/nbviewer</b>"
},
{
"env": "VOILA_URL",
"name": "Voila",
"image": "assets/home/voila.png",
"description": "Render live Jupyter notebooks with interactive widgets from folder <b>/home/project/voila</b>"
},
{
"env": "LUIGI_URL",
"name": "Luigi",
"image": "assets/home/luigi.png",
"description": "Luigi helps you build complex pipelines of batch jobs in Python"
},
{
"env": "CRONICLE_URL",
"name": "Cronicle",
"image": "assets/home/Cronicle.jpg",
"description": "Schedule jobs, manage schedules, observe and monitor executions (user/pass - admin/admin)"
},
{
"env": "UNGIT_URL",
"name": "Ungit",
"image": "assets/home/Ungit.jpg",
"description": "Manage Git repositories and work flow using beautiful UI"
},
{
"env": "STATICFS_URL",
"name": "Static File Server",
"image": "assets/home/Static-server.png",
"description": "Serve any static websites like a breeze"
},
{
"env": "MC_URL",
"name": "M.Commander",
"image": "assets/home/MC.jpg",
"description": "Feature rich visual file manager with internal text viewer and editor"
},
{
"env": "HTOP_URL",
"name": "Process monitor",
"image": "assets/home/Htop.jpg",
"description": "Monitor running process and resource utilization"
}
]
%}

View file

@ -0,0 +1,4 @@
Containerized research, development and execution environment which helps to make the most from the Jupyter notebooks.
Explore and analyze data, build reports, presentations and documentation. Convert notebooks to various formats.
Serve notebooks for reporting. Create data pipelines from notebooks. Schedule executions with UI and monitoring tool.

View file

@ -0,0 +1,104 @@
<style>
/* These styles apply only to this page! */
.md-content__button {
display: none;
}
.md-sidebar--secondary{
display: none !important;
}
.md-typeset h1 {
line-height: 0;
margin: 0;
margin-left: -9999px;
}
.quickstart-wrapper {
min-width: 300px;
display: flex;
flex-wrap: wrap;
justify-content: center;
padding-left: -50px;
column-gap: 50px;
row-gap: 50px;
}
.quickstart-wrapper > div {
flex: 300px;
max-width: 300px;
}
.tool-img{
box-shadow: rgba(0, 0, 0, 0.24) 0px 5px 5px;
border-radius: 5px;
min-width: 300px;
max-width: 300px;
max-height: 170px;
min-height: 170px;
}
.tool-caption{
font-family: Roboto, Helvetica, sans-serif;
text-align: center;
margin-top: 10px;
font-size: 1.2rem;
font-weight: bold;
/* font-size: 1.25em;
font-weight: 400; */
letter-spacing: -.02em;
line-height: 1.5;
}
.tool-description{
font-family: Helvetica, sans-serif;
text-align: center;
margin-top: 10px;
font-size: 0.7rem;
font-style: oblique;
/* font-weight: bold; */
}
</style>
{%
set tools = [
{
"env": "CRONICLE_URL",
"name": "Cronicle",
"image": "Cronicle.jpg",
"description": "Schedule jobs, manage schedules, observe and monitor executions (user/pass - admin/admin)"
},
{
"env": "MC_URL",
"name": "M.Commander",
"image": "MC.jpg",
"description": "Feature rich visual file manager with internal text viewer and editor"
},
{
"env": "HTOP_URL",
"name": "Process monitor",
"image": "Htop.jpg",
"description": "Monitor running process and resource utilization"
}
]
%}
<div class="quickstart-wrapper">
{% for tool in tools %}
{% set tool_url = get_tool_url(tool.env) %}
<div>
{% if tool.subpath is defined %}
<a href="{{ tool_url }}/{{ tool.subpath }}" target="_blank" rel="noopener noreferrer">
{% else %}
<a href="{{ tool_url }}" target="_blank" rel="noopener noreferrer">
{% endif %}
<img src="{{ tool.image }}" class="tool-img"/>
</a>
<a href="{{ tool_url }}">
<div class="tool-caption">{{ tool.name }}</div>
</a>
<div class="tool-description">{{ tool.description }}</div>
</div>
{% endfor %}
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View file

@ -0,0 +1,29 @@
[data-md-color-scheme="jupyter"] {
--md-primary-fg-color: #F37726;
--md-accent-fg-color: #F37726;
--md-typeset-a-color: #050505;
--md-default-fg-color: #050505;
--md-primary-fg-color--light: #050505;
--md-typeset-mark-color: #050505;
--md-default-fg-color--light: #003B5C;
--md-default-bg-color: #F5F7F7;
}
[data-md-color-scheme="jupyter-dark"] {
--md-primary-fg-color: #F37726;
--md-accent-fg-color: #c7601a;
--md-default-bg-color: #343741;
--md-default-fg-color--light: #9CDCFE;
--md-typeset-color: #9CDCFE;
--md-typeset-a-color: #9CDCFE;
}
.md-header {
color: #050505 !important;
}

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none; fill: rgb(255, 255, 255);" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
<path d="M 331.076 729.223 C 331.076 754.024 312.059 774.133 288.591 774.148 C 265.115 774.148 246.083 754.034 246.083 729.223 C 246.083 704.413 265.115 684.299 288.591 684.299 C 312.059 684.312 331.076 704.422 331.076 729.223 Z M 650.962 210.459 C 650.975 230.149 635.876 246.119 617.245 246.119 C 598.606 246.132 583.492 230.159 583.505 210.459 C 583.505 190.769 598.615 174.81 617.245 174.824 C 635.866 174.824 650.962 190.779 650.962 210.459 Z M 279.49 258.131 C 279.464 272.665 268.316 284.436 254.566 284.451 C 240.797 284.451 229.632 272.659 229.619 258.105 C 229.632 243.551 240.797 231.76 254.566 231.76 C 268.335 231.774 279.49 243.576 279.49 258.131 Z M 454.289 296.013 C 544.094 296.013 622.511 330.474 663.208 381.515 C 648.113 335.815 619.867 296.144 582.361 267.968 C 545 239.921 500.199 224.831 454.242 224.818 C 408.292 224.836 363.498 239.925 326.144 267.968 C 288.63 296.141 260.376 335.811 245.273 381.515 C 286.089 330.573 364.506 296.013 454.289 296.013 Z M 454.312 628.012 C 364.53 628.012 286.089 593.526 245.392 542.484 C 260.494 588.188 288.749 627.859 326.263 656.031 C 363.605 684.087 408.389 699.193 454.337 699.232 C 500.297 699.211 545.098 684.113 582.457 656.056 C 619.963 627.881 648.208 588.21 663.304 542.509 C 622.511 593.551 544.094 628.037 454.289 628.037 L 454.312 628.012 Z" style="fill: rgb(255, 255, 255);"/>
<text style="fill: rgb(255, 255, 255); font-family: Arial, sans-serif; font-size: 43.8px; white-space: pre;" transform="matrix(8.375916, 0, 0, 3.912784, 2948.738525, -48.345772)" x="-318.29" y="147.071">J</text>
<text style="fill: rgb(255, 255, 255); font-family: Arial, sans-serif; font-size: 43.8px; white-space: pre;" transform="matrix(8.375916, 0, 0, 3.912784, 3103.675781, -49.854622)" x="-318.29" y="147.071">u</text>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
<path d="M 331.076 729.223 C 331.076 754.024 312.059 774.133 288.591 774.148 C 265.115 774.148 246.083 754.034 246.083 729.223 C 246.083 704.413 265.115 684.299 288.591 684.299 C 312.059 684.312 331.076 704.422 331.076 729.223 Z M 650.962 210.459 C 650.975 230.149 635.876 246.119 617.245 246.119 C 598.606 246.132 583.492 230.159 583.505 210.459 C 583.505 190.769 598.615 174.81 617.245 174.824 C 635.866 174.824 650.962 190.779 650.962 210.459 Z M 279.49 258.131 C 279.464 272.665 268.316 284.436 254.566 284.451 C 240.797 284.451 229.632 272.659 229.619 258.105 C 229.632 243.551 240.797 231.76 254.566 231.76 C 268.335 231.774 279.49 243.576 279.49 258.131 Z M 454.289 296.013 C 544.094 296.013 622.511 330.474 663.208 381.515 C 648.113 335.815 619.867 296.144 582.361 267.968 C 545 239.921 500.199 224.831 454.242 224.818 C 408.292 224.836 363.498 239.925 326.144 267.968 C 288.63 296.141 260.376 335.811 245.273 381.515 C 286.089 330.573 364.506 296.013 454.289 296.013 Z M 454.312 628.012 C 364.53 628.012 286.089 593.526 245.392 542.484 C 260.494 588.188 288.749 627.859 326.263 656.031 C 363.605 684.087 408.389 699.193 454.337 699.232 C 500.297 699.211 545.098 684.113 582.457 656.056 C 619.963 627.881 648.208 588.21 663.304 542.509 C 622.511 593.551 544.094 628.037 454.289 628.037 L 454.312 628.012 Z" style=""/>
<text style="white-space: pre; fill: rgb(51, 51, 51); font-family: Arial, sans-serif; font-size: 43.8px;" x="-318.29" y="147.071" transform="matrix(8.375916, 0, 0, 3.912784, 2948.738525, -48.345772)">J</text>
<text style="white-space: pre; fill: rgb(51, 51, 51); font-family: Arial, sans-serif; font-size: 43.8px;" x="-318.29" y="147.071" transform="matrix(8.375916, 0, 0, 3.912784, 3103.675781, -49.854622)">u</text>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -4,11 +4,12 @@
nav:
- Home: README.md
- Results: pages/results.md
- Present: pages/present.md
- Admin: pages/admin.md
- My apps: pages/my-apps.md
- About: about.md
- Docs: https://docs.alnoda.org/notebook-workspace/
# ===========================================================
# CONFIGURATION
# ===========================================================
@ -24,26 +25,24 @@ edit_uri: ""
theme:
name: 'material'
favicon: 'assets/favicon.ico'
logo: 'assets/Alnoda-logo.svg'
favicon: 'assets/jupyter-circle.svg'
logo: 'assets/jupyter-circle.svg'
custom_dir: overrides
font:
text: Open Sans
icon:
repo: fontawesome/brands/git-alt
repo: fontawesome/brands/github
features:
- navigation.instant
palette:
- scheme: default
- scheme: jupyter
toggle:
icon: material/toggle-switch-off-outline
name: Switch to light mode
primary: orange
accent: deep orange
- scheme: slate
toggle:
icon: material/toggle-switch
icon: material/brightness-7
name: Switch to dark mode
primary: orange
accent: deep orange
- scheme: jupyter-dark
toggle:
icon: material/brightness-4
name: Switch to light mode
extra:
# Link to open when your logo is clicked
@ -51,21 +50,14 @@ extra:
host_url: http://docs.alnoda.org
plugins:
- search
# Enable Macros and jinja2 templates
- macros:
module_name: macros/helpers
extra_css:
- stylesheets/extra.css
extra_javascript:
- javascripts/config.js
- https://polyfill.io/v3/polyfill.min.js?features=es6

View file

@ -63,13 +63,6 @@
"image": "Filebrowser.png",
"description": "Browse, upload and download files and folders to and from the Workspace"
},
{
"env": "NBVIEWER_URL",
"subpath": "localfile/",
"name": "Notebook viewer",
"image": "nbviewer.png",
"description": "Display notebooks from folder <b>/home/project/nbviewer</b>"
},
{
"env": "VOILA_URL",
"name": "Voila",

View file

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

View file

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View file

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 144 KiB

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -20,13 +20,6 @@ stderr_logfile = /var/log/jupyter/jupyterlab-stderr.log
stdout_logfile = /var/log/jupyter/jupyterlab-stdout.log
logfile_maxbytes = 1024
[program:nbviewer]
directory=/usr/local/bin/
command=/bin/sh -c " cd /opt/nbviewer; . venv/bin/activate; python -m nbviewer --port=8031 --localfiles=/home/project/nbviewer "
stderr_logfile = /var/log/jupyter/nbviewer-stderr.log
stdout_logfile = /var/log/jupyter/nbviewer-stdout.log
logfile_maxbytes = 1024
[program:voila]
directory=/usr/local/bin/
command=/bin/sh -c " cd /home/project/voila && voila --no-browser --strip_sources=false --autoreload=true --port=8033 --Voila.ip=0.0.0.0 --template=material "

View file

@ -0,0 +1,43 @@
[program:mkdocs]
directory=/home/docs
command=/bin/sh -c " mkdocs serve -a 0.0.0.0:8020 "
stderr_logfile = /var/log/mkdocs/mkdocs-stderr.log
stdout_logfile = /var/log/mkdocs/mkdocs-stdout.log
logfile_maxbytes = 1024
[program:filebrowser]
directory=/opt/filebrowser
command=/bin/sh -c " /opt/filebrowser/filebrowser "
stderr_logfile = /var/log/filebrowser/filebrowser-stderr.log
stdout_logfile = /var/log/filebrowser/filebrowser-stdout.log
logfile_maxbytes = 1024
[program:serve]
directory=/home/static-server
command=/bin/sh -c " cd /opt/serve; . env/bin/activate; serve -p 8022 /home/static-server "
stderr_logfile = /var/log/static-file-server/serve-stderr.log
stdout_logfile = /var/log/static-file-server/serve-stdout.log
logfile_maxbytes = 1024
[program:cronicle]
directory=/opt/cronicle
command=/bin/sh -c " rm /opt/cronicle/logs/cronicled.pid || true; cd /opt/cronicle; . env/bin/activate; /opt/cronicle/bin/control.sh setup; /opt/cronicle/bin/control.sh start "
stderr_logfile = /var/log/cronicle/cronicle-stderr.log
stdout_logfile = /var/log/cronicle/cronicle-stdout.log
logfile_maxbytes = 1024
exitcodes=0
startsecs=0
[program:mc]
directory=/
command=/bin/sh -c " export TERM=xterm; export EDITOR=mcedit; ttyd -p 8027 /bin/zsh -c '/usr/bin/mc' "
[program:htop]
directory=/usr/bin
command=/bin/sh -c " export TERM=xterm; ttyd -p 8028 /bin/zsh -c '/usr/bin/htop' "

View file

@ -56,6 +56,10 @@ COPY supervisord-postgres.conf /etc/supervisord/
COPY --from=docs_image /home/docs/ /home/docs/
COPY ./mkdocs/mkdocs.yml /home/docs/mkdocs.yml
COPY ./mkdocs/postgres-circle.svg /home/docs/docs/assets/
COPY ./mkdocs/postgres-circle-white.svg /home/docs/docs/assets/
COPY ./mkdocs/extra.css /home/docs/docs/stylesheets/
COPY ./mkdocs/about.md /home/docs/docs/about.md
COPY schemaspy/schemaspy.sh /opt/schemaspy/schemaspy.sh

View file

@ -1,10 +1,10 @@
<p align="center">
<img src="../../img/Alnoda-white.svg" alt="Alnoda logo" width="150">
<img src="./img/postgres-circle.svg" alt="Postgres logo" width="150">
</p>
# Postgres workspace
Collection of tools to interact with PostgreSQL.
Containerized environment to interact, manage and administer PostgreSQL database.
Query, explore, manage, develop, test performance, import annd export data,
generate mock data, create backups, manage migrations, generate reports, schedule tasks.
@ -72,29 +72,22 @@ and open [localhost:8020](http://localhost:8020) in browser.
**Dev tools:**
- [**Eclipse Theia**](https://theia-ide.org/docs/) - open source version of popular Visual Studio Code IDE. Theia is trully open-source, has
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
- [**Terminal**](https://github.com/tsl0922/ttyd) - secure browser-based terminal.
- [**FileBrowser**](https://github.com/filebrowser/filebrowser) - manage files and folders inside the workspace, and exchange data between local environment and the workspace
- [**Cronicle**](https://github.com/jhuckaby/Cronicle) - task scheduler and runner, with a web based front-end UI. It handles both scheduled, repeating and on-demand jobs, targeting any number of worker servers, with real-time stats and live log viewer.
- [**Static File Server**](https://github.com/vercel/serve) - view any static html sites as easy as if you do it on your local machine. Serve static websites easily.
- [**Ungit**](https://github.com/FredrikNoren/ungit) - rings user friendliness to git without sacrificing the versatility of it.
- [**MkDocs**](https://squidfunk.github.io/mkdocs-material/) - create awesome documentation for your project with only markdown.
- [**Midnight Commander**](https://midnight-commander.org/) - feature rich visual file manager with internal text viewer and editor.
- [**Process Monitor**](https://htop.dev/) - Monitor running process and resource utilization.
- Quicklaunch UI with getting started tutorial
Image is built from **Ubuntu 20.4** with the additional CLI apps
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
- Python 3, Pip
- Node/nodeenv
- curl, wget, telnet, jq
- **Git:** git, git-flow, lazygit
- **File browsers:** mc, xplr
- **Text editors:** nano, vim, mcedit
- **System monitors:** ncdu, htop, glances, vizex
- **Process Control:** supervisord
- **Job scheduler:** cron
- **Ubuntu 20.4** with the following CLI apps
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
- Python 3, Pip
- Node/nodeenv
- curl, wget, telnet, jq
- **Git:** git, git-flow, lazygit
- **File browsers:** mc
- **Text editors:** nano, vim, mcedit
- **System monitors:** ncdu, htop, glances, vizex
- **Process Control:** supervisord
- **Job scheduler:** cron
- **Terminal multiplexer:** tmux
- [Rclone](https://rclone.org/) - save backups to S3
## Docs

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none; fill: rgb(255, 255, 255);" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<title>redash-logo</title>
<desc>Created with Sketch.</desc>
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
<path d="M 2639.268 1667.577 C 2687.219 1791.274 2671.21 1923.814 2599.242 2029.907 L 2367.412 2374.549 C 2319.453 2454 2231.477 2480.543 2143.581 2454 L 1871.737 2339.144 C 1823.777 2339.144 1679.85 2427.546 1495.971 2392.156 C 1320.094 2418.699 1168.238 2339.144 1120.294 2339.144 L 848.434 2454 C 768.459 2480.543 680.57 2454 624.61 2374.549 L 400.71 2029.907 C 328.742 1923.814 312.805 1782.425 360.756 1667.577 C 448.748 1429.023 584.58 1278.79 776.474 1110.848 C 872.448 1031.31 1000.376 1040.15 1080.264 1137.402 C 1096.27 1163.854 1112.279 1181.548 1136.214 1216.94 C 1144.222 1225.78 1144.222 1243.394 1136.214 1252.246 L 1128.215 1261.088 C 1080.264 1305.239 1056.318 1375.937 1056.318 1437.791 L 1056.318 1499.724 L 1008.303 1649.873 C 992.358 1694.119 992.358 1738.277 992.358 1782.425 L 1016.296 1968.062 L 936.407 2118.212 C 928.407 2135.914 936.407 2153.61 944.338 2162.458 C 960.343 2171.306 976.353 2162.458 984.368 2153.61 L 1072.256 1994.516 C 1072.256 1985.661 1080.264 1976.828 1072.256 1976.828 L 1040.311 1782.425 C 1032.312 1747.13 1040.311 1711.727 1048.328 1676.422 L 1104.287 1526.193 L 1104.287 1517.337 L 1104.287 1455.485 C 1104.287 1402.487 1128.215 1358.338 1160.236 1322.935 L 1184.246 1305.239 C 1200.181 1287.641 1192.173 1269.944 1184.246 1252.246 C 1176.246 1243.394 1168.238 1234.554 1168.238 1216.94 L 1168.238 1119.688 C 1168.238 1066.701 1192.173 1013.695 1224.19 978.305 C 1272.149 925.303 1304.163 854.602 1304.163 783.911 C 1328.102 306.722 1791.842 183.024 1903.75 536.511 C 1903.75 545.364 1903.75 562.971 1887.745 562.971 C 1871.737 571.818 1847.801 580.667 1839.784 598.36 C 1831.784 607.218 1815.777 607.218 1807.775 598.36 C 1711.872 562.971 1687.849 651.358 1695.857 775.062 C 1703.864 845.747 1727.881 916.453 1775.833 969.449 L 1791.842 987.145 C 1823.777 1022.546 1847.801 1075.541 1847.801 1128.545 L 1847.801 1225.78 C 1847.801 1234.554 1839.784 1252.246 1831.784 1261.088 C 1815.777 1269.944 1815.777 1296.487 1831.784 1314.095 L 1855.793 1331.788 C 1887.745 1367.097 1911.752 1411.337 1911.752 1464.333 L 1911.752 1526.193 L 1911.752 1535.023 L 1967.703 1685.273 C 1975.718 1720.58 1983.648 1755.97 1975.718 1791.274 L 1943.705 1985.661 C 1943.705 1994.516 1943.705 2003.356 1943.705 2003.356 L 2031.671 2162.458 C 2039.679 2180.063 2055.614 2180.063 2071.615 2171.306 C 2087.622 2162.458 2087.622 2144.755 2079.623 2127.06 L 1999.654 1976.828 L 2023.664 1791.274 C 2031.671 1747.13 2023.664 1702.966 2007.656 1658.73 L 1959.71 1508.497 L 1959.71 1446.637 C 1959.71 1375.937 1935.687 1314.095 1887.745 1269.944 C 1879.728 1269.944 1879.728 1261.088 1879.728 1261.088 C 1871.737 1252.246 1871.737 1234.554 1879.728 1225.78 C 1895.742 1199.245 1911.752 1172.703 1935.687 1146.243 C 2015.671 1049.005 2143.581 1031.31 2239.485 1119.688 C 2415.365 1278.79 2551.29 1429.023 2639.268 1667.577 Z" style="fill: rgb(255, 255, 255);"/>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<title>redash-logo</title>
<desc>Created with Sketch.</desc>
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
<path d="M 2639.268 1667.577 C 2687.219 1791.274 2671.21 1923.814 2599.242 2029.907 L 2367.412 2374.549 C 2319.453 2454 2231.477 2480.543 2143.581 2454 L 1871.737 2339.144 C 1823.777 2339.144 1679.85 2427.546 1495.971 2392.156 C 1320.094 2418.699 1168.238 2339.144 1120.294 2339.144 L 848.434 2454 C 768.459 2480.543 680.57 2454 624.61 2374.549 L 400.71 2029.907 C 328.742 1923.814 312.805 1782.425 360.756 1667.577 C 448.748 1429.023 584.58 1278.79 776.474 1110.848 C 872.448 1031.31 1000.376 1040.15 1080.264 1137.402 C 1096.27 1163.854 1112.279 1181.548 1136.214 1216.94 C 1144.222 1225.78 1144.222 1243.394 1136.214 1252.246 L 1128.215 1261.088 C 1080.264 1305.239 1056.318 1375.937 1056.318 1437.791 L 1056.318 1499.724 L 1008.303 1649.873 C 992.358 1694.119 992.358 1738.277 992.358 1782.425 L 1016.296 1968.062 L 936.407 2118.212 C 928.407 2135.914 936.407 2153.61 944.338 2162.458 C 960.343 2171.306 976.353 2162.458 984.368 2153.61 L 1072.256 1994.516 C 1072.256 1985.661 1080.264 1976.828 1072.256 1976.828 L 1040.311 1782.425 C 1032.312 1747.13 1040.311 1711.727 1048.328 1676.422 L 1104.287 1526.193 L 1104.287 1517.337 L 1104.287 1455.485 C 1104.287 1402.487 1128.215 1358.338 1160.236 1322.935 L 1184.246 1305.239 C 1200.181 1287.641 1192.173 1269.944 1184.246 1252.246 C 1176.246 1243.394 1168.238 1234.554 1168.238 1216.94 L 1168.238 1119.688 C 1168.238 1066.701 1192.173 1013.695 1224.19 978.305 C 1272.149 925.303 1304.163 854.602 1304.163 783.911 C 1328.102 306.722 1791.842 183.024 1903.75 536.511 C 1903.75 545.364 1903.75 562.971 1887.745 562.971 C 1871.737 571.818 1847.801 580.667 1839.784 598.36 C 1831.784 607.218 1815.777 607.218 1807.775 598.36 C 1711.872 562.971 1687.849 651.358 1695.857 775.062 C 1703.864 845.747 1727.881 916.453 1775.833 969.449 L 1791.842 987.145 C 1823.777 1022.546 1847.801 1075.541 1847.801 1128.545 L 1847.801 1225.78 C 1847.801 1234.554 1839.784 1252.246 1831.784 1261.088 C 1815.777 1269.944 1815.777 1296.487 1831.784 1314.095 L 1855.793 1331.788 C 1887.745 1367.097 1911.752 1411.337 1911.752 1464.333 L 1911.752 1526.193 L 1911.752 1535.023 L 1967.703 1685.273 C 1975.718 1720.58 1983.648 1755.97 1975.718 1791.274 L 1943.705 1985.661 C 1943.705 1994.516 1943.705 2003.356 1943.705 2003.356 L 2031.671 2162.458 C 2039.679 2180.063 2055.614 2180.063 2071.615 2171.306 C 2087.622 2162.458 2087.622 2144.755 2079.623 2127.06 L 1999.654 1976.828 L 2023.664 1791.274 C 2031.671 1747.13 2023.664 1702.966 2007.656 1658.73 L 1959.71 1508.497 L 1959.71 1446.637 C 1959.71 1375.937 1935.687 1314.095 1887.745 1269.944 C 1879.728 1269.944 1879.728 1261.088 1879.728 1261.088 C 1871.737 1252.246 1871.737 1234.554 1879.728 1225.78 C 1895.742 1199.245 1911.752 1172.703 1935.687 1146.243 C 2015.671 1049.005 2143.581 1031.31 2239.485 1119.688 C 2415.365 1278.79 2551.29 1429.023 2639.268 1667.577 Z" style=""/>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

View file

@ -0,0 +1,4 @@
Containerized environment to interact, manage and administer PostgreSQL database.
Query, explore, manage, develop, test performance, import annd export data,
generate mock data, create backups, manage migrations, generate reports, schedule tasks.

View file

@ -0,0 +1,18 @@
[data-md-color-scheme="postgres"] {
--md-primary-fg-color: #32658F;
--md-accent-fg-color: #840032;
--md-default-fg-color--light: #003B5C;
--md-default-bg-color: #F5F7F7;
}
[data-md-color-scheme="postgres-dark"] {
--md-primary-fg-color: #32658F;
--md-accent-fg-color: #19758F;
--md-default-bg-color: #343741;
--md-default-fg-color--light: #9CDCFE;
--md-typeset-color: #9CDCFE;
--md-typeset-a-color: #9CDCFE;
}

View file

@ -5,14 +5,14 @@
nav:
- Home: README.md
- My apps: pages/my-apps.md
- About: about.md
- Docs: https://docs.alnoda.org/postgres-workspace/
# ===========================================================
# CONFIGURATION
# ===========================================================
site_name: Postgres workspace
site_name: PostgreSQL workspace
repo_url: https://github.com/bluxmit/alnoda-workspaces
site_url: https://docs.alnoda.org
edit_uri: ""
@ -23,26 +23,24 @@ edit_uri: ""
theme:
name: 'material'
favicon: 'assets/favicon.ico'
logo: 'assets/Alnoda-logo.svg'
favicon: 'assets/postgres-circle.svg'
logo: 'assets/postgres-circle-white.svg'
custom_dir: overrides
font:
text: Open Sans
icon:
repo: fontawesome/brands/git-alt
repo: fontawesome/brands/github
features:
- navigation.instant
palette:
- scheme: default
- scheme: postgres
toggle:
icon: material/toggle-switch-off-outline
name: Switch to light mode
primary: indigo
accent: blue
- scheme: slate
toggle:
icon: material/toggle-switch
icon: material/brightness-7
name: Switch to dark mode
primary: blue
accent: light blue
- scheme: postgres-dark
toggle:
icon: material/brightness-4
name: Switch to light mode
extra:
# Link to open when your logo is clicked
@ -50,21 +48,15 @@ extra:
host_url: http://docs.alnoda.org
plugins:
- search
# Enable Macros and jinja2 templates
- macros:
module_name: macros/helpers
extra_css:
- stylesheets/extra.css
extra_javascript:
- javascripts/config.js
- https://polyfill.io/v3/polyfill.min.js?features=es6

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none; fill: rgb(255, 255, 255);" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<title>redash-logo</title>
<desc>Created with Sketch.</desc>
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
<path d="M 2639.268 1667.577 C 2687.219 1791.274 2671.21 1923.814 2599.242 2029.907 L 2367.412 2374.549 C 2319.453 2454 2231.477 2480.543 2143.581 2454 L 1871.737 2339.144 C 1823.777 2339.144 1679.85 2427.546 1495.971 2392.156 C 1320.094 2418.699 1168.238 2339.144 1120.294 2339.144 L 848.434 2454 C 768.459 2480.543 680.57 2454 624.61 2374.549 L 400.71 2029.907 C 328.742 1923.814 312.805 1782.425 360.756 1667.577 C 448.748 1429.023 584.58 1278.79 776.474 1110.848 C 872.448 1031.31 1000.376 1040.15 1080.264 1137.402 C 1096.27 1163.854 1112.279 1181.548 1136.214 1216.94 C 1144.222 1225.78 1144.222 1243.394 1136.214 1252.246 L 1128.215 1261.088 C 1080.264 1305.239 1056.318 1375.937 1056.318 1437.791 L 1056.318 1499.724 L 1008.303 1649.873 C 992.358 1694.119 992.358 1738.277 992.358 1782.425 L 1016.296 1968.062 L 936.407 2118.212 C 928.407 2135.914 936.407 2153.61 944.338 2162.458 C 960.343 2171.306 976.353 2162.458 984.368 2153.61 L 1072.256 1994.516 C 1072.256 1985.661 1080.264 1976.828 1072.256 1976.828 L 1040.311 1782.425 C 1032.312 1747.13 1040.311 1711.727 1048.328 1676.422 L 1104.287 1526.193 L 1104.287 1517.337 L 1104.287 1455.485 C 1104.287 1402.487 1128.215 1358.338 1160.236 1322.935 L 1184.246 1305.239 C 1200.181 1287.641 1192.173 1269.944 1184.246 1252.246 C 1176.246 1243.394 1168.238 1234.554 1168.238 1216.94 L 1168.238 1119.688 C 1168.238 1066.701 1192.173 1013.695 1224.19 978.305 C 1272.149 925.303 1304.163 854.602 1304.163 783.911 C 1328.102 306.722 1791.842 183.024 1903.75 536.511 C 1903.75 545.364 1903.75 562.971 1887.745 562.971 C 1871.737 571.818 1847.801 580.667 1839.784 598.36 C 1831.784 607.218 1815.777 607.218 1807.775 598.36 C 1711.872 562.971 1687.849 651.358 1695.857 775.062 C 1703.864 845.747 1727.881 916.453 1775.833 969.449 L 1791.842 987.145 C 1823.777 1022.546 1847.801 1075.541 1847.801 1128.545 L 1847.801 1225.78 C 1847.801 1234.554 1839.784 1252.246 1831.784 1261.088 C 1815.777 1269.944 1815.777 1296.487 1831.784 1314.095 L 1855.793 1331.788 C 1887.745 1367.097 1911.752 1411.337 1911.752 1464.333 L 1911.752 1526.193 L 1911.752 1535.023 L 1967.703 1685.273 C 1975.718 1720.58 1983.648 1755.97 1975.718 1791.274 L 1943.705 1985.661 C 1943.705 1994.516 1943.705 2003.356 1943.705 2003.356 L 2031.671 2162.458 C 2039.679 2180.063 2055.614 2180.063 2071.615 2171.306 C 2087.622 2162.458 2087.622 2144.755 2079.623 2127.06 L 1999.654 1976.828 L 2023.664 1791.274 C 2031.671 1747.13 2023.664 1702.966 2007.656 1658.73 L 1959.71 1508.497 L 1959.71 1446.637 C 1959.71 1375.937 1935.687 1314.095 1887.745 1269.944 C 1879.728 1269.944 1879.728 1261.088 1879.728 1261.088 C 1871.737 1252.246 1871.737 1234.554 1879.728 1225.78 C 1895.742 1199.245 1911.752 1172.703 1935.687 1146.243 C 2015.671 1049.005 2143.581 1031.31 2239.485 1119.688 C 2415.365 1278.79 2551.29 1429.023 2639.268 1667.577 Z" style="fill: rgb(255, 255, 255);"/>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<title>redash-logo</title>
<desc>Created with Sketch.</desc>
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
<path d="M 2639.268 1667.577 C 2687.219 1791.274 2671.21 1923.814 2599.242 2029.907 L 2367.412 2374.549 C 2319.453 2454 2231.477 2480.543 2143.581 2454 L 1871.737 2339.144 C 1823.777 2339.144 1679.85 2427.546 1495.971 2392.156 C 1320.094 2418.699 1168.238 2339.144 1120.294 2339.144 L 848.434 2454 C 768.459 2480.543 680.57 2454 624.61 2374.549 L 400.71 2029.907 C 328.742 1923.814 312.805 1782.425 360.756 1667.577 C 448.748 1429.023 584.58 1278.79 776.474 1110.848 C 872.448 1031.31 1000.376 1040.15 1080.264 1137.402 C 1096.27 1163.854 1112.279 1181.548 1136.214 1216.94 C 1144.222 1225.78 1144.222 1243.394 1136.214 1252.246 L 1128.215 1261.088 C 1080.264 1305.239 1056.318 1375.937 1056.318 1437.791 L 1056.318 1499.724 L 1008.303 1649.873 C 992.358 1694.119 992.358 1738.277 992.358 1782.425 L 1016.296 1968.062 L 936.407 2118.212 C 928.407 2135.914 936.407 2153.61 944.338 2162.458 C 960.343 2171.306 976.353 2162.458 984.368 2153.61 L 1072.256 1994.516 C 1072.256 1985.661 1080.264 1976.828 1072.256 1976.828 L 1040.311 1782.425 C 1032.312 1747.13 1040.311 1711.727 1048.328 1676.422 L 1104.287 1526.193 L 1104.287 1517.337 L 1104.287 1455.485 C 1104.287 1402.487 1128.215 1358.338 1160.236 1322.935 L 1184.246 1305.239 C 1200.181 1287.641 1192.173 1269.944 1184.246 1252.246 C 1176.246 1243.394 1168.238 1234.554 1168.238 1216.94 L 1168.238 1119.688 C 1168.238 1066.701 1192.173 1013.695 1224.19 978.305 C 1272.149 925.303 1304.163 854.602 1304.163 783.911 C 1328.102 306.722 1791.842 183.024 1903.75 536.511 C 1903.75 545.364 1903.75 562.971 1887.745 562.971 C 1871.737 571.818 1847.801 580.667 1839.784 598.36 C 1831.784 607.218 1815.777 607.218 1807.775 598.36 C 1711.872 562.971 1687.849 651.358 1695.857 775.062 C 1703.864 845.747 1727.881 916.453 1775.833 969.449 L 1791.842 987.145 C 1823.777 1022.546 1847.801 1075.541 1847.801 1128.545 L 1847.801 1225.78 C 1847.801 1234.554 1839.784 1252.246 1831.784 1261.088 C 1815.777 1269.944 1815.777 1296.487 1831.784 1314.095 L 1855.793 1331.788 C 1887.745 1367.097 1911.752 1411.337 1911.752 1464.333 L 1911.752 1526.193 L 1911.752 1535.023 L 1967.703 1685.273 C 1975.718 1720.58 1983.648 1755.97 1975.718 1791.274 L 1943.705 1985.661 C 1943.705 1994.516 1943.705 2003.356 1943.705 2003.356 L 2031.671 2162.458 C 2039.679 2180.063 2055.614 2180.063 2071.615 2171.306 C 2087.622 2162.458 2087.622 2144.755 2079.623 2127.06 L 1999.654 1976.828 L 2023.664 1791.274 C 2031.671 1747.13 2023.664 1702.966 2007.656 1658.73 L 1959.71 1508.497 L 1959.71 1446.637 C 1959.71 1375.937 1935.687 1314.095 1887.745 1269.944 C 1879.728 1269.944 1879.728 1261.088 1879.728 1261.088 C 1871.737 1252.246 1871.737 1234.554 1879.728 1225.78 C 1895.742 1199.245 1911.752 1172.703 1935.687 1146.243 C 2015.671 1049.005 2143.581 1031.31 2239.485 1119.688 C 2415.365 1278.79 2551.29 1429.023 2639.268 1667.577 Z" style=""/>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

View file

@ -1,10 +1,10 @@
<p align="center">
<img src="../../img/Alnoda-white.svg" alt="Alnoda logo" width="150">
<img src="./img/redis-circle.svg" alt="Redis logo" width="150">
</p>
# Redis workspace
Docker image with Redis, Redis Commander and several CLI tools to interact with Redis.
Containerized environment to interact, manage and administer Redis database.
<p align="center">
<img src="img/redis-wid-collage.png" alt="Collage" width="750">
@ -36,29 +36,22 @@ open [localhost:8020](http://localhost:8020) in browser.
**Dev tools:**
- [**Eclipse Theia**](https://theia-ide.org/docs/) - open source version of popular Visual Studio Code IDE. Theia is trully open-source, has
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
- [**Terminal**](https://github.com/tsl0922/ttyd) - secure browser-based terminal.
- [**FileBrowser**](https://github.com/filebrowser/filebrowser) - manage files and folders inside the workspace, and exchange data between local environment and the workspace
- [**Cronicle**](https://github.com/jhuckaby/Cronicle) - task scheduler and runner, with a web based front-end UI. It handles both scheduled, repeating and on-demand jobs, targeting any number of worker servers, with real-time stats and live log viewer.
- [**Static File Server**](https://github.com/vercel/serve) - view any static html sites as easy as if you do it on your local machine. Serve static websites easily.
- [**Ungit**](https://github.com/FredrikNoren/ungit) - rings user friendliness to git without sacrificing the versatility of it.
- [**MkDocs**](https://squidfunk.github.io/mkdocs-material/) - create awesome documentation for your project with only markdown.
- [**Midnight Commander**](https://midnight-commander.org/) - Feature rich visual file manager with internal text viewer and editor.
- [**Process Monitor**](https://htop.dev/) - Monitor running process and resource utilization.
- Quicklaunch UI with getting started tutorial
Image is built from **Ubuntu 20.4** with the additional CLI apps
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
- Python 3, Pip
- Node/nodeenv
- curl, wget, telnet, jq
- **Git:** git, git-flow, lazygit
- **File browsers:** mc, xplr
- **Text editors:** nano, vim, mcedit
- **System monitors:** ncdu, htop, glances, vizex
- **Process Control:** supervisord
- **Job scheduler:** cron
- **Ubuntu 20.4** with the following CLI apps
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
- Python 3, Pip
- Node/nodeenv
- curl, wget, telnet, jq
- **Git:** git, git-flow, lazygit
- **File browsers:** mc
- **Text editors:** nano, vim, mcedit
- **System monitors:** ncdu, htop, glances, vizex
- **Process Control:** supervisord
- **Job scheduler:** cron
- **Terminal multiplexer:** tmux
## Docs

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<title>redash-logo</title>
<desc>Created with Sketch.</desc>
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
<path d="M 595.993 200 L 304.007 200 C 247.434 200 200 247.451 200 304.023 L 200 595.993 C 200 652.567 247.434 700 304.007 700 L 595.993 700 C 652.565 700 700 652.567 700 595.993 L 700 304.023 C 700 247.451 652.565 200 595.993 200 Z M 322.26 285.769 C 358.767 285.769 387.948 314.968 387.948 351.458 C 387.948 387.964 360.576 418.973 322.26 418.973 C 285.77 418.973 256.571 389.774 256.571 353.285 C 256.571 316.794 285.77 285.769 322.26 285.769 Z M 325.914 654.391 L 240.144 568.622 L 325.914 482.853 L 411.682 568.622 L 325.914 654.391 Z M 577.742 616.058 L 501.088 616.058 L 575.913 493.797 L 652.565 616.058 L 577.742 616.058 Z M 610.594 371.537 L 630.656 435.401 L 575.913 395.256 L 521.169 435.401 L 541.232 371.537 L 486.49 331.394 L 554.023 331.394 L 574.086 267.515 L 594.168 331.394 L 661.683 331.394 L 610.594 371.537 Z" style=""/>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none; fill: rgb(255, 255, 255);" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<title>redash-logo</title>
<desc>Created with Sketch.</desc>
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
<path d="M 595.993 200 L 304.007 200 C 247.434 200 200 247.451 200 304.023 L 200 595.993 C 200 652.567 247.434 700 304.007 700 L 595.993 700 C 652.565 700 700 652.567 700 595.993 L 700 304.023 C 700 247.451 652.565 200 595.993 200 Z M 322.26 285.769 C 358.767 285.769 387.948 314.968 387.948 351.458 C 387.948 387.964 360.576 418.973 322.26 418.973 C 285.77 418.973 256.571 389.774 256.571 353.285 C 256.571 316.794 285.77 285.769 322.26 285.769 Z M 325.914 654.391 L 240.144 568.622 L 325.914 482.853 L 411.682 568.622 L 325.914 654.391 Z M 577.742 616.058 L 501.088 616.058 L 575.913 493.797 L 652.565 616.058 L 577.742 616.058 Z M 610.594 371.537 L 630.656 435.401 L 575.913 395.256 L 521.169 435.401 L 541.232 371.537 L 486.49 331.394 L 554.023 331.394 L 574.086 267.515 L 594.168 331.394 L 661.683 331.394 L 610.594 371.537 Z" style="fill: rgb(255, 255, 255);"/>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
<g id="g12" transform="scale(0.1)">
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
<title>Go icon</title>
<title>Elixir icon</title>
<title>R icon</title>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<title>OpenSearch logo</title>
<desc>Search engine software fork of Elasticsearch</desc>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
<title>redash-logo</title>
<desc>Created with Sketch.</desc>
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
</g>
</g>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
<path d="M 595.993 200 L 304.007 200 C 247.434 200 200 247.451 200 304.023 L 200 595.993 C 200 652.567 247.434 700 304.007 700 L 595.993 700 C 652.565 700 700 652.567 700 595.993 L 700 304.023 C 700 247.451 652.565 200 595.993 200 Z M 322.26 285.769 C 358.767 285.769 387.948 314.968 387.948 351.458 C 387.948 387.964 360.576 418.973 322.26 418.973 C 285.77 418.973 256.571 389.774 256.571 353.285 C 256.571 316.794 285.77 285.769 322.26 285.769 Z M 325.914 654.391 L 240.144 568.622 L 325.914 482.853 L 411.682 568.622 L 325.914 654.391 Z M 577.742 616.058 L 501.088 616.058 L 575.913 493.797 L 652.565 616.058 L 577.742 616.058 Z M 610.594 371.537 L 630.656 435.401 L 575.913 395.256 L 521.169 435.401 L 541.232 371.537 L 486.49 331.394 L 554.023 331.394 L 574.086 267.515 L 594.168 331.394 L 661.683 331.394 L 610.594 371.537 Z" style=""/>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB