Update plug-in for 'tabs' to 'tabs2'

This commit is contained in:
Tirokk 2023-08-15 14:47:29 +00:00
commit 8ab725cd44
1533 changed files with 235632 additions and 0 deletions

0
gitbook-docs/(1).png Normal file
View File

0
gitbook-docs/(2).png Normal file
View File

2
gitbook-docs/.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
backend/snapshots/* linguist-generated=true

View File

@ -0,0 +1,3 @@
structure:
readme: README.md
summary: SUMMARY.md

View File

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 490.1 105.6" style="enable-background:new 0 0 490.1 105.6;" xml:space="preserve">
<style type="text/css">
.st0{fill:#F4B960;}
.st1{fill:#E66F32;}
.st2{fill:#E43C41;}
.st3{fill:#BDD041;}
.st4{fill:#6DB54C;}
.st5{fill:#AEDAE6;}
.st6{fill:#56B8DE;}
.st7{fill:#00B1D5;}
.st8{fill:url(#SVGID_1_);}
.st9{fill:#221F1F;}
.st10{fill:#FFFFFF;}
.st11{fill:#000111;}
</style>
<title>Browserstack-logo-white</title>
<circle class="st0" cx="52.8" cy="52.8" r="52.8"/>
<circle class="st1" cx="47.5" cy="47.5" r="47.5"/>
<circle class="st2" cx="53.8" cy="41.1" r="41.1"/>
<circle class="st3" cx="57.1" cy="44.4" r="37.8"/>
<circle class="st4" cx="54.3" cy="47.2" r="35.1"/>
<circle class="st5" cx="48.8" cy="41.7" r="29.5"/>
<circle class="st6" cx="53.6" cy="36.8" r="24.7"/>
<circle class="st7" cx="56.6" cy="39.9" r="21.7"/>
<radialGradient id="SVGID_1_" cx="53.45" cy="63.02" r="18.57" gradientTransform="matrix(1 0 0 -1 0 106)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#797979"/>
<stop offset="1" style="stop-color:#4C4C4C"/>
</radialGradient>
<circle class="st8" cx="53.5" cy="43" r="18.6"/>
<circle class="st9" cx="53.5" cy="43" r="18.6"/>
<ellipse transform="matrix(0.4094 -0.9123 0.9123 0.4094 2.8913 76.9251)" class="st10" cx="60.9" cy="36.2" rx="5.7" ry="3.7"/>
<path class="st11" d="M122.5,32.6c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0.1,0h16.6c9.5,0,13.9,4.4,13.9,11c0.2,3.7-1.8,7.2-5.2,8.8v0.1
c3.7,1.5,6.1,5.2,6,9.3c0,8.2-5.6,12.2-15.4,12.2h-16c-0.3,0-0.6-0.2-0.7-0.5c0,0,0,0,0-0.1L122.5,32.6L122.5,32.6z M139.6,49.1
c3.9,0,6.4-2.2,6.4-5.4s-2.4-5.5-6.4-5.5h-8.9c-0.2,0-0.4,0.1-0.4,0.3c0,0,0,0,0,0.1v10.2c0,0.2,0.1,0.3,0.3,0.4c0,0,0,0,0.1,0
H139.6L139.6,49.1z M130.6,66.9h9.3c4.3,0,6.8-2.3,6.8-5.8s-2.4-5.7-6.7-5.7h-9.3c-0.2,0-0.4,0.1-0.4,0.3c0,0,0,0,0,0.1v10.7
C130.3,66.8,130.4,66.9,130.6,66.9C130.6,66.9,130.6,66.9,130.6,66.9L130.6,66.9z"/>
<path class="st11" d="M159.9,73.3c-0.3,0-0.6-0.2-0.7-0.5c0,0,0,0,0-0.1V44.6c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0.1,0h6
c0.3,0,0.6,0.2,0.7,0.5c0,0,0,0,0,0.1v2.5h0.1c1.5-2.2,4.2-3.8,8.2-3.8c2.4,0,4.8,0.8,6.6,2.4c0.3,0.3,0.4,0.5,0.1,0.8l-3.5,4.1
c-0.2,0.3-0.6,0.4-0.9,0.2c0,0,0,0-0.1,0c-1.4-0.9-3-1.4-4.7-1.4c-4.1,0-6,2.7-6,7.4v15.9c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0-0.1,0
H159.9L159.9,73.3z"/>
<path class="st11" d="M182.9,65.8c-0.8-2.3-1.1-4.8-1.1-7.2c-0.1-2.5,0.3-4.9,1.1-7.2c1.8-5.1,6.6-8.1,13.1-8.1s11.2,3,13,8.1
c0.8,2.3,1.1,4.8,1.1,7.2c0.1,2.5-0.3,4.9-1.1,7.2c-1.8,5.1-6.6,8.1-13,8.1S184.7,71,182.9,65.8z M201.9,64c0.5-1.7,0.8-3.6,0.7-5.4
c0.1-1.8-0.1-3.7-0.7-5.4c-0.9-2.5-3.3-4-5.9-3.8c-2.6-0.2-5.1,1.4-6,3.8c-0.5,1.8-0.8,3.6-0.7,5.4c-0.1,1.8,0.1,3.7,0.7,5.4
c0.9,2.5,3.4,4,6,3.8C198.6,68,201,66.5,201.9,64L201.9,64z"/>
<path class="st11" d="M241.9,73.3c-0.4,0-0.7-0.3-0.8-0.6L235,53.9h-0.1l-6.2,18.7c-0.1,0.4-0.4,0.6-0.8,0.6h-5.4
c-0.4,0-0.7-0.3-0.8-0.6l-10-28.1c-0.1-0.2,0-0.5,0.2-0.6c0.1,0,0.2-0.1,0.3,0h6.3c0.4,0,0.8,0.2,0.9,0.6l6.1,19.3h0.1l6-19.3
c0.1-0.4,0.5-0.6,0.9-0.6h4.7c0.4,0,0.7,0.2,0.9,0.6l6.4,19.3h0.1l5.8-19.3c0.1-0.4,0.5-0.7,0.9-0.6h6.3c0.2-0.1,0.5,0.1,0.5,0.3
c0,0.1,0,0.2,0,0.3l-10,28.1c-0.1,0.4-0.4,0.6-0.8,0.6L241.9,73.3L241.9,73.3z"/>
<path class="st11" d="M259.3,69.3c-0.2-0.2-0.3-0.6-0.1-0.8c0,0,0,0,0.1-0.1l3.7-3.6c0.3-0.2,0.7-0.2,0.9,0c2.6,2.1,5.9,3.3,9.3,3.3
c3.9,0,5.9-1.5,5.9-3.5c0-1.8-1.1-2.9-5.2-3.2l-3.4-0.3c-6.4-0.6-9.7-3.6-9.7-8.6c0-5.7,4.4-9.2,12.3-9.2c4.2-0.1,8.4,1.2,11.9,3.6
c0.3,0.2,0.3,0.5,0.2,0.8c0,0,0,0,0,0.1l-3.2,3.6c-0.2,0.3-0.6,0.3-0.9,0.1c-2.5-1.5-5.4-2.4-8.3-2.4c-3.1,0-4.8,1.3-4.8,3
s1.1,2.7,5.2,3.1l3.4,0.3c6.6,0.6,9.8,3.8,9.8,8.6c0,5.8-4.6,9.9-13.3,9.9C268,74,263.2,72.4,259.3,69.3z"/>
<path class="st11" d="M291.2,65.8c-0.8-2.3-1.2-4.7-1.1-7.2c-0.1-2.5,0.3-4.9,1-7.2c1.8-5.1,6.6-8.1,12.9-8.1c6.5,0,11.2,3.1,13,8.1
c0.7,2.1,1,4.1,1,8.8c0,0.3-0.3,0.6-0.6,0.6c0,0-0.1,0-0.1,0h-19.5c-0.2,0-0.4,0.1-0.4,0.3c0,0,0,0,0,0.1c0,0.8,0.2,1.5,0.5,2.2
c1,2.9,3.5,4.4,7.1,4.4c2.7,0.1,5.4-0.9,7.4-2.8c0.2-0.3,0.7-0.4,1-0.1c0,0,0,0,0,0l3.9,3.2c0.2,0.1,0.3,0.5,0.2,0.7
c0,0.1-0.1,0.1-0.1,0.1c-2.7,2.9-7.2,5-13,5C297.8,73.9,293,70.9,291.2,65.8z M310.4,52.8c-0.9-2.4-3.2-3.8-6.2-3.8
s-5.4,1.4-6.2,3.8c-0.3,0.8-0.4,1.6-0.4,2.5c0,0.2,0.1,0.3,0.3,0.4c0,0,0,0,0.1,0h12.4c0.2,0,0.4-0.1,0.4-0.3c0,0,0,0,0-0.1
C310.8,54.5,310.6,53.6,310.4,52.8L310.4,52.8z"/>
<path class="st11" d="M323.6,73.3c-0.3,0-0.6-0.2-0.7-0.5c0,0,0,0,0-0.1V44.6c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0.1,0h6
c0.3,0,0.6,0.2,0.7,0.5c0,0,0,0,0,0.1v2.5h0.1c1.5-2.2,4.2-3.8,8.2-3.8c2.4,0,4.8,0.8,6.6,2.4c0.3,0.3,0.4,0.5,0.1,0.8l-3.5,4.1
c-0.2,0.3-0.6,0.4-0.9,0.2c0,0,0,0-0.1,0c-1.4-0.9-3-1.4-4.7-1.4c-4.1,0-6,2.7-6,7.4v15.9c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0-0.1,0
H323.6L323.6,73.3z"/>
<path class="st11" d="M346.5,68.5c-0.3-0.2-0.4-0.6-0.2-0.9c0,0,0,0,0,0l4.1-4.4c0.2-0.3,0.6-0.3,0.9-0.1c0,0,0,0,0,0
c3.5,2.7,7.7,4.2,12.1,4.4c5.3,0,8.4-2.5,8.4-6c0-3-2-4.9-8.1-5.7l-2.4-0.3c-8.6-1.1-13.5-4.9-13.5-11.8c0-7.5,5.9-12.4,15.1-12.4
c5.1-0.1,10.1,1.4,14.5,4.2c0.3,0.1,0.4,0.4,0.2,0.7c0,0.1-0.1,0.1-0.1,0.2l-3.1,4.5c-0.2,0.3-0.6,0.4-0.9,0.2
c-3.2-2.1-6.9-3.2-10.7-3.2c-4.5,0-7,2.3-7,5.5c0,2.9,2.2,4.8,8.2,5.6l2.4,0.3c8.6,1.1,13.3,4.9,13.3,12c0,7.3-5.7,12.8-16.8,12.8
C356.3,73.9,350,71.5,346.5,68.5z"/>
<path class="st11" d="M393.3,73.8c-6.4,0-8.8-2.9-8.8-8.6V49.8c0-0.2-0.1-0.3-0.3-0.4c0,0,0,0-0.1,0H382c-0.3,0-0.6-0.2-0.7-0.5
c0,0,0,0,0-0.1v-4.1c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0.1,0h2.1c0.2,0,0.4-0.1,0.4-0.3c0,0,0,0,0-0.1v-8c0-0.3,0.3-0.6,0.6-0.6
c0,0,0,0,0.1,0h6c0.3,0,0.6,0.2,0.7,0.5c0,0,0,0,0,0.1v8c0,0.2,0.1,0.3,0.3,0.4c0,0,0,0,0.1,0h4.2c0.3,0,0.6,0.2,0.7,0.5
c0,0,0,0,0,0.1v4.1c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0-0.1,0h-4.2c-0.2,0-0.4,0.1-0.4,0.3c0,0,0,0,0,0.1V65c0,2.1,0.9,2.7,3,2.7h1.6
c0.3,0,0.6,0.2,0.7,0.5c0,0,0,0,0,0.1v4.9c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0-0.1,0L393.3,73.8L393.3,73.8z"/>
<path class="st11" d="M421.2,73.3c-0.3,0-0.6-0.2-0.7-0.5c0,0,0,0,0-0.1v-2.1h0c-1.5,2-4.5,3.4-8.9,3.4c-5.8,0-10.6-2.8-10.6-8.9
c0-6.4,4.9-9.3,12.7-9.3h6.4c0.2,0,0.4-0.1,0.4-0.3c0,0,0,0,0-0.1v-1.4c0-3.3-1.7-4.9-7-4.9c-2.6-0.1-5.1,0.6-7.2,2
c-0.3,0.2-0.7,0.2-0.9-0.1c0,0,0,0,0-0.1l-2.4-4c-0.2-0.2-0.1-0.6,0.1-0.8c0,0,0,0,0,0c2.6-1.7,6-2.9,11.2-2.9
c9.6,0,13.2,3,13.2,10.2v19.1c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0-0.1,0H421.2L421.2,73.3z M420.4,63.4v-2.2c0-0.2-0.1-0.3-0.3-0.4
c0,0,0,0-0.1,0h-5.2c-4.7,0-6.8,1.2-6.8,3.9c0,2.4,1.9,3.6,5.5,3.6C417.9,68.4,420.4,66.8,420.4,63.4L420.4,63.4z"/>
<path class="st11" d="M433.1,65.8c-0.7-2.3-1.1-4.8-1-7.2c-0.1-2.4,0.3-4.9,1-7.2c1.8-5.2,6.7-8.1,13.1-8.1c4.2-0.2,8.2,1.5,11,4.6
c0.2,0.2,0.2,0.6,0,0.8c0,0,0,0-0.1,0.1l-4.1,3.3c-0.3,0.2-0.7,0.2-0.9-0.1c0,0,0,0,0-0.1c-1.5-1.7-3.6-2.6-5.9-2.5
c-2.8,0-5,1.3-5.9,3.8c-0.5,1.8-0.8,3.6-0.7,5.4c-0.1,1.8,0.1,3.7,0.7,5.5c0.9,2.5,3.1,3.8,5.9,3.8c2.2,0.1,4.4-0.9,5.9-2.6
c0.2-0.3,0.6-0.3,0.9-0.1c0,0,0,0,0,0l4.1,3.3c0.3,0.2,0.3,0.5,0.1,0.8c0,0,0,0-0.1,0.1c-2.9,3-6.9,4.6-11,4.5
C439.8,73.9,435,71.1,433.1,65.8z"/>
<path class="st11" d="M482.8,73.3c-0.4,0-0.8-0.2-1-0.6l-8-12.3l-4.3,4.6v7.7c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0-0.1,0h-6
c-0.3,0-0.6-0.2-0.7-0.5c0,0,0,0,0-0.1V32.6c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0.1,0h6c0.3,0,0.6,0.2,0.7,0.5c0,0,0,0,0,0.1v23.8
l10.8-11.8c0.3-0.4,0.8-0.6,1.2-0.6h6.7c0.2,0,0.4,0.1,0.4,0.3c0,0.1,0,0.3-0.1,0.3l-10.1,10.7L490,72.7c0.1,0.2,0.1,0.4,0,0.5
c-0.1,0.1-0.2,0.1-0.3,0.1H482.8L482.8,73.3z"/>
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

13
gitbook-docs/.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,13 @@
<!-- You can find the latest issue templates here https://github.com/ulfgebhardt/issue-templates -->
<!--
Please take a look at the issue templates at https://github.com/Ocelot-Social-Community/Ocelot-Social/issues/new/choose
before submitting a new issue. Following one of the issue templates will ensure maintainers can route your request efficiently.
Thanks!
-->
## 💬 Issue
<!-- Describe your Issue in detail. -->
<!-- Attach screenshots and drawings if needed. -->

View File

@ -0,0 +1,10 @@
---
name: 🐛 Bug report
about: Create a report to help us improve
labels: bug
title: 🐛 [Bug]
---
<!-- You can find the latest issue templates here https://github.com/ulfgebhardt/issue-templates -->
## 🐛 Bugreport
<!-- Describe your issue in detail. Include screenshots if needed. Give us as much information as possible. Use a clear and concise description of what the bug is.-->

View File

@ -0,0 +1,10 @@
---
name: 💥 DevOps ticket
about: Help us manage our deployed Software.
labels: devops
title: 💥 [DevOps]
---
<!-- You can find the latest issue templates here https://github.com/ulfgebhardt/issue-templates -->
## 💥 DevOps ticket
<!-- Describe your issue in detail. Include screenshots if needed. Give us as much information as possible. Use a clear and concise description of what the problem is.-->

View File

@ -0,0 +1,13 @@
---
name: 🌟 Epic
about: Define a big development Step
labels: epic
title: 🌟 [EPIC]
---
<!-- You can find the latest issue templates here https://github.com/ulfgebhardt/issue-templates -->
<!-- THIS ISSUE-TYPE IS NOT FOR YOU! -->
<!-- Proceed only if you know what you are doing - have a chat with Project's Team first -->
## 🌟 EPIC
<!-- Describe your Epic in detail. Include screenshots and drawings -->

View File

@ -0,0 +1,10 @@
---
name: 🚀 Feature request
about: Suggest an idea for this project
labels: feature
title: 🚀 [Feature]
---
<!-- You can find the latest issue templates here https://github.com/ulfgebhardt/issue-templates -->
## 🚀 Feature
<!-- Give a short summary of the Feature. Use Screenshots if you want. -->

View File

@ -0,0 +1,13 @@
---
name: 💬 Question
about: If you need help understanding our Software.
labels: question
title: 💬 [Question]
---
<!-- You can find the latest issue templates here https://github.com/ulfgebhardt/issue-templates -->
<!-- Question the project's team -->
<!-- If you need an answer right away, consider to take other means of communication with the project's team -->
## 💬 Question
<!-- Describe your Question in detail. Include screenshots and drawings if needed. -->

View File

@ -0,0 +1,10 @@
---
name: 🔧 Refactor ticket
about: Help us improve our code by refactoring it.
labels: refactor
title: 🔧 [Refactor]
---
<!-- You can find the latest issue templates here https://github.com/ulfgebhardt/issue-templates -->
## 🔧 Refactor ticket
<!-- Describe your issue in detail. Include screenshots if needed. Give us as much information as possible. Use a clear and concise description of what the problem is.-->

View File

@ -0,0 +1,13 @@
---
name: 🎂 Release
about: Define a Release
labels: release
title: 🎂 [RELEASE]
---
<!-- You can find the latest issue templates here https://github.com/ulfgebhardt/issue-templates -->
<!-- THIS ISSUE-TYPE IS NOT FOR YOU! -->
<!-- Proceed only if you know what you are doing - have a chat with Project's Team first -->
## 🎂 RELEASE
<!-- Describe your Release in detail. Include screenshots and drawings -->

View File

@ -0,0 +1,15 @@
<!-- You can find the latest issue templates here https://github.com/ulfgebhardt/issue-templates -->
## 🍰 Pullrequest
<!-- Describe the Pullrequest. Use Screenshots if possible. -->
### Issues
<!-- Which Issues does this fix, which are related?
- fixes #XXX
- relates #XXX
-->
- None
### Todo
<!-- In case some parts are still missing, list them here. -->
- [X] None

68
gitbook-docs/.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,68 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
rebase-strategy: "disabled"
schedule:
interval: weekly
day: "saturday"
timezone: "Europe/Berlin"
time: "03:00"
- package-ecosystem: npm
directory: "/"
rebase-strategy: "disabled"
schedule:
interval: weekly
day: "saturday"
timezone: "Europe/Berlin"
time: "03:00"
- package-ecosystem: npm
directory: "/backend"
rebase-strategy: "disabled"
schedule:
interval: weekly
day: "saturday"
timezone: "Europe/Berlin"
time: "03:00"
- package-ecosystem: npm
directory: "/webapp"
rebase-strategy: "disabled"
schedule:
interval: weekly
day: "saturday"
timezone: "Europe/Berlin"
time: "03:00"
- package-ecosystem: docker
directory: "/backend"
rebase-strategy: "disabled"
schedule:
interval: weekly
day: "saturday"
timezone: "Europe/Berlin"
time: "03:00"
- package-ecosystem: docker
directory: "/webapp"
rebase-strategy: "disabled"
schedule:
interval: weekly
day: "saturday"
timezone: "Europe/Berlin"
time: "03:00"
- package-ecosystem: docker
directory: "/neo4j"
rebase-strategy: "disabled"
schedule:
interval: weekly
day: "saturday"
timezone: "Europe/Berlin"
time: "03:00"
- package-ecosystem: docker
directory: "/deployment/src/docker"
rebase-strategy: "disabled"
schedule:
interval: weekly
day: "saturday"
timezone: "Europe/Berlin"
time: "03:00"

11
gitbook-docs/.github/file-filters.yml vendored Normal file
View File

@ -0,0 +1,11 @@
backend: &backend
- '.github/workflows/test-backend.yml'
- 'backend/**/*'
- 'neo4j/**/*'
docker: &docker
- 'docker-compose.*'
webapp: &webapp
- '.github/workflows/test-webapp.yml'
- 'webapp/**/*'

View File

@ -0,0 +1,42 @@
###############################################################################
# A Github repo has max 10 GB of cache.
# https://github.blog/changelog/2021-11-23-github-actions-cache-size-is-now-increased-to-10gb-per-repository/
#
# To avoid "cache thrashing" by their cache eviction policy it is recommended
# to apply a cache cleanup workflow at PR closing to dele cache leftovers of
# the current branch:
# https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#force-deleting-cache-entries
###############################################################################
name: ocelot.social cache cleanup on pr closing
on:
pull_request:
types:
- closed
jobs:
clean-branch-cache:
name: Cleanup branch cache
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Cleanup
run: |
gh extension install actions/gh-actions-cache
REPO=${{ github.repository }}
BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge"
echo "Fetching list of cache key"
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 )
set +e
echo "Deleting caches..."
for cacheKey in $cacheKeysForPR
do
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
done
echo "Done"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -0,0 +1,45 @@
name: 'Gitbook-Action'
on:
push:
branches:
- master
- 6689-setup-gitbook-action # just for testing, do remove afterwards
paths-ignore:
- 'gitbook-docs/**' # To Avoid Loop
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout action
uses: actions/checkout@v2
- name: Gitbook Action # https://github.com/ZanderZhao/gitbook-action/releases
uses: ZanderZhao/gitbook-action@master # -> or ZanderZhao/gitbook-action@v1.2.4, Just example, click above, use latest please
with: # or fork this repo and use YourName/gitbook-action@master
token: ${{ secrets.GITBOOK_ACTION_TOKEN }} # -> remember add this in settings/secrets as https://ZanderZhao.github.io/gitbook-action/
# time_zone: Asia/Shanghai
# source_branch: master
source_branch: 6689-setup-gitbook-action
source_dir: "."
source_edit_time: true
publish_commit_message: ${{ github.event.head_commit.message }}
# publish_branch: master
publish_branch: docs-ocelot-social-gh-pages
publish_dir: gitbook-docs
# Some not indicated are default values, eg: publish_repo
# example2
# - name: Gitbook Action
# uses: ZanderZhao/gitbook-action@master
# with:
# token: ${{ secrets.PERSONAL_TOKEN }}
# time_zone: Asia/Shanghai
# source_repo: GitbookIO/gitbook
# source_branch: master
# source_dir: docs
# publish_branch: master
# publish_dir: docs/official
# publish2_repo: gitbook-org/gitbook
# Some not indicated are default values, eg: publish_repo

View File

@ -0,0 +1,71 @@
name: "ocelot.social lint pull request CI"
on:
pull_request_target:
types:
- opened
- edited
- synchronize
jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
if: ${{ github.actor != 'dependabot[bot]' }}
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# Configure which types are allowed (newline delimited).
# Default: https://github.com/commitizen/conventional-commit-types
#types: |
# fix
# feat
# Configure which scopes are allowed (newline delimited).
scopes: |
backend
webapp
database
release
other
# Configure that a scope must always be provided.
requireScope: true
# Configure which scopes (newline delimited) are disallowed in PR
# titles. For instance by setting # the value below, `chore(release):
# ...` and `ci(e2e,release): ...` will be rejected.
#disallowScopes: |
# release
# Configure additional validation for the subject based on a regex.
# This example ensures the subject doesn't start with an uppercase character.
subjectPattern: ^(?![A-Z]).+$
# If `subjectPattern` is configured, you can use this property to override
# the default error message that is shown when the pattern doesn't match.
# The variables `subject` and `title` can be used within the message.
subjectPatternError: |
The subject "{subject}" found in the pull request title "{title}"
didn't match the configured pattern. Please ensure that the subject
doesn't start with an uppercase character.
# If you use GitHub Enterprise, you can set this to the URL of your server
#githubBaseUrl: https://github.myorg.com/api/v3
# If the PR contains one of these labels (newline delimited), the
# validation is skipped.
# If you want to rerun the validation when labels change, you might want
# to use the `labeled` and `unlabeled` event triggers in your workflow.
#ignoreLabels: |
# bot
# ignore-semantic-pull-request
# If you're using a format for the PR title that differs from the traditional Conventional
# Commits spec, you can use these options to customize the parsing of the type, scope and
# subject. The `headerPattern` should contain a regex where the capturing groups in parentheses
# correspond to the parts listed in `headerPatternCorrespondence`.
# See: https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-commits-parser#headerpattern
headerPattern: '^(\w*)(?:\(([\w$.\-*/ ]*)\))?: (.*)$'
headerPatternCorrespondence: type, scope, subject
# For work-in-progress PRs you can typically use draft pull requests
# from GitHub. However, private repositories on the free plan don't have
# this option and therefore this action allows you to opt-in to using the
# special "[WIP]" prefix to indicate this state. This will avoid the
# validation of the PR title and the pull request checks remain pending.
# Note that a second check will be reported if this is enabled.
wip: true

View File

@ -0,0 +1,317 @@
name: publish
on:
push:
branches:
- master
jobs:
##############################################################################
# JOB: DOCKER BUILD COMMUNITY NEO4J ##########################################
##############################################################################
build_production_neo4j:
name: Docker Build Production - Neo4J
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup env
run: |
echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
- run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
- name: Neo4J | Build `community` image
run: |
docker build --target community \
--tag "ocelotsocialnetwork/neo4j-community:latest" \
--tag "ocelotsocialnetwork/neo4j-community:${VERSION}" \
--tag "ocelotsocialnetwork/neo4j-community:${BUILD_VERSION}" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
neo4j/
- name: Neo4J | Save docker image
run: docker save "ocelotsocialnetwork/neo4j-community" > /tmp/neo4j.tar
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: docker-neo4j-community
path: /tmp/neo4j.tar
##############################################################################
# JOB: DOCKER BUILD PRODUCTION BACKEND #######################################
##############################################################################
build_production_backend:
name: Docker Build Production - Backend
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup env
run: |
echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
- run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
- name: Backend | Build `production` image
run: |
docker build --target base \
--tag "ocelotsocialnetwork/backend:latest-base" \
--tag "ocelotsocialnetwork/backend:${VERSION}-base" \
--tag "ocelotsocialnetwork/backend:${BUILD_VERSION}-base" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
backend/
docker build --target code \
--tag "ocelotsocialnetwork/backend:latest-code" \
--tag "ocelotsocialnetwork/backend:${VERSION}-code" \
--tag "ocelotsocialnetwork/backend:${BUILD_VERSION}-code" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
backend/
docker build --target production \
--tag "ocelotsocialnetwork/backend:latest" \
--tag "ocelotsocialnetwork/backend:${VERSION}" \
--tag "ocelotsocialnetwork/backend:${BUILD_VERSION}" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
backend/
- name: Backend | Save docker image
run: docker save "ocelotsocialnetwork/backend" > /tmp/backend.tar
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: docker-backend-production
path: /tmp/backend.tar
##############################################################################
# JOB: DOCKER BUILD PRODUCTION WEBAPP ########################################
##############################################################################
build_production_webapp:
name: Docker Build Production - WebApp
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup env
run: |
echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
- run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
- name: Webapp | Build `production` image
run: |
docker build --target base \
--tag "ocelotsocialnetwork/webapp:latest-base" \
--tag "ocelotsocialnetwork/webapp:${VERSION}-base" \
--tag "ocelotsocialnetwork/webapp:${BUILD_VERSION}-base" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
webapp/
docker build --target code \
--tag "ocelotsocialnetwork/webapp:latest-code" \
--tag "ocelotsocialnetwork/webapp:${VERSION}-code" \
--tag "ocelotsocialnetwork/webapp:${BUILD_VERSION}-code" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
webapp/
docker build --target production \
--tag "ocelotsocialnetwork/webapp:latest" \
--tag "ocelotsocialnetwork/webapp:${VERSION}" \
--tag "ocelotsocialnetwork/webapp:${BUILD_VERSION}" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
webapp/
- name: Webapp | Save docker image
run: docker save "ocelotsocialnetwork/webapp" > /tmp/webapp.tar
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: docker-webapp-production
path: /tmp/webapp.tar
##############################################################################
# JOB: DOCKER BUILD PRODUCTION MAINTENANCE ###################################
##############################################################################
build_production_maintenance:
name: Docker Build Production - Maintenance
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup env
run: |
echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
- run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
- name: Maintenance | Build `production` image
run: |
docker build --target base \
--tag "ocelotsocialnetwork/maintenance:latest-base" \
--tag "ocelotsocialnetwork/maintenance:${VERSION}-base" \
--tag "ocelotsocialnetwork/maintenance:${BUILD_VERSION}-base" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
-f webapp/Dockerfile.maintenance \
webapp/
docker build --target code \
--tag "ocelotsocialnetwork/maintenance:latest-code" \
--tag "ocelotsocialnetwork/maintenance:${VERSION}-code" \
--tag "ocelotsocialnetwork/maintenance:${BUILD_VERSION}-code" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
-f webapp/Dockerfile.maintenance \
webapp/
docker build --target production \
--tag "ocelotsocialnetwork/maintenance:latest" \
--tag "ocelotsocialnetwork/maintenance:${VERSION}" \
--tag "ocelotsocialnetwork/maintenance:${BUILD_VERSION}" \
--build-arg BBUILD_DATE=$BUILD_DATE \
--build-arg BBUILD_VERSION=$BUILD_VERSION \
--build-arg BBUILD_COMMIT=$BUILD_COMMIT \
-f webapp/Dockerfile.maintenance \
webapp/
- name: Maintenance | Save docker image
run: docker save "ocelotsocialnetwork/maintenance" > /tmp/maintenance.tar
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: docker-maintenance-production
path: /tmp/maintenance.tar
##############################################################################
# JOB: UPLOAD TO DOCKERHUB ###################################################
##############################################################################
upload_to_dockerhub:
name: Upload to Dockerhub
runs-on: ubuntu-latest
needs: [build_production_neo4j,build_production_backend,build_production_webapp,build_production_maintenance]
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- name: Download Docker Image (Neo4J)
uses: actions/download-artifact@v3
with:
name: docker-neo4j-community
path: /tmp
- run: docker load < /tmp/neo4j.tar
- name: Download Docker Image (Backend)
uses: actions/download-artifact@v3
with:
name: docker-backend-production
path: /tmp
- run: docker load < /tmp/backend.tar
- name: Download Docker Image (WebApp)
uses: actions/download-artifact@v3
with:
name: docker-webapp-production
path: /tmp
- run: docker load < /tmp/webapp.tar
- name: Download Docker Image (Maintenance)
uses: actions/download-artifact@v3
with:
name: docker-maintenance-production
path: /tmp
- run: docker load < /tmp/maintenance.tar
- name: login to dockerhub
run: echo "${DOCKERHUB_TOKEN}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin
- name: Push images
run: |
docker push --all-tags ocelotsocialnetwork/neo4j-community
docker push --all-tags ocelotsocialnetwork/backend
docker push --all-tags ocelotsocialnetwork/webapp
docker push --all-tags ocelotsocialnetwork/maintenance
##############################################################################
# JOB: GITHUB TAG LATEST VERSION #############################################
##############################################################################
github_tag:
name: Tag latest version on Github
runs-on: ubuntu-latest
needs: [upload_to_dockerhub]
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch full History for changelog
- name: Setup env
run: |
echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
- run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
- name: package-version-to-git-tag + build number
uses: pkgdeps/git-tag-action@v2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
github_repo: ${{ github.repository }}
version: ${{ env.BUILD_VERSION }}
git_commit_sha: ${{ github.sha }}
git_tag_prefix: "b"
- name: Generate changelog
run: |
yarn install
yarn auto-changelog --latest-version ${{ env.VERSION }} --unreleased-only
- name: package-version-to-git-release
continue-on-error: true # Will fail if tag exists
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ env.VERSION }}
release_name: ${{ env.VERSION }}
body_path: ./CHANGELOG.md
draft: false
prerelease: false
build_trigger:
name: Trigger successful build
runs-on: ubuntu-latest
needs: [github_tag]
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch full History for changelog
- name: Setup env
run: |
echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
- run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
#- name: Repository Dispatch
# uses: peter-evans/repository-dispatch@v2
# with:
# token: ${{ github.token }}
# event-type: trigger-ocelot-build-success
# repository: ${{ github.repository }}
# client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "VERSION": "${VERSION}", "BUILD_DATE": "${BUILD_DATE}", "BUILD_COMMIT": "${BUILD_COMMIT}", "BUILD_VERSION": "${BUILD_VERSION}"}'
- name: Repository Dispatch stage.ocelot.social
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.OCELOT_PUBLISH_EVENT_PAT }} # this token is required to access the other repository
event-type: trigger-ocelot-build-success
repository: 'Ocelot-Social-Community/stage.ocelot.social'
client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "GITHUB_RUN_NUMBER": "${{ env.GITHUB_RUN_NUMBER }}", "VERSION": "${VERSION}", "BUILD_DATE": "${BUILD_DATE}", "BUILD_COMMIT": "${BUILD_COMMIT}", "BUILD_VERSION": "${BUILD_VERSION}"}'
- name: Repository Dispatch stage.yunite.me
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.OCELOT_PUBLISH_EVENT_PAT }} # this token is required to access the other repository
event-type: trigger-ocelot-build-success
repository: 'Yunite-Net/stage.yunite.me'
client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "GITHUB_RUN_NUMBER": "${{ env.GITHUB_RUN_NUMBER }}", "VERSION": "${VERSION}", "BUILD_DATE": "${BUILD_DATE}", "BUILD_COMMIT": "${BUILD_COMMIT}", "BUILD_VERSION": "${BUILD_VERSION}"}'

View File

@ -0,0 +1,140 @@
name: ocelot.social backend test CI
on: push
jobs:
files-changed:
name: Detect File Changes - Backend
runs-on: ubuntu-latest
outputs:
backend: ${{ steps.changes.outputs.backend }}
docker: ${{ steps.changes.outputs.docker }}
steps:
- uses: actions/checkout@v3.3.0
- name: Check for backend file changes
uses: dorny/paths-filter@v2.11.1
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell
build_test_neo4j:
name: Docker Build Test - Neo4J
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.docker == 'true'
needs: files-changed
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Neo4J | Build 'community' image
run: |
docker build --target community -t "ocelotsocialnetwork/neo4j-community:test" neo4j/
docker save "ocelotsocialnetwork/neo4j-community:test" > /tmp/neo4j.tar
- name: Cache docker images
id: cache-neo4j
uses: actions/cache/save@v3.3.1
with:
path: /tmp/neo4j.tar
key: ${{ github.run_id }}-backend-neo4j-cache
build_test_backend:
name: Docker Build Test - Backend
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.docker == 'true'
needs: files-changed
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: backend | Build 'test' image
run: |
docker build --target test -t "ocelotsocialnetwork/backend:test" backend/
docker save "ocelotsocialnetwork/backend:test" > /tmp/backend.tar
- name: Cache docker images
id: cache-backend
uses: actions/cache/save@v3.3.1
with:
path: /tmp/backend.tar
key: ${{ github.run_id }}-backend-cache
lint_backend:
name: Lint Backend
if: needs.files-changed.outputs.backend == 'true'
needs: files-changed
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: backend | Lint
run: cd backend && yarn && yarn run lint
unit_test_backend:
name: Unit tests - Backend
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.docker == 'true'
needs: [files-changed, build_test_neo4j, build_test_backend]
runs-on: ubuntu-latest
permissions:
checks: write
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Restore Neo4J cache
uses: actions/cache/restore@v3.3.1
with:
path: /tmp/neo4j.tar
key: ${{ github.run_id }}-backend-neo4j-cache
fail-on-cache-miss: true
- name: Restore Backend cache
uses: actions/cache/restore@v3.3.1
with:
path: /tmp/backend.tar
key: ${{ github.run_id }}-backend-cache
fail-on-cache-miss: true
- name: Load Docker Images
run: |
docker load < /tmp/neo4j.tar
docker load < /tmp/backend.tar
- name: backend | copy env files
run: |
cp webapp/.env.template webapp/.env
cp backend/.env.template backend/.env
- name: backend | docker-compose
run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps neo4j backend
- name: backend | Initialize Database
run: docker-compose exec -T backend yarn db:migrate init
- name: backend | Migrate Database Up
run: docker-compose exec -T backend yarn db:migrate up
- name: backend | Unit test incl. coverage check
run: docker-compose exec -T backend yarn test
cleanup:
name: Cleanup
if: ${{ needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.docker == 'true' }}
needs: [files-changed, unit_test_backend]
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Delete cache
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh extension install actions/gh-actions-cache
KEY="${{ github.run_id }}-backend-neo4j-cache"
gh actions-cache delete $KEY -R Ocelot-Social-Community/Ocelot-Social --confirm
KEY="${{ github.run_id }}-backend-cache"
gh actions-cache delete $KEY -R Ocelot-Social-Community/Ocelot-Social --confirm

View File

@ -0,0 +1,112 @@
name: ocelot.social end-to-end test CI
on: push
jobs:
docker_preparation:
name: Fullstack test preparation
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Copy env files
run: |
cp webapp/.env.template webapp/.env
cp backend/.env.template backend/.env
- name: Build docker images
run: |
mkdir /tmp/images
docker build --target community -t "ocelotsocialnetwork/neo4j-community:test" neo4j/
docker save "ocelotsocialnetwork/neo4j-community:test" > /tmp/images/neo4j.tar
docker build --target test -t "ocelotsocialnetwork/backend:test" backend/
docker save "ocelotsocialnetwork/backend:test" > /tmp/images/backend.tar
docker build --target test -t "ocelotsocialnetwork/webapp:test" webapp/
docker save "ocelotsocialnetwork/webapp:test" > /tmp/images/webapp.tar
- name: Install cypress requirements
run: |
wget --no-verbose -O /opt/cucumber-json-formatter "https://github.com/cucumber/json-formatter/releases/download/v19.0.0/cucumber-json-formatter-linux-386"
cd backend
yarn install
yarn build
cd ..
yarn install
- name: Cache docker images
id: cache
uses: actions/cache/save@v3.3.1
with:
path: |
/opt/cucumber-json-formatter
/home/runner/.cache/Cypress
/home/runner/work/Ocelot-Social/Ocelot-Social
/tmp/images/
key: ${{ github.run_id }}-e2e-preparation-cache
fullstack_tests:
name: Fullstack tests
if: success()
needs: docker_preparation
runs-on: ubuntu-latest
env:
jobs: 8
strategy:
matrix:
# run copies of the current job in parallel
job: [1, 2, 3, 4, 5, 6, 7, 8]
steps:
- name: Restore cache
uses: actions/cache/restore@v3.3.1
id: cache
with:
path: |
/opt/cucumber-json-formatter
/home/runner/.cache/Cypress
/home/runner/work/Ocelot-Social/Ocelot-Social
/tmp/images/
key: ${{ github.run_id }}-e2e-preparation-cache
fail-on-cache-miss: true
- name: Boot up test system | docker-compose
run: |
chmod +x /opt/cucumber-json-formatter
sudo ln -fs /opt/cucumber-json-formatter /usr/bin/cucumber-json-formatter
docker load < /tmp/images/neo4j.tar
docker load < /tmp/images/backend.tar
docker load < /tmp/images/webapp.tar
docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps webapp neo4j backend
sleep 90s
- name: Full stack tests | run tests
id: e2e-tests
run: yarn run cypress:run --spec $(cypress/parallel-features.sh ${{ matrix.job }} ${{ env.jobs }} )
- name: Full stack tests | if tests failed, compile html report
if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }}
run: |
cd cypress/
node create-cucumber-html-report.js
- name: Full stack tests | if tests failed, upload report
id: e2e-report
if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }}
uses: actions/upload-artifact@v3
with:
name: ocelot-e2e-test-report-pr${{ needs.docker_preparation.outputs.pr-number }}
path: /home/runner/work/Ocelot-Social/Ocelot-Social/cypress/reports/cucumber_html_report
cleanup:
name: Cleanup
needs: [docker_preparation, fullstack_tests]
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Delete cache
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh extension install actions/gh-actions-cache
KEY="${{ github.run_id }}-e2e-preparation-cache"
gh actions-cache delete $KEY -R Ocelot-Social-Community/Ocelot-Social --confirm

View File

@ -0,0 +1,115 @@
name: ocelot.social webapp test CI
on: push
jobs:
files-changed:
name: Detect File Changes - Webapp
runs-on: ubuntu-latest
outputs:
docker: ${{ steps.changes.outputs.docker }}
webapp: ${{ steps.changes.outputs.webapp }}
steps:
- uses: actions/checkout@v3.3.0
- name: Check for frontend file changes
uses: dorny/paths-filter@v2.11.1
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell
prepare:
name: Prepare
if: needs.files-changed.outputs.webapp == 'true'
needs: files-changed
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Check translation files
run: |
scripts/translations/sort.sh
scripts/translations/missing-keys.sh
build_test_webapp:
name: Docker Build Test - Webapp
if: needs.files-changed.outputs.docker == 'true' || needs.files-changed.outputs.webapp == 'true'
needs: [files-changed, prepare]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Webapp | Build 'test' image
run: |
docker build --target test -t "ocelotsocialnetwork/webapp:test" webapp/
docker save "ocelotsocialnetwork/webapp:test" > /tmp/webapp.tar
- name: Cache docker image
uses: actions/cache/save@v3.3.1
with:
path: /tmp/webapp.tar
key: ${{ github.run_id }}-webapp-cache
lint_webapp:
name: Lint Webapp
if: needs.files-changed.outputs.webapp == 'true'
needs: files-changed
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: webapp | Lint
run: cd webapp && yarn && yarn run lint
unit_test_webapp:
name: Unit Tests - Webapp
if: needs.files-changed.outputs.docker == 'true' || needs.files-changed.outputs.webapp == 'true'
needs: [files-changed, build_test_webapp]
runs-on: ubuntu-latest
permissions:
checks: write
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Restore webapp cache
uses: actions/cache/restore@v3.3.1
with:
path: /tmp/webapp.tar
key: ${{ github.run_id }}-webapp-cache
- name: Load Docker Image
run: docker load < /tmp/webapp.tar
- name: Copy env files
run: |
cp webapp/.env.template webapp/.env
cp backend/.env.template backend/.env
- name: backend | docker-compose
run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps webapp
- name: webapp | Unit tests incl. coverage check
run: docker-compose exec -T webapp yarn test
cleanup:
name: Cleanup
if: ${{ needs.files-changed.outputs.docker == 'true' || needs.files-changed.outputs.webapp == 'true' }}
needs: [files-changed, unit_test_webapp]
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Delete cache
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh extension install actions/gh-actions-cache
KEY="${{ github.run_id }}-webapp-cache"
gh actions-cache delete $KEY -R Ocelot-Social-Community/Ocelot-Social --confirm

21
gitbook-docs/.gitignore vendored Normal file
View File

@ -0,0 +1,21 @@
.env
.idea
*.iml
.DS_Store
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.yarn-integrity
.eslintcache
kubeconfig.yaml
node_modules/
cypress/videos
cypress/screenshots/
cypress.env.json
!.gitkeep
**/coverage
release/
*~

6
gitbook-docs/.gitmodules vendored Normal file
View File

@ -0,0 +1,6 @@
[submodule "styleguide"]
path = styleguide
url = https://github.com/Human-Connection/Nitro-Styleguide.git
[submodule "deployment/configurations/stage.ocelot.social"]
path = deployment/configurations/stage.ocelot.social
url = git@github.com:Ocelot-Social-Community/stage.ocelot.social.git

1
gitbook-docs/.nvmrc Normal file
View File

@ -0,0 +1 @@
v19.4.0

View File

@ -0,0 +1,7 @@
{
"bumpFiles": [
"package.json",
"backend/package.json",
"webapp/package.json"
]
}

7
gitbook-docs/.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,7 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"octref.vetur",
"gruntfuggly.todo-tree",
]
}

17193
gitbook-docs/CHANGELOG.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,565 @@
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Code of conduct · Ocelot.Social Developer Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content="busFaktor() e.V.">
<link rel="stylesheet" href="gitbook/style.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-hints/plugin-hints.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-tabs2/tabs.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-search-pro/search.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="LICENSE.html" />
<link rel="prev" href="cypress/features.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="./">
<a href="./">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="edit-this-documentation.html">
<a href="edit-this-documentation.html">
Edit this Documentation
</a>
</li>
<li class="chapter " data-level="1.3" data-path="neo4j/">
<a href="neo4j/">
Neo4J
</a>
</li>
<li class="chapter " data-level="1.4" data-path="backend/">
<a href="backend/">
Backend
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1" data-path="backend/graphql.html">
<a href="backend/graphql.html">
GraphQL
</a>
</li>
<li class="chapter " data-level="1.4.2" data-path="backend/neo4j-graphql-js.html">
<a href="backend/neo4j-graphql-js.html">
neo4j-graphql-js
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="webapp/">
<a href="webapp/">
Webapp
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="webapp/components.html">
<a href="webapp/components.html">
Components
</a>
</li>
<li class="chapter " data-level="1.5.2" data-path="webapp/html.html">
<a href="webapp/html.html">
HTML
</a>
</li>
<li class="chapter " data-level="1.5.3" data-path="webapp/scss.html">
<a href="webapp/scss.html">
SCSS
</a>
</li>
<li class="chapter " data-level="1.5.4" data-path="webapp/vue.html">
<a href="webapp/vue.html">
Vue
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="testing.html">
<a href="testing.html">
Testing Guide
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="cypress/">
<a href="cypress/">
End-to-end tests
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="webapp/testing.html">
<a href="webapp/testing.html">
Frontend tests
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="backend/testing.html">
<a href="backend/testing.html">
Backend tests
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.7" data-path="DOCKER_MORE_CLOSELY.html">
<a href="DOCKER_MORE_CLOSELY.html">
Docker More Closely
</a>
</li>
<li class="chapter " data-level="1.8" >
<a target="_blank" href="https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md">
Deployment
</a>
</li>
<li class="chapter " data-level="1.9" data-path="CONTRIBUTING.html">
<a href="CONTRIBUTING.html">
Contributing
</a>
</li>
<li class="chapter " data-level="1.10" data-path="cypress/features.html">
<a href="cypress/features.html">
Feature Specification
</a>
</li>
<li class="chapter active" data-level="1.11" data-path="CODE_OF_CONDUCT.html">
<a href="CODE_OF_CONDUCT.html">
Code of conduct
</a>
</li>
<li class="chapter " data-level="1.12" data-path="LICENSE.html">
<a href="LICENSE.html">
License
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="." >Code of conduct</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="contributor-covenant-code-of-conduct">Contributor Covenant Code of Conduct</h1>
<h2 id="our-pledge">Our Pledge</h2>
<p>In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.</p>
<h2 id="our-standards">Our Standards</h2>
<p>Examples of behavior that contributes to creating a positive environment include:</p>
<ul>
<li>Using welcoming and inclusive language</li>
<li>Being respectful of differing viewpoints and experiences</li>
<li>Gracefully accepting constructive criticism</li>
<li>Focusing on what is best for the community</li>
<li>Showing empathy towards other community members</li>
</ul>
<p>Examples of unacceptable behavior by participants include:</p>
<ul>
<li>The use of sexualized language or imagery and unwelcome sexual attention or advances</li>
<li>Trolling, insulting/derogatory comments, and personal or political attacks</li>
<li>Public or private harassment</li>
<li>Publishing others&apos; private information, such as a physical or electronic address, without explicit permission</li>
<li>Other conduct which could reasonably be considered inappropriate in a professional setting</li>
</ul>
<h2 id="our-responsibilities">Our Responsibilities</h2>
<p>Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.</p>
<p>Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.</p>
<h2 id="scope">Scope</h2>
<p>This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.</p>
<h2 id="enforcement">Enforcement</h2>
<p>Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at devops@ocelot.social. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.</p>
<p>Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project&apos;s leadership.</p>
<h2 id="attribution">Attribution</h2>
<p>This Code of Conduct is adapted from the <a href="http://contributor-covenant.org" target="_blank">Contributor Covenant</a>, version 1.4, available at <a href="http://contributor-covenant.org/version/1/4/" target="_blank">http://contributor-covenant.org/version/1/4</a></p>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="cypress/features.html" class="navigation navigation-prev " aria-label="Previous page: Feature Specification">
<i class="fa fa-angle-left"></i>
</a>
<a href="LICENSE.html" class="navigation navigation-next " aria-label="Next page: License">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Code of conduct","level":"1.11","depth":1,"next":{"title":"License","level":"1.12","depth":1,"path":"LICENSE.md","ref":"LICENSE.md","articles":[]},"previous":{"title":"Feature Specification","level":"1.10","depth":1,"path":"cypress/features.md","ref":"cypress/features.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-lunr","-search","-sharing","hints","tabs2","theme-simple@git+https://github.com/plugins-zander/gitbook-plugin-theme-simple.git","search-pro@git+https://github.com/plugins-zander/gitbook-plugin-search-pro.git","splitter@git+https://github.com/plugins-zander/gitbook-plugin-splitter.git","edit-link@git+https://github.com/plugins-zander/gitbook-plugin-edit-link.git","gtag@git+https://github.com/plugins-zander/gitbook-plugin-gtag.git","chapter-fold@git+https://github.com/plugins-zander/gitbook-plugin-chapter-fold.git","copy-code-button@git+https://github.com/plugins-zander/gitbook-plugin-copy-code-button.git"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"chapter-fold":{},"splitter":{},"search-pro":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"sitemap-general":{"prefix":"https://zlogs.net/gitbook-action/"},"fontsettings":{"theme":"white","family":"sans","size":2},"gtag":{"token":""},"tabs2":{},"highlight":{},"theme-simple":{"showLevel":false,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"copy-code-button":{},"edit-link":{"label":"EDIT","base":"https://github.com/Ocelot-Social-Community/Ocelot-Social/edit/master/"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"busFaktor() e.V.","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Ocelot.Social Developer Documentation","gitbook":"3.2.3","description":"Developer Documentation by Gitbook-Action"},"file":{"path":"CODE_OF_CONDUCT.md","mtime":"2020-12-08T08:22:52.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2023-08-15T14:47:24.081Z"},"basePath":".","book":{"language":""}});
});
</script>
</div>
<script src="gitbook/gitbook.js"></script>
<script src="gitbook/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="gitbook/gitbook-plugin-tabs2/tabs.js"></script>
<script src="gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
<script src="gitbook/gitbook-plugin-search-pro/search.js"></script>
<script src="gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="gitbook/gitbook-plugin-edit-link/plugin.js"></script>
<script src="gitbook/gitbook-plugin-gtag/plugin.js"></script>
<script src="gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
<script src="gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>

View File

@ -0,0 +1,709 @@
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Contributing · Ocelot.Social Developer Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content="busFaktor() e.V.">
<link rel="stylesheet" href="gitbook/style.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-hints/plugin-hints.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-tabs2/tabs.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-search-pro/search.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="cypress/features.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="./">
<a href="./">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="edit-this-documentation.html">
<a href="edit-this-documentation.html">
Edit this Documentation
</a>
</li>
<li class="chapter " data-level="1.3" data-path="neo4j/">
<a href="neo4j/">
Neo4J
</a>
</li>
<li class="chapter " data-level="1.4" data-path="backend/">
<a href="backend/">
Backend
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1" data-path="backend/graphql.html">
<a href="backend/graphql.html">
GraphQL
</a>
</li>
<li class="chapter " data-level="1.4.2" data-path="backend/neo4j-graphql-js.html">
<a href="backend/neo4j-graphql-js.html">
neo4j-graphql-js
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="webapp/">
<a href="webapp/">
Webapp
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="webapp/components.html">
<a href="webapp/components.html">
Components
</a>
</li>
<li class="chapter " data-level="1.5.2" data-path="webapp/html.html">
<a href="webapp/html.html">
HTML
</a>
</li>
<li class="chapter " data-level="1.5.3" data-path="webapp/scss.html">
<a href="webapp/scss.html">
SCSS
</a>
</li>
<li class="chapter " data-level="1.5.4" data-path="webapp/vue.html">
<a href="webapp/vue.html">
Vue
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="testing.html">
<a href="testing.html">
Testing Guide
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="cypress/">
<a href="cypress/">
End-to-end tests
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="webapp/testing.html">
<a href="webapp/testing.html">
Frontend tests
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="backend/testing.html">
<a href="backend/testing.html">
Backend tests
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.7" data-path="DOCKER_MORE_CLOSELY.html">
<a href="DOCKER_MORE_CLOSELY.html">
Docker More Closely
</a>
</li>
<li class="chapter " data-level="1.8" >
<a target="_blank" href="https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md">
Deployment
</a>
</li>
<li class="chapter active" data-level="1.9" data-path="CONTRIBUTING.html">
<a href="CONTRIBUTING.html">
Contributing
</a>
</li>
<li class="chapter " data-level="1.10" data-path="cypress/features.html">
<a href="cypress/features.html">
Feature Specification
</a>
</li>
<li class="chapter " data-level="1.11" data-path="CODE_OF_CONDUCT.html">
<a href="CODE_OF_CONDUCT.html">
Code of conduct
</a>
</li>
<li class="chapter " data-level="1.12" data-path="LICENSE.html">
<a href="LICENSE.html">
License
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="." >Contributing</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="contributing">CONTRIBUTING</h1>
<p>Thank you so much for thinking of contributing to the <a href="https://ocelot.social" target="_blank">ocelot.social</a> project! It&apos;s awesome you&apos;re here, we really appreciate it. :-)</p>
<h2 id="getting-set-up">Getting Set Up</h2>
<p>Instructions for how to install all the necessary software and some code guidelines can be found in our main <a href="./">Readme</a> or in our <a href="SUMMARY.md">documentation</a>.</p>
<p>To get you started we recommend that you join forces with a regular contributor. Please join <a href="https://discord.gg/AJSX9DCSUA" target="_blank">our Discord instance</a> to chat with developers or just get in touch directly on an issue on either <a href="https://github.com/Ocelot-Social-Community/Ocelot-Social/issues" target="_blank">Github</a> or <a href="https://app.zenhub.com/workspaces/ocelotsocial-5fb21ff922cb410015dd6535/board?filterLogic=any&amp;repos=301151089" target="_blank">Zenhub</a>:</p>
<p>We also can have pair programming sessions for you! We feel this is often the best way to get to know both the project and the team. Most developers are also available for spontaneous sessions.</p>
<h2 id="development-flow">Development Flow</h2>
<p>We operate in two week sprints that are planned, estimated and prioritised on <a href="https://app.zenhub.com/workspaces/ocelotsocial-5fb21ff922cb410015dd6535/board?filterLogic=any&amp;repos=301151089" target="_blank">Zenhub</a>. All issues are also linked to and synced with <a href="https://github.com/Ocelot-Social-Community/Ocelot-Social/issues" target="_blank">Github</a>. Look for the <code>good first issue</code> label if you&apos;re not sure where to start!</p>
<p>We try to discuss all questions directly related to a feature or bug in the respective issue, in order to preserve it for the future and for other developers. We use <a href="https://discord.gg/AJSX9DCSUA" target="_blank">Discord</a> for real-time communication.</p>
<p>This is how we solve bugs and implement features, step by step:</p>
<ol>
<li>We find an issue we want to work on, usually during the sprint planning but as an open source contributor this can happen at any time.</li>
<li>We communicate with the team to see if the issue is still available. (When you comment on an issue but don&apos;t get an answer there within 1-2 days try to mention @Ocelot-Social-Community/core-team to make sure we check in.)</li>
<li>We make sure we understand the issue in detail &#x2013; what problem is it solving and how should it be implemented?</li>
<li>We assign ourselves to the issue and move it to <code>In Progress</code> on <a href="https://app.zenhub.com/workspaces/ocelotsocial-5fb21ff922cb410015dd6535/board?filterLogic=any&amp;repos=301151089" target="_blank">Zenhub</a>.</li>
<li>We start working on it in a <code>new branch</code> and open a <code>pull request</code> prefixed with <code>[WIP]</code> (work in progress) to which we regularly push our changes.</li>
<li>When questions come up we clarify them with the team (directly in the issue on Github).</li>
<li>When we are happy with our work and our PR is passing all tests we remove the <code>[WIP]</code> from the PR description and ask for reviews (if you&apos;re not sure who to ask there is @Ocelot-Social-Community/core-team which pings all core developers).</li>
<li>We then incorporate the suggestions from the reviews into our work and once it has been approved it can be merged into master!</li>
</ol>
<p>Every pull request needs to:</p>
<ul>
<li>fix an issue (if there is something you want to work on but there is no issue for it, create one first and discuss it with the team)</li>
<li>include tests for the code that is added or changed</li>
<li>pass all tests (linter, backend, webapp, code coverage, end-to-end)</li>
<li>be approved by at least 1 developer who is not the owner of the PR (when more than 10 files were changed it needs 2 approvals)</li>
</ul>
<h2 id="contribution-flow-for-open-source-contributors">Contribution Flow For Open Source Contributors</h2>
<p>See <a href="./#contributing">contributing in main README.md</a></p>
<h2 id="the-team">The Team</h2>
<p>There are many volunteers all around the world helping us build this network and without their contributions we wouldn&apos;t be where we are today. Big thank you to all of you!</p>
<p>You can talk to our core team on <a href="https://discord.gg/AJSX9DCSUA" target="_blank">Discord</a>. And on Github you will mostly run into our core developers:</p>
<ul>
<li>Ulf (@ulfgebhardt)</li>
<li>Moriz (@Mogge)</li>
<li>Wolle (@Tirokk)</li>
<li>Alex (@ogerly)</li>
</ul>
<!-- * Robert (@roschaefer)
* Matt (@mattwr18)
* Alina (@alina-beck)
* Martin (@datenbrei), our head of IT
* and sometimes Dennis (@DennisHack), the founder of Human Connection -->
<h2 id="meetings-and-pair-programming-sessions">Meetings and Pair Programming Sessions</h2>
<p>Times below refer to <strong>German Time</strong> &#x2013; that&apos;s CET (GMT+1) in winter and CEST (GMT+2) in summer &#x2013; because most ocelot.social Community core team members are living in Germany.</p>
<p>Daily standup</p>
<ul>
<li>every Monday&#x2013;Thursday 11:30 am (german time see above &#x1F446;&#x1F3FC;)</li>
<li>in our <a href="https://discord.gg/AJSX9DCSUA" target="_blank">Discord</a> <code>Office Cube</code></li>
<li>all contributors welcome!</li>
<li>everybody shares what they are working on and asks for help if they are blocked</li>
</ul>
<!--
Regular pair programming sessions
* every Monday, Wednesday and Thursday 15:00
* the link will be posted in the [Discord chat](https://discord.gg/AJSX9DCSUA) and on the [Agile Ventures website](https://www.agileventures.org/events?utf8=%E2%9C%93&project_id=220&commit=Filter+by+Project)
* all contributors welcome!
* we team up and work on an issue together (often using Visual Studio live sharing sessions)
Open-Source Community Meeting
* bi-weekly on Mondays 13:00 (when there is no sprint retrospective)
* the link will be posted in the [Discord chat](https://discord.gg/AJSX9DCSUA) and on the [Agile Ventures website](https://www.agileventures.org/events?utf8=%E2%9C%93&project_id=220&commit=Filter+by+Project)
* all contributors welcome!
Meet the team
* every Monday 21:00 (at the moment only in German)
* details here https://human-connection.org/veranstaltungen/
* via this [zoom link](https://zoom.us/j/936943532)
* all contributors and users of the network welcome!
* users of the network chat with the Human Connection team and discuss current questions and issues
Sprint planning
* bi-weekly on Tuesday 13:00
* via this [zoom link](https://zoom.us/j/7743582385)
* all contributors welcome (recommended for those who want to work on an issue in this sprint)
* we select and prioritise the issues we will work on in the following two weeks
Sprint retrospective
* bi-weekly on Monday 13:00
* via this [zoom link](https://zoom.us/j/7743582385)
* all contributors welcome (most interesting for those who participated in the sprint)
* we review the past sprint and talk about what went well and what we could improve
-->
<h2 id="philosophy">Philosophy</h2>
<p>We practice <a href="http://www.extremeprogramming.org/rules/collective.html" target="_blank">collective code ownership</a> rather than strong code ownership, which means that:</p>
<ul>
<li>developers can make contributions to other people&apos;s PRs (after checking in with them)</li>
<li>we avoid blocking because someone else isn&apos;t working, so we sometimes take over PRs from other developers</li>
<li>everyone should always push their code to branches so others can see it</li>
</ul>
<p>We believe in open source contributions as a learning experience &#x2013; everyone is welcome to join our team of volunteers and to contribute to the project, no matter their background or level of experience. To support your learning experience we founded the charity association <a href="https://www.busfaktor.org/en" target="_blank">busFaktor() e.V.</a>.</p>
<p>We use pair programming sessions as a tool for knowledge sharing. We can learn a lot from each other and only by sharing what we know and overcoming challenges together can we grow as a team and truly own this project collectively.</p>
<p>As a volunteer you have no commitment except your own self development and your awesomeness by contributing to this free and open-source software project. Cheers to you!</p>
<!--
## Open-Source Bounties
There are so many good reasons to contribute to ocelot.social
* You learn state-of-the-art technologies
* You build your portfolio
* You contribute to a good cause
Now there is one more good reason: You can receive a small fincancial
compensation for your contribution! :tada:
### How it works
Before you can benefit from the Open-Source bounty program you **must get one
pull request approved and merged for free**. You can choose something really
quick and easy. What's important is starting a working relationship with the
team, learning the workflow, and understanding this contribution guide. You can
filter issues by 'good first issue', to get an idea where to start. Please join
our our [Discord community chat](https://discord.gg/AJSX9DCSUA), too.
You can filter Github issues with label [bounty](https://github.com/Ocelot-Social-Community/Ocelot-Social/issues?q=is%3Aopen+is%3Aissue+label%3Abounty). These issues should have a second label `€<amount>`
which indicate their respective financial compensation in Euros.
You can bill us after your pull request got approved and merged into `master`.
Payment methods are up to you: Bank transfer or PayPal is fine for us. Just send
us your invoice as .pdf file attached to an E-Mail once you are done.
Our Open-Source bounty program is a work-in-progress. Based on our future
experience we will make changes and improvements. So keep an eye on this
contribution guide.
-->
<h2 id="programming">Programming</h2>
<h3 id="localization">Localization</h3>
<h4 id="quotation-marks">Quotation Marks</h4>
<p>The following characters are different from the programming quotation mark:</p>
<p><code>&quot;</code> or <code>\&quot;</code></p>
<p>Please copy and paste the following quotes for the languages:</p>
<ul>
<li>de: &#x201E;Dies ist ein Beispielsatz.&#x201C;</li>
<li>en: &#x201C;This is a sample sentence.&#x201D;<ul>
<li>See <a href="https://grammar.collinsdictionary.com/easy-learning/when-do-you-use-quotation-marks-or-in-english" target="_blank">https://grammar.collinsdictionary.com/easy-learning/when-do-you-use-quotation-marks-or-in-english</a></li>
</ul>
</li>
</ul>
<h2 id="docker-&#x2013;-more-closely">Docker &#x2013; More Closely</h2>
<h3 id="apple-m1-platform">Apple M1 Platform</h3>
<p><strong>*Attention:</strong> For using Docker commands in Apple M1 environments!*</p>
<h4 id="environment-variable-for-apple-m1-platform">Environment Variable For Apple M1 Platform</h4>
<p>If you encounter trouble building the docker containers on an Apple M1 chip you can try to explicitly define the target platform docker builds and pulls images for:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># set env variable for your shell</span>
$ <span class="hljs-built_in">export</span> DOCKER_DEFAULT_PLATFORM=linux/amd64
</code></pre>
<p>Or alternatively use a <code>YAML</code> docker compose overwrite file with <code>platform: linux/amd64</code>.</p>
<h3 id="analyzing-docker-builds">Analyzing Docker Builds</h3>
<p>To analyze a Docker build, there is a wonderful tool called <a href="https://github.com/wagoodman/dive" target="_blank">dive</a>. Please sponsor if you&apos;re using it!</p>
<p>The <code>dive build</code> command is exactly the right one to fulfill what we are looking for.
We can use it just like the <code>docker build</code> command and get an analysis afterwards.</p>
<p>So, in our main folder, we use it in the following way:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># in main folder</span>
$ dive build --target &lt;layer-name&gt; -t <span class="hljs-string">&quot;ocelotsocialnetwork/&lt;app-name&gt;:local-&lt;layer-name&gt;&quot;</span> --build-arg BBUILD_DATE=<span class="hljs-string">&quot;&lt;build-date&gt;&quot;</span> --build-arg BBUILD_VERSION=<span class="hljs-string">&quot;&lt;build-version&gt;&quot;</span> --build-arg BBUILD_COMMIT=<span class="hljs-string">&quot;&lt;build-commit&gt;&quot;</span> &lt;app-folder-name-or-dot&gt;/
</code></pre>
<p>The build arguments are optional.</p>
<p>For the specific applications, we use them as follows.</p>
<h4 id="backend">Backend</h4>
<h5 id="production-for-backend">Production For Backend</h5>
<pre><code class="lang-bash"><span class="hljs-comment"># in main folder</span>
$ dive build --target production -t <span class="hljs-string">&quot;ocelotsocialnetwork/backend:local-production&quot;</span> backend/
</code></pre>
<h5 id="development-for-backend">Development For Backend</h5>
<pre><code class="lang-bash"><span class="hljs-comment"># in main folder</span>
$ dive build --target development -t <span class="hljs-string">&quot;ocelotsocialnetwork/backend:local-development&quot;</span> backend/
</code></pre>
<h4 id="webapp">Webapp</h4>
<h5 id="production-for-webapp">Production For Webapp</h5>
<pre><code class="lang-bash"><span class="hljs-comment"># in main folder</span>
$ dive build --target production -t <span class="hljs-string">&quot;ocelotsocialnetwork/webapp:local-production&quot;</span> webapp/
</code></pre>
<h5 id="development-for-webapp">Development For Webapp</h5>
<pre><code class="lang-bash"><span class="hljs-comment"># in main folder</span>
$ dive build --target development -t <span class="hljs-string">&quot;ocelotsocialnetwork/webapp:local-development&quot;</span> webapp/
</code></pre>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="cypress/features.html" class="navigation navigation-next navigation-unique" aria-label="Next page: Feature Specification">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Contributing","level":"1.9","depth":1,"next":{"title":"Feature Specification","level":"1.10","depth":1,"path":"cypress/features.md","ref":"cypress/features.md","articles":[]},"previous":{"title":"Deployment","level":"1.8","depth":1,"url":"https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md","ref":"https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-lunr","-search","-sharing","hints","tabs2","theme-simple@git+https://github.com/plugins-zander/gitbook-plugin-theme-simple.git","search-pro@git+https://github.com/plugins-zander/gitbook-plugin-search-pro.git","splitter@git+https://github.com/plugins-zander/gitbook-plugin-splitter.git","edit-link@git+https://github.com/plugins-zander/gitbook-plugin-edit-link.git","gtag@git+https://github.com/plugins-zander/gitbook-plugin-gtag.git","chapter-fold@git+https://github.com/plugins-zander/gitbook-plugin-chapter-fold.git","copy-code-button@git+https://github.com/plugins-zander/gitbook-plugin-copy-code-button.git"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"chapter-fold":{},"splitter":{},"search-pro":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"sitemap-general":{"prefix":"https://zlogs.net/gitbook-action/"},"fontsettings":{"theme":"white","family":"sans","size":2},"gtag":{"token":""},"tabs2":{},"highlight":{},"theme-simple":{"showLevel":false,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"copy-code-button":{},"edit-link":{"label":"EDIT","base":"https://github.com/Ocelot-Social-Community/Ocelot-Social/edit/master/"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"busFaktor() e.V.","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Ocelot.Social Developer Documentation","gitbook":"3.2.3","description":"Developer Documentation by Gitbook-Action"},"file":{"path":"CONTRIBUTING.md","mtime":"2023-03-06T17:34:27.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2023-08-15T14:47:24.081Z"},"basePath":".","book":{"language":""}});
});
</script>
</div>
<script src="gitbook/gitbook.js"></script>
<script src="gitbook/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="gitbook/gitbook-plugin-tabs2/tabs.js"></script>
<script src="gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
<script src="gitbook/gitbook-plugin-search-pro/search.js"></script>
<script src="gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="gitbook/gitbook-plugin-edit-link/plugin.js"></script>
<script src="gitbook/gitbook-plugin-gtag/plugin.js"></script>
<script src="gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
<script src="gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>

View File

@ -0,0 +1,530 @@
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Docker More Closely · Ocelot.Social Developer Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content="busFaktor() e.V.">
<link rel="stylesheet" href="gitbook/style.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-hints/plugin-hints.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-tabs2/tabs.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-search-pro/search.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
<link rel="prev" href="backend/testing.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="./">
<a href="./">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="edit-this-documentation.html">
<a href="edit-this-documentation.html">
Edit this Documentation
</a>
</li>
<li class="chapter " data-level="1.3" data-path="neo4j/">
<a href="neo4j/">
Neo4J
</a>
</li>
<li class="chapter " data-level="1.4" data-path="backend/">
<a href="backend/">
Backend
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1" data-path="backend/graphql.html">
<a href="backend/graphql.html">
GraphQL
</a>
</li>
<li class="chapter " data-level="1.4.2" data-path="backend/neo4j-graphql-js.html">
<a href="backend/neo4j-graphql-js.html">
neo4j-graphql-js
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="webapp/">
<a href="webapp/">
Webapp
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="webapp/components.html">
<a href="webapp/components.html">
Components
</a>
</li>
<li class="chapter " data-level="1.5.2" data-path="webapp/html.html">
<a href="webapp/html.html">
HTML
</a>
</li>
<li class="chapter " data-level="1.5.3" data-path="webapp/scss.html">
<a href="webapp/scss.html">
SCSS
</a>
</li>
<li class="chapter " data-level="1.5.4" data-path="webapp/vue.html">
<a href="webapp/vue.html">
Vue
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="testing.html">
<a href="testing.html">
Testing Guide
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="cypress/">
<a href="cypress/">
End-to-end tests
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="webapp/testing.html">
<a href="webapp/testing.html">
Frontend tests
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="backend/testing.html">
<a href="backend/testing.html">
Backend tests
</a>
</li>
</ul>
</li>
<li class="chapter active" data-level="1.7" data-path="DOCKER_MORE_CLOSELY.html">
<a href="DOCKER_MORE_CLOSELY.html">
Docker More Closely
</a>
</li>
<li class="chapter " data-level="1.8" >
<a target="_blank" href="https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md">
Deployment
</a>
</li>
<li class="chapter " data-level="1.9" data-path="CONTRIBUTING.html">
<a href="CONTRIBUTING.html">
Contributing
</a>
</li>
<li class="chapter " data-level="1.10" data-path="cypress/features.html">
<a href="cypress/features.html">
Feature Specification
</a>
</li>
<li class="chapter " data-level="1.11" data-path="CODE_OF_CONDUCT.html">
<a href="CODE_OF_CONDUCT.html">
Code of conduct
</a>
</li>
<li class="chapter " data-level="1.12" data-path="LICENSE.html">
<a href="LICENSE.html">
License
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="." >Docker More Closely</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="docker-more-closely">Docker More Closely</h1>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="backend/testing.html" class="navigation navigation-prev navigation-unique" aria-label="Previous page: Backend tests">
<i class="fa fa-angle-left"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Docker More Closely","level":"1.7","depth":1,"next":{"title":"Deployment","level":"1.8","depth":1,"url":"https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md","ref":"https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md","articles":[]},"previous":{"title":"Backend tests","level":"1.6.3","depth":2,"path":"backend/testing.md","ref":"backend/testing.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-lunr","-search","-sharing","hints","tabs2","theme-simple@git+https://github.com/plugins-zander/gitbook-plugin-theme-simple.git","search-pro@git+https://github.com/plugins-zander/gitbook-plugin-search-pro.git","splitter@git+https://github.com/plugins-zander/gitbook-plugin-splitter.git","edit-link@git+https://github.com/plugins-zander/gitbook-plugin-edit-link.git","gtag@git+https://github.com/plugins-zander/gitbook-plugin-gtag.git","chapter-fold@git+https://github.com/plugins-zander/gitbook-plugin-chapter-fold.git","copy-code-button@git+https://github.com/plugins-zander/gitbook-plugin-copy-code-button.git"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"chapter-fold":{},"splitter":{},"search-pro":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"sitemap-general":{"prefix":"https://zlogs.net/gitbook-action/"},"fontsettings":{"theme":"white","family":"sans","size":2},"gtag":{"token":""},"tabs2":{},"highlight":{},"theme-simple":{"showLevel":false,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"copy-code-button":{},"edit-link":{"label":"EDIT","base":"https://github.com/Ocelot-Social-Community/Ocelot-Social/edit/master/"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"busFaktor() e.V.","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Ocelot.Social Developer Documentation","gitbook":"3.2.3","description":"Developer Documentation by Gitbook-Action"},"file":{"path":"DOCKER_MORE_CLOSELY.md","mtime":"2023-08-15T14:46:50.783Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2023-08-15T14:47:24.081Z"},"basePath":".","book":{"language":""}});
});
</script>
</div>
<script src="gitbook/gitbook.js"></script>
<script src="gitbook/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="gitbook/gitbook-plugin-tabs2/tabs.js"></script>
<script src="gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
<script src="gitbook/gitbook-plugin-search-pro/search.js"></script>
<script src="gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="gitbook/gitbook-plugin-edit-link/plugin.js"></script>
<script src="gitbook/gitbook-plugin-gtag/plugin.js"></script>
<script src="gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
<script src="gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>

535
gitbook-docs/LICENSE.html Normal file
View File

@ -0,0 +1,535 @@
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>License · Ocelot.Social Developer Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content="busFaktor() e.V.">
<link rel="stylesheet" href="gitbook/style.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-hints/plugin-hints.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-tabs2/tabs.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-search-pro/search.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
<link rel="prev" href="CODE_OF_CONDUCT.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="./">
<a href="./">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="edit-this-documentation.html">
<a href="edit-this-documentation.html">
Edit this Documentation
</a>
</li>
<li class="chapter " data-level="1.3" data-path="neo4j/">
<a href="neo4j/">
Neo4J
</a>
</li>
<li class="chapter " data-level="1.4" data-path="backend/">
<a href="backend/">
Backend
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1" data-path="backend/graphql.html">
<a href="backend/graphql.html">
GraphQL
</a>
</li>
<li class="chapter " data-level="1.4.2" data-path="backend/neo4j-graphql-js.html">
<a href="backend/neo4j-graphql-js.html">
neo4j-graphql-js
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="webapp/">
<a href="webapp/">
Webapp
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="webapp/components.html">
<a href="webapp/components.html">
Components
</a>
</li>
<li class="chapter " data-level="1.5.2" data-path="webapp/html.html">
<a href="webapp/html.html">
HTML
</a>
</li>
<li class="chapter " data-level="1.5.3" data-path="webapp/scss.html">
<a href="webapp/scss.html">
SCSS
</a>
</li>
<li class="chapter " data-level="1.5.4" data-path="webapp/vue.html">
<a href="webapp/vue.html">
Vue
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="testing.html">
<a href="testing.html">
Testing Guide
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="cypress/">
<a href="cypress/">
End-to-end tests
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="webapp/testing.html">
<a href="webapp/testing.html">
Frontend tests
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="backend/testing.html">
<a href="backend/testing.html">
Backend tests
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.7" data-path="DOCKER_MORE_CLOSELY.html">
<a href="DOCKER_MORE_CLOSELY.html">
Docker More Closely
</a>
</li>
<li class="chapter " data-level="1.8" >
<a target="_blank" href="https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md">
Deployment
</a>
</li>
<li class="chapter " data-level="1.9" data-path="CONTRIBUTING.html">
<a href="CONTRIBUTING.html">
Contributing
</a>
</li>
<li class="chapter " data-level="1.10" data-path="cypress/features.html">
<a href="cypress/features.html">
Feature Specification
</a>
</li>
<li class="chapter " data-level="1.11" data-path="CODE_OF_CONDUCT.html">
<a href="CODE_OF_CONDUCT.html">
Code of conduct
</a>
</li>
<li class="chapter active" data-level="1.12" data-path="LICENSE.html">
<a href="LICENSE.html">
License
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="." >License</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="license">LICENSE</h1>
<p>MIT License</p>
<p>Copyright (c) 2018-2021 <a href="https://github.com/Ocelot-Social-Community" target="_blank">Ocelot.Social Community</a></p>
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &quot;Software&quot;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
<p>THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="CODE_OF_CONDUCT.html" class="navigation navigation-prev navigation-unique" aria-label="Previous page: Code of conduct">
<i class="fa fa-angle-left"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"License","level":"1.12","depth":1,"previous":{"title":"Code of conduct","level":"1.11","depth":1,"path":"CODE_OF_CONDUCT.md","ref":"CODE_OF_CONDUCT.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-lunr","-search","-sharing","hints","tabs2","theme-simple@git+https://github.com/plugins-zander/gitbook-plugin-theme-simple.git","search-pro@git+https://github.com/plugins-zander/gitbook-plugin-search-pro.git","splitter@git+https://github.com/plugins-zander/gitbook-plugin-splitter.git","edit-link@git+https://github.com/plugins-zander/gitbook-plugin-edit-link.git","gtag@git+https://github.com/plugins-zander/gitbook-plugin-gtag.git","chapter-fold@git+https://github.com/plugins-zander/gitbook-plugin-chapter-fold.git","copy-code-button@git+https://github.com/plugins-zander/gitbook-plugin-copy-code-button.git"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"chapter-fold":{},"splitter":{},"search-pro":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"sitemap-general":{"prefix":"https://zlogs.net/gitbook-action/"},"fontsettings":{"theme":"white","family":"sans","size":2},"gtag":{"token":""},"tabs2":{},"highlight":{},"theme-simple":{"showLevel":false,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"copy-code-button":{},"edit-link":{"label":"EDIT","base":"https://github.com/Ocelot-Social-Community/Ocelot-Social/edit/master/"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"busFaktor() e.V.","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Ocelot.Social Developer Documentation","gitbook":"3.2.3","description":"Developer Documentation by Gitbook-Action"},"file":{"path":"LICENSE.md","mtime":"2021-10-20T07:15:31.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2023-08-15T14:47:24.081Z"},"basePath":".","book":{"language":""}});
});
</script>
</div>
<script src="gitbook/gitbook.js"></script>
<script src="gitbook/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="gitbook/gitbook-plugin-tabs2/tabs.js"></script>
<script src="gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
<script src="gitbook/gitbook-plugin-search-pro/search.js"></script>
<script src="gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="gitbook/gitbook-plugin-edit-link/plugin.js"></script>
<script src="gitbook/gitbook-plugin-gtag/plugin.js"></script>
<script src="gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
<script src="gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>

View File

@ -0,0 +1,12 @@
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "10"
}
}
]
]
}

View File

@ -0,0 +1,2 @@
coverage:
range: "60...100"

View File

@ -0,0 +1,21 @@
.vscode/
.nyc_output/
.github/
.travis.yml
.graphqlconfig
.env
Dockerfile
docker-compose*.yml
./*.png
./*.log
node_modules/
build/
maintenance-worker/
neo4j/
public/uploads/*
!.gitkeep

View File

@ -0,0 +1,34 @@
DEBUG=true
NEO4J_URI=bolt://localhost:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=letmein
GRAPHQL_URI=http://localhost:4000
CLIENT_URI=http://localhost:3000
SMTP_HOST=
SMTP_PORT=
SMTP_IGNORE_TLS=true
SMTP_USERNAME=
SMTP_PASSWORD=
JWT_SECRET="b/&&7b78BF&fv/Vd"
JWT_EXPIRES="2y"
MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g"
PRIVATE_KEY_PASSPHRASE="a7dsf78sadg87ad87sfagsadg78"
SENTRY_DSN_BACKEND=
COMMIT=
PUBLIC_REGISTRATION=false
INVITE_REGISTRATION=true
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_ENDPOINT=
AWS_REGION=
AWS_BUCKET=
EMAIL_DEFAULT_SENDER="devops@ocelot.social"
EMAIL_SUPPORT="devops@ocelot.social"
CATEGORIES_ACTIVE=false

View File

@ -0,0 +1,219 @@
module.exports = {
root: true,
env: {
// es6: true,
node: true,
},
/* parserOptions: {
parser: 'babel-eslint'
},*/
parser: '@typescript-eslint/parser',
plugins: ['prettier', '@typescript-eslint' /*, 'import', 'n', 'promise'*/],
extends: [
'standard',
// 'eslint:recommended',
'plugin:prettier/recommended',
// 'plugin:import/recommended',
// 'plugin:import/typescript',
// 'plugin:security/recommended',
// 'plugin:@eslint-community/eslint-comments/recommended',
],
settings: {
'import/parsers': {
'@typescript-eslint/parser': ['.ts', '.tsx'],
},
'import/resolver': {
typescript: {
project: ['./tsconfig.json'],
},
node: true,
},
},
/* rules: {
//'indent': [ 'error', 2 ],
//'quotes': [ "error", "single"],
// 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
> 'no-console': ['error'],
> 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
> 'prettier/prettier': ['error'],
}, */
rules: {
'no-console': 'error',
camelcase: 'error',
'no-debugger': 'error',
'prettier/prettier': [
'error',
{
htmlWhitespaceSensitivity: 'ignore',
},
],
// import
// 'import/export': 'error',
// 'import/no-deprecated': 'error',
// 'import/no-empty-named-blocks': 'error',
// 'import/no-extraneous-dependencies': 'error',
// 'import/no-mutable-exports': 'error',
// 'import/no-unused-modules': 'error',
// 'import/no-named-as-default': 'error',
// 'import/no-named-as-default-member': 'error',
// 'import/no-amd': 'error',
// 'import/no-commonjs': 'error',
// 'import/no-import-module-exports': 'error',
// 'import/no-nodejs-modules': 'off',
// 'import/unambiguous': 'error',
// 'import/default': 'error',
// 'import/named': 'error',
// 'import/namespace': 'error',
// 'import/no-absolute-path': 'error',
// 'import/no-cycle': 'error',
// 'import/no-dynamic-require': 'error',
// 'import/no-internal-modules': 'off',
// 'import/no-relative-packages': 'error',
// 'import/no-relative-parent-imports': ['error', { ignore: ['@/*'] }],
// 'import/no-self-import': 'error',
// 'import/no-unresolved': 'error',
// 'import/no-useless-path-segments': 'error',
// 'import/no-webpack-loader-syntax': 'error',
// 'import/consistent-type-specifier-style': 'error',
// 'import/exports-last': 'off',
// 'import/extensions': 'error',
// 'import/first': 'error',
// 'import/group-exports': 'off',
// 'import/newline-after-import': 'error',
// 'import/no-anonymous-default-export': 'error',
// 'import/no-default-export': 'error',
// 'import/no-duplicates': 'error',
// 'import/no-named-default': 'error',
// 'import/no-namespace': 'error',
// 'import/no-unassigned-import': 'error',
// 'import/order': [
// 'error',
// {
// groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'],
// 'newlines-between': 'always',
// pathGroups: [
// {
// pattern: '@?*/**',
// group: 'external',
// position: 'after',
// },
// {
// pattern: '@/**',
// group: 'external',
// position: 'after',
// },
// ],
// alphabetize: {
// order: 'asc' /* sort in ascending order. Options: ['ignore', 'asc', 'desc'] */,
// caseInsensitive: true /* ignore case. Options: [true, false] */,
// },
// distinctGroup: true,
// },
// ],
// 'import/prefer-default-export': 'off',
// n
// 'n/handle-callback-err': 'error',
// 'n/no-callback-literal': 'error',
// 'n/no-exports-assign': 'error',
// 'n/no-extraneous-import': 'error',
// 'n/no-extraneous-require': 'error',
// 'n/no-hide-core-modules': 'error',
// 'n/no-missing-import': 'off', // not compatible with typescript
// 'n/no-missing-require': 'error',
// 'n/no-new-require': 'error',
// 'n/no-path-concat': 'error',
// 'n/no-process-exit': 'error',
// 'n/no-unpublished-bin': 'error',
// 'n/no-unpublished-import': 'off', // TODO need to exclude seeds
// 'n/no-unpublished-require': 'error',
// 'n/no-unsupported-features': ['error', { ignores: ['modules'] }],
// 'n/no-unsupported-features/es-builtins': 'error',
// 'n/no-unsupported-features/es-syntax': 'error',
// 'n/no-unsupported-features/node-builtins': 'error',
// 'n/process-exit-as-throw': 'error',
// 'n/shebang': 'error',
// 'n/callback-return': 'error',
// 'n/exports-style': 'error',
// 'n/file-extension-in-import': 'off',
// 'n/global-require': 'error',
// 'n/no-mixed-requires': 'error',
// 'n/no-process-env': 'error',
// 'n/no-restricted-import': 'error',
// 'n/no-restricted-require': 'error',
// 'n/no-sync': 'error',
// 'n/prefer-global/buffer': 'error',
// 'n/prefer-global/console': 'error',
// 'n/prefer-global/process': 'error',
// 'n/prefer-global/text-decoder': 'error',
// 'n/prefer-global/text-encoder': 'error',
// 'n/prefer-global/url': 'error',
// 'n/prefer-global/url-search-params': 'error',
// 'n/prefer-promises/dns': 'error',
// 'n/prefer-promises/fs': 'error',
// promise
// 'promise/catch-or-return': 'error',
// 'promise/no-return-wrap': 'error',
// 'promise/param-names': 'error',
// 'promise/always-return': 'error',
// 'promise/no-native': 'off',
// 'promise/no-nesting': 'warn',
// 'promise/no-promise-in-callback': 'warn',
// 'promise/no-callback-in-promise': 'warn',
// 'promise/avoid-new': 'warn',
// 'promise/no-new-statics': 'error',
// 'promise/no-return-in-finally': 'warn',
// 'promise/valid-params': 'warn',
// 'promise/prefer-await-to-callbacks': 'error',
// 'promise/no-multiple-resolved': 'error',
// eslint comments
// '@eslint-community/eslint-comments/disable-enable-pair': ['error', { allowWholeFile: true }],
// '@eslint-community/eslint-comments/no-restricted-disable': 'error',
// '@eslint-community/eslint-comments/no-use': 'off',
// '@eslint-community/eslint-comments/require-description': 'off',
},
overrides: [
// only for ts files
{
files: ['*.ts', '*.tsx'],
extends: [
// 'plugin:@typescript-eslint/recommended',
// 'plugin:@typescript-eslint/recommended-requiring-type-checking',
// 'plugin:@typescript-eslint/strict',
],
rules: {
// allow explicitly defined dangling promises
// '@typescript-eslint/no-floating-promises': ['error', { ignoreVoid: true }],
'no-void': ['error', { allowAsStatement: true }],
// ignore prefer-regexp-exec rule to allow string.match(regex)
'@typescript-eslint/prefer-regexp-exec': 'off',
// this should not run on ts files: https://github.com/import-js/eslint-plugin-import/issues/2215#issuecomment-911245486
'import/unambiguous': 'off',
// this is not compatible with typeorm, due to joined tables can be null, but are not defined as nullable
'@typescript-eslint/no-unnecessary-condition': 'off',
},
parserOptions: {
tsconfigRootDir: __dirname,
project: ['./tsconfig.json'],
// this is to properly reference the referenced project database without requirement of compiling it
// eslint-disable-next-line camelcase
EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true,
},
},
{
files: ['*.spec.ts'],
plugins: ['jest'],
env: {
jest: true,
},
rules: {
'jest/no-disabled-tests': 'error',
'jest/no-focused-tests': 'error',
'jest/no-identical-title': 'error',
'jest/prefer-to-have-length': 'error',
'jest/valid-expect': 'error',
'@typescript-eslint/unbound-method': 'off',
// 'jest/unbound-method': 'error',
},
},
],
};

13
gitbook-docs/backend/.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
node_modules/
.env
.vscode
.idea
yarn-error.log
build/*
coverage.lcov
.nyc_output/
public/uploads/*
!.gitkeep
# Apple macOS folder attribute file
.DS_Store

View File

@ -0,0 +1,3 @@
{
"schemaPath": "./src/schema.graphql"
}

View File

@ -0,0 +1 @@
v20.2.0

View File

@ -0,0 +1,9 @@
module.exports = {
semi: false,
printWidth: 100,
singleQuote: true,
trailingComma: "all",
tabWidth: 2,
bracketSpacing: true
};

View File

@ -0,0 +1,103 @@
##################################################################################
# BASE (Is pushed to DockerHub for rebranding) ###################################
##################################################################################
FROM node:20.2.0-alpine3.17 as base
# ENVs
## DOCKER_WORKDIR would be a classical ARG, but that is not multi layer persistent - shame
ENV DOCKER_WORKDIR="/app"
## We Cannot do `$(date -u +'%Y-%m-%dT%H:%M:%SZ')` here so we use unix timestamp=0
ARG BBUILD_DATE="1970-01-01T00:00:00.00Z"
ENV BUILD_DATE=$BBUILD_DATE
## We cannot do $(yarn run version)-${BUILD_NUMBER} here so we default to 0.0.0-0
ARG BBUILD_VERSION="0.0.0-0"
ENV BUILD_VERSION=$BBUILD_VERSION
## We cannot do `$(git rev-parse --short HEAD)` here so we default to 0000000
ARG BBUILD_COMMIT="0000000"
ENV BUILD_COMMIT=$BBUILD_COMMIT
## SET NODE_ENV
ENV NODE_ENV="production"
## App relevant Envs
ENV PORT="4000"
# Labels
LABEL org.label-schema.build-date="${BUILD_DATE}"
LABEL org.label-schema.name="ocelot.social:backend"
LABEL org.label-schema.description="Backend of the Social Network Software ocelot.social"
LABEL org.label-schema.usage="https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/README.md"
LABEL org.label-schema.url="https://ocelot.social"
LABEL org.label-schema.vcs-url="https://github.com/Ocelot-Social-Community/Ocelot-Social/tree/master/backend"
LABEL org.label-schema.vcs-ref="${BUILD_COMMIT}"
LABEL org.label-schema.vendor="ocelot.social Community"
LABEL org.label-schema.version="${BUILD_VERSION}"
LABEL org.label-schema.schema-version="1.0"
LABEL maintainer="devops@ocelot.social"
# Install Additional Software
## install: git
RUN apk --no-cache add git python3 make g++
# Settings
## Expose Container Port
EXPOSE ${PORT}
## Workdir
RUN mkdir -p ${DOCKER_WORKDIR}
WORKDIR ${DOCKER_WORKDIR}
##################################################################################
# DEVELOPMENT (Connected to the local environment, to reload on demand) ##########
##################################################################################
FROM base as development
# We don't need to copy or build anything since we gonna bind to the
# local filesystem which will need a rebuild anyway
# Run command
# (for development we need to execute yarn install since the
# node_modules are on another volume and need updating)
CMD /bin/sh -c "yarn install && yarn run dev"
##################################################################################
# CODE (Does contain all code files and is pushed to DockerHub for rebranding) ###
##################################################################################
FROM base as code
# copy everything, but do not build.
COPY . .
##################################################################################
# BUILD (Does contain all files and the compilate and is therefore bloated) ######
##################################################################################
FROM code as build
# yarn install
RUN yarn install --production=false --frozen-lockfile --non-interactive
# yarn build
RUN /bin/sh -c "yarn run build"
##################################################################################
# TEST ###########################################################################
##################################################################################
FROM build as test
# Run command
CMD /bin/sh -c "yarn run dev"
##################################################################################
# PRODUCTION (Does contain only "binary"- and static-files to reduce image size) #
##################################################################################
FROM base as production
# Copy "binary"-files from build image
COPY --from=build ${DOCKER_WORKDIR}/build ./build
COPY --from=build ${DOCKER_WORKDIR}/node_modules ./node_modules
# Copy static files
# TODO - externalize the uploads so we can copy the whole folder
COPY --from=build ${DOCKER_WORKDIR}/public/img/ ./public/img/
COPY --from=build ${DOCKER_WORKDIR}/public/providers.json ./public/providers.json
# Copy package.json for script definitions (lock file should not be needed)
COPY --from=build ${DOCKER_WORKDIR}/package.json ./package.json
# Run command
CMD /bin/sh -c "yarn run start"

View File

@ -0,0 +1,15 @@
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "10"
}
}
]
],
"plugins": [
"@babel/plugin-proposal-throw-expressions"
]
}

View File

@ -0,0 +1,543 @@
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>GraphQL · Ocelot.Social Developer Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content="busFaktor() e.V.">
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-hints/plugin-hints.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-tabs2/tabs.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-search-pro/search.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="neo4j-graphql-js.html" />
<link rel="prev" href="./" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="../">
<a href="../">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="../edit-this-documentation.html">
<a href="../edit-this-documentation.html">
Edit this Documentation
</a>
</li>
<li class="chapter " data-level="1.3" data-path="../neo4j/">
<a href="../neo4j/">
Neo4J
</a>
</li>
<li class="chapter " data-level="1.4" data-path="./">
<a href="./">
Backend
</a>
<ul class="articles">
<li class="chapter active" data-level="1.4.1" data-path="graphql.html">
<a href="graphql.html">
GraphQL
</a>
</li>
<li class="chapter " data-level="1.4.2" data-path="neo4j-graphql-js.html">
<a href="neo4j-graphql-js.html">
neo4j-graphql-js
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="../webapp/">
<a href="../webapp/">
Webapp
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="../webapp/components.html">
<a href="../webapp/components.html">
Components
</a>
</li>
<li class="chapter " data-level="1.5.2" data-path="../webapp/html.html">
<a href="../webapp/html.html">
HTML
</a>
</li>
<li class="chapter " data-level="1.5.3" data-path="../webapp/scss.html">
<a href="../webapp/scss.html">
SCSS
</a>
</li>
<li class="chapter " data-level="1.5.4" data-path="../webapp/vue.html">
<a href="../webapp/vue.html">
Vue
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="../testing.html">
<a href="../testing.html">
Testing Guide
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="../cypress/">
<a href="../cypress/">
End-to-end tests
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="../webapp/testing.html">
<a href="../webapp/testing.html">
Frontend tests
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="testing.html">
<a href="testing.html">
Backend tests
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.7" data-path="../DOCKER_MORE_CLOSELY.html">
<a href="../DOCKER_MORE_CLOSELY.html">
Docker More Closely
</a>
</li>
<li class="chapter " data-level="1.8" >
<a target="_blank" href="https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md">
Deployment
</a>
</li>
<li class="chapter " data-level="1.9" data-path="../CONTRIBUTING.html">
<a href="../CONTRIBUTING.html">
Contributing
</a>
</li>
<li class="chapter " data-level="1.10" data-path="../cypress/features.html">
<a href="../cypress/features.html">
Feature Specification
</a>
</li>
<li class="chapter " data-level="1.11" data-path="../CODE_OF_CONDUCT.html">
<a href="../CODE_OF_CONDUCT.html">
Code of conduct
</a>
</li>
<li class="chapter " data-level="1.12" data-path="../LICENSE.html">
<a href="../LICENSE.html">
License
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href=".." >GraphQL</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="graphql-with-apollo">GraphQL with Apollo</h1>
<p>GraphQL is a data query language which provides an alternative to REST and ad-hoc web service architectures. It allows clients to define the structure of the data required, and exactly the same structure of the data is returned from the server.</p>
<p><img src="../../../.gitbook/assets/graphql-playground%20%281%29.png" alt="GraphQL Playground"></p>
<h2 id="middleware-keeps-resolvers-clean">Middleware keeps resolvers clean</h2>
<p><img src="../.gitbook/assets/grafik-4.png" alt=""></p>
<p>A well-organized codebase is key for the ability to maintain and easily introduce changes into an app. Figuring out the right structure for your code remains a continuous challenge - especially as an application grows and more developers are joining a project.</p>
<p>A common problem in GraphQL servers is that resolvers often get cluttered with business logic, making the entire resolver system harder to understand and maintain.</p>
<p>GraphQL Middleware uses the <a href="https://dzone.com/articles/understanding-middleware-pattern-in-expressjs" target="_blank"><em>middleware pattern</em></a> (well-known from Express.js) to pull out repetitive code from resolvers and execute it before or after one of your resolvers is invoked. This improves code modularity and keeps your resolvers clean and simple.</p>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="./" class="navigation navigation-prev " aria-label="Previous page: Backend">
<i class="fa fa-angle-left"></i>
</a>
<a href="neo4j-graphql-js.html" class="navigation navigation-next " aria-label="Next page: neo4j-graphql-js">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"GraphQL","level":"1.4.1","depth":2,"next":{"title":"neo4j-graphql-js","level":"1.4.2","depth":2,"path":"backend/neo4j-graphql-js.md","ref":"backend/neo4j-graphql-js.md","articles":[]},"previous":{"title":"Backend","level":"1.4","depth":1,"path":"backend/README.md","ref":"backend/README.md","articles":[{"title":"GraphQL","level":"1.4.1","depth":2,"path":"backend/graphql.md","ref":"backend/graphql.md","articles":[]},{"title":"neo4j-graphql-js","level":"1.4.2","depth":2,"path":"backend/neo4j-graphql-js.md","ref":"backend/neo4j-graphql-js.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":["-lunr","-search","-sharing","hints","tabs2","theme-simple@git+https://github.com/plugins-zander/gitbook-plugin-theme-simple.git","search-pro@git+https://github.com/plugins-zander/gitbook-plugin-search-pro.git","splitter@git+https://github.com/plugins-zander/gitbook-plugin-splitter.git","edit-link@git+https://github.com/plugins-zander/gitbook-plugin-edit-link.git","gtag@git+https://github.com/plugins-zander/gitbook-plugin-gtag.git","chapter-fold@git+https://github.com/plugins-zander/gitbook-plugin-chapter-fold.git","copy-code-button@git+https://github.com/plugins-zander/gitbook-plugin-copy-code-button.git"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"chapter-fold":{},"splitter":{},"search-pro":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"sitemap-general":{"prefix":"https://zlogs.net/gitbook-action/"},"fontsettings":{"theme":"white","family":"sans","size":2},"gtag":{"token":""},"tabs2":{},"highlight":{},"theme-simple":{"showLevel":false,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"copy-code-button":{},"edit-link":{"label":"EDIT","base":"https://github.com/Ocelot-Social-Community/Ocelot-Social/edit/master/"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"busFaktor() e.V.","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Ocelot.Social Developer Documentation","gitbook":"3.2.3","description":"Developer Documentation by Gitbook-Action"},"file":{"path":"backend/graphql.md","mtime":"2019-04-14T22:57:35.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2023-08-15T14:47:24.081Z"},"basePath":"..","book":{"language":""}});
});
</script>
</div>
<script src="../gitbook/gitbook.js"></script>
<script src="../gitbook/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="../gitbook/gitbook-plugin-tabs2/tabs.js"></script>
<script src="../gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
<script src="../gitbook/gitbook-plugin-search-pro/search.js"></script>
<script src="../gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="../gitbook/gitbook-plugin-edit-link/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-gtag/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
<script src="../gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
<script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>

View File

@ -0,0 +1,647 @@
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Backend · Ocelot.Social Developer Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content="busFaktor() e.V.">
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-hints/plugin-hints.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-tabs2/tabs.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-search-pro/search.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="graphql.html" />
<link rel="prev" href="../neo4j/" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="../">
<a href="../">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="../edit-this-documentation.html">
<a href="../edit-this-documentation.html">
Edit this Documentation
</a>
</li>
<li class="chapter " data-level="1.3" data-path="../neo4j/">
<a href="../neo4j/">
Neo4J
</a>
</li>
<li class="chapter active" data-level="1.4" data-path="./">
<a href="./">
Backend
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1" data-path="graphql.html">
<a href="graphql.html">
GraphQL
</a>
</li>
<li class="chapter " data-level="1.4.2" data-path="neo4j-graphql-js.html">
<a href="neo4j-graphql-js.html">
neo4j-graphql-js
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="../webapp/">
<a href="../webapp/">
Webapp
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="../webapp/components.html">
<a href="../webapp/components.html">
Components
</a>
</li>
<li class="chapter " data-level="1.5.2" data-path="../webapp/html.html">
<a href="../webapp/html.html">
HTML
</a>
</li>
<li class="chapter " data-level="1.5.3" data-path="../webapp/scss.html">
<a href="../webapp/scss.html">
SCSS
</a>
</li>
<li class="chapter " data-level="1.5.4" data-path="../webapp/vue.html">
<a href="../webapp/vue.html">
Vue
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="../testing.html">
<a href="../testing.html">
Testing Guide
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="../cypress/">
<a href="../cypress/">
End-to-end tests
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="../webapp/testing.html">
<a href="../webapp/testing.html">
Frontend tests
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="testing.html">
<a href="testing.html">
Backend tests
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.7" data-path="../DOCKER_MORE_CLOSELY.html">
<a href="../DOCKER_MORE_CLOSELY.html">
Docker More Closely
</a>
</li>
<li class="chapter " data-level="1.8" >
<a target="_blank" href="https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md">
Deployment
</a>
</li>
<li class="chapter " data-level="1.9" data-path="../CONTRIBUTING.html">
<a href="../CONTRIBUTING.html">
Contributing
</a>
</li>
<li class="chapter " data-level="1.10" data-path="../cypress/features.html">
<a href="../cypress/features.html">
Feature Specification
</a>
</li>
<li class="chapter " data-level="1.11" data-path="../CODE_OF_CONDUCT.html">
<a href="../CODE_OF_CONDUCT.html">
Code of conduct
</a>
</li>
<li class="chapter " data-level="1.12" data-path="../LICENSE.html">
<a href="../LICENSE.html">
License
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href=".." >Backend</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="backend">Backend</h1>
<h2 id="installation-with-docker">Installation with Docker</h2>
<p>Run the following command to install everything through docker.</p>
<p>The installation takes a bit longer on the first pass or on rebuild ...</p>
<pre><code class="lang-bash"><span class="hljs-comment"># in main folder</span>
$ docker-compose up
<span class="hljs-comment"># or</span>
<span class="hljs-comment"># rebuild the containers for a cleanup</span>
$ docker-compose up --build
</code></pre>
<p>Wait a little until your backend is up and running at <a href="http://localhost:4000/" target="_blank">http://localhost:4000/</a>.</p>
<h2 id="installation-without-docker">Installation without Docker</h2>
<p>For the local installation you need a recent version of
<a href="https://nodejs.org/en/" target="_blank">Node</a> (&gt;= <code>v16.19.0</code>). We are using
<code>v19.4.0</code> and therefore we recommend to use the same version
(<a href="https://github.com/Ocelot-Social-Community/Ocelot-Social/issues/4082" target="_blank">see</a>
some known problems with more recent node versions). You can use the
<a href="https://github.com/nvm-sh/nvm" target="_blank">node version manager</a> <code>nvm</code> to switch
between different local Node versions:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># install Node</span>
$ <span class="hljs-built_in">cd</span> backend
$ nvm install v19.4.0
$ nvm use v19.4.0
</code></pre>
<p>Install node dependencies with <a href="https://yarnpkg.com/en/" target="_blank">yarn</a>:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># in main folder</span>
$ <span class="hljs-built_in">cd</span> backend
$ yarn install
<span class="hljs-comment"># or just</span>
$ yarn
<span class="hljs-comment"># or just later on to use version of &quot;.nvmrc&quot; file</span>
$ nvm use &amp;&amp; yarn
</code></pre>
<p>Copy Environment Variables:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># in backend/</span>
$ cp .env.template .env
</code></pre>
<p>Configure the new file according to your needs and your local setup. Make sure
a <a href="http://localhost:7474" target="_blank">local Neo4J</a> instance is up and running.</p>
<p>Start the backend for development with:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># in backend/</span>
$ yarn run dev
</code></pre>
<p>or start the backend in production environment with:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># in backend/</span>
$ yarn run start
</code></pre>
<p>For e-mail delivery, please configure at least <code>SMTP_HOST</code> and <code>SMTP_PORT</code> in
your <code>.env</code> configuration file.</p>
<p>Your backend is up and running at <a href="http://localhost:4000/" target="_blank">http://localhost:4000/</a>
This will start the GraphQL service (by default on localhost:4000) where you
can issue GraphQL requests or access GraphQL Playground in the browser.
More details about our GraphQL playground and how to use it with ocelot.social can be found <a href="src/graphql/GraphQL-Playground.md">here</a>.</p>
<p><img src="../.gitbook/assets/graphql-playground.png" alt="GraphQL Playground"></p>
<h3 id="database-indexes-and-constraints">Database Indexes and Constraints</h3>
<p>Database indexes and constraints need to be created and upgraded when the database and the backend are running:</p>
<p><div class="markdown-tabs"><ul class="nav nav-tabs" role="tablist"><li role="presentation" class="active"><a href="#tab-267" aria-controls="tab-267" role="tab" data-toggle="tab">Docker</a></li><li role="presentation" class=""><a href="#tab-268" aria-controls="tab-268" role="tab" data-toggle="tab">Without Docker</a></li></ul><div class="tab-content"><div role="tabpanel" class="tab-pane active" id="tab-267"><pre><code class="lang-bash"><span class="hljs-comment"># in main folder while docker-compose is running</span>
$ docker <span class="hljs-built_in">exec</span> backend yarn run db:migrate init
<span class="hljs-comment"># only once: init admin user and create indexes and constraints in Neo4j database</span>
<span class="hljs-comment"># for development</span>
$ docker compose <span class="hljs-built_in">exec</span> backend yarn prod:migrate init
<span class="hljs-comment"># in production mode use command</span>
$ docker compose <span class="hljs-built_in">exec</span> backend /bin/sh -c <span class="hljs-string">&quot;yarn prod:migrate init&quot;</span></code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># in main folder with docker compose running</span>
$ docker <span class="hljs-built_in">exec</span> backend yarn run db:migrate up</code></pre>
</div><div role="tabpanel" class="tab-pane " id="tab-268"><pre><code class="lang-bash"><span class="hljs-comment"># in folder backend/ while database is running</span>
<span class="hljs-comment"># make sure your database is running on http://localhost:7474/browser/</span>
yarn run db:migrate init</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># in backend/ with database running (In docker or local)</span>
yarn run db:migrate up</code></pre>
</div></div></div></p>
<h4 id="seed-database">Seed Database</h4>
<p>If you want your backend to return anything else than an empty response, you
need to seed your database:</p>
<p><div class="markdown-tabs"><ul class="nav nav-tabs" role="tablist"><li role="presentation" class="active"><a href="#tab-137" aria-controls="tab-137" role="tab" data-toggle="tab">Docker</a></li><li role="presentation" class=""><a href="#tab-138" aria-controls="tab-138" role="tab" data-toggle="tab">Without Docker</a></li></ul><div class="tab-content"><div role="tabpanel" class="tab-pane active" id="tab-137"><p>In another terminal run:</p><pre><code class="lang-bash"><span class="hljs-comment"># in main folder while docker-compose is running</span>
$ docker <span class="hljs-built_in">exec</span> backend yarn run db:seed</code></pre>
<p>To reset the database run:</p><pre><code class="lang-bash"><span class="hljs-comment"># in main folder while docker-compose is running</span>
$ docker <span class="hljs-built_in">exec</span> backend yarn run db:reset
<span class="hljs-comment"># you could also wipe out your neo4j database and delete all volumes with:</span>
$ docker-compose down -v
<span class="hljs-comment"># if container is not running, run this command to set up your database indexes and constraints</span>
$ docker <span class="hljs-built_in">exec</span> backend yarn run db:migrate init
<span class="hljs-comment"># And then upgrade the indexes and const</span>
$ docker <span class="hljs-built_in">exec</span> backend yarn run db:migrate up</code></pre>
</div><div role="tabpanel" class="tab-pane " id="tab-138"><p>Run:</p><pre><code class="lang-bash"><span class="hljs-comment"># in backend/ while database is running</span>
$ yarn run db:seed</code></pre>
<p>To reset the database run:</p><pre><code class="lang-bash"><span class="hljs-comment"># in backend/ while database is running</span>
$ yarn run db:reset</code></pre>
</div></div></div></p>
<h3 id="data-migrations">Data migrations</h3>
<p>Although Neo4J is schema-less,you might find yourself in a situation in which
you have to migrate your data e.g. because your data modeling has changed.</p>
<p><div class="markdown-tabs"><ul class="nav nav-tabs" role="tablist"><li role="presentation" class="active"><a href="#tab-546" aria-controls="tab-546" role="tab" data-toggle="tab">Docker</a></li><li role="presentation" class=""><a href="#tab-547" aria-controls="tab-547" role="tab" data-toggle="tab">Without Docker</a></li></ul><div class="tab-content"><div role="tabpanel" class="tab-pane active" id="tab-546"><p>Generate a data migration file:</p><pre><code class="lang-bash"><span class="hljs-comment"># in main folder while docker-compose is running</span>
$ docker-compose <span class="hljs-built_in">exec</span> backend yarn run db:migrate:create your_data_migration
<span class="hljs-comment"># Edit the file in ./src/db/migrations/</span></code></pre>
<p>To run the migration:</p><pre><code class="lang-bash"><span class="hljs-comment"># in main folder while docker-compose is running</span>
$ docker <span class="hljs-built_in">exec</span> backend yarn run db:migrate up</code></pre>
</div><div role="tabpanel" class="tab-pane " id="tab-547"><p>Generate a data migration file:</p><pre><code class="lang-bash"><span class="hljs-comment"># in backend/</span>
$ yarn run db:migrate:create your_data_migration
<span class="hljs-comment"># Edit the file in ./src/db/migrations/</span></code></pre>
<p>To run the migration:</p><pre><code class="lang-bash"><span class="hljs-comment"># in backend/ while database is running</span>
$ yarn run db:migrate up</code></pre>
</div></div></div></p>
<h2 id="testing">Testing</h2>
<p><strong>Beware</strong>: We have no multiple database setup at the moment. We clean the
database after each test, running the tests will wipe out all your data!</p>
<p><div class="markdown-tabs"><ul class="nav nav-tabs" role="tablist"><li role="presentation" class="active"><a href="#tab-119" aria-controls="tab-119" role="tab" data-toggle="tab">Docker</a></li><li role="presentation" class=""><a href="#tab-120" aria-controls="tab-120" role="tab" data-toggle="tab">Without Docker</a></li></ul><div class="tab-content"><div role="tabpanel" class="tab-pane active" id="tab-119"><p>Run the unit tests:</p><pre><code class="lang-bash"><span class="hljs-comment"># in main folder while docker-compose is running</span>
$ docker <span class="hljs-built_in">exec</span> backend yarn run <span class="hljs-built_in">test</span></code></pre>
</div><div role="tabpanel" class="tab-pane " id="tab-120"><p>Run the unit tests:</p><pre><code class="lang-bash"><span class="hljs-comment"># in backend/ while database is running</span>
$ yarn run <span class="hljs-built_in">test</span></code></pre>
</div></div></div></p>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="../neo4j/" class="navigation navigation-prev " aria-label="Previous page: Neo4J">
<i class="fa fa-angle-left"></i>
</a>
<a href="graphql.html" class="navigation navigation-next " aria-label="Next page: GraphQL">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Backend","level":"1.4","depth":1,"next":{"title":"GraphQL","level":"1.4.1","depth":2,"path":"backend/graphql.md","ref":"backend/graphql.md","articles":[]},"previous":{"title":"Neo4J","level":"1.3","depth":1,"path":"neo4j/README.md","ref":"neo4j/README.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-lunr","-search","-sharing","hints","tabs2","theme-simple@git+https://github.com/plugins-zander/gitbook-plugin-theme-simple.git","search-pro@git+https://github.com/plugins-zander/gitbook-plugin-search-pro.git","splitter@git+https://github.com/plugins-zander/gitbook-plugin-splitter.git","edit-link@git+https://github.com/plugins-zander/gitbook-plugin-edit-link.git","gtag@git+https://github.com/plugins-zander/gitbook-plugin-gtag.git","chapter-fold@git+https://github.com/plugins-zander/gitbook-plugin-chapter-fold.git","copy-code-button@git+https://github.com/plugins-zander/gitbook-plugin-copy-code-button.git"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"chapter-fold":{},"splitter":{},"search-pro":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"sitemap-general":{"prefix":"https://zlogs.net/gitbook-action/"},"fontsettings":{"theme":"white","family":"sans","size":2},"gtag":{"token":""},"tabs2":{},"highlight":{},"theme-simple":{"showLevel":false,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"copy-code-button":{},"edit-link":{"label":"EDIT","base":"https://github.com/Ocelot-Social-Community/Ocelot-Social/edit/master/"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"busFaktor() e.V.","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Ocelot.Social Developer Documentation","gitbook":"3.2.3","description":"Developer Documentation by Gitbook-Action"},"file":{"path":"backend/README.md","mtime":"2023-03-14T07:12:24.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2023-08-15T14:47:24.081Z"},"basePath":"..","book":{"language":""}});
});
</script>
</div>
<script src="../gitbook/gitbook.js"></script>
<script src="../gitbook/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="../gitbook/gitbook-plugin-tabs2/tabs.js"></script>
<script src="../gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
<script src="../gitbook/gitbook-plugin-search-pro/search.js"></script>
<script src="../gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="../gitbook/gitbook-plugin-edit-link/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-gtag/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
<script src="../gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
<script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>

View File

@ -0,0 +1,19 @@
module.exports = {
verbose: true,
preset: 'ts-jest',
collectCoverage: true,
collectCoverageFrom: [
'**/*.ts',
'!**/node_modules/**',
'!**/test/**',
'!**/build/**',
'!**/src/**/?(*.)+(spec|test).ts?(x)'
],
coverageThreshold: {
global: {
lines: 67,
},
},
testMatch: ['**/src/**/?(*.)+(spec|test).ts?(x)'],
setupFilesAfterEnv: ['<rootDir>/test/setup.ts']
}

View File

@ -0,0 +1,545 @@
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>neo4j-graphql-js · Ocelot.Social Developer Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content="busFaktor() e.V.">
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-hints/plugin-hints.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-tabs2/tabs.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-search-pro/search.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="../webapp/" />
<link rel="prev" href="graphql.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="../">
<a href="../">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="../edit-this-documentation.html">
<a href="../edit-this-documentation.html">
Edit this Documentation
</a>
</li>
<li class="chapter " data-level="1.3" data-path="../neo4j/">
<a href="../neo4j/">
Neo4J
</a>
</li>
<li class="chapter " data-level="1.4" data-path="./">
<a href="./">
Backend
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1" data-path="graphql.html">
<a href="graphql.html">
GraphQL
</a>
</li>
<li class="chapter active" data-level="1.4.2" data-path="neo4j-graphql-js.html">
<a href="neo4j-graphql-js.html">
neo4j-graphql-js
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="../webapp/">
<a href="../webapp/">
Webapp
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="../webapp/components.html">
<a href="../webapp/components.html">
Components
</a>
</li>
<li class="chapter " data-level="1.5.2" data-path="../webapp/html.html">
<a href="../webapp/html.html">
HTML
</a>
</li>
<li class="chapter " data-level="1.5.3" data-path="../webapp/scss.html">
<a href="../webapp/scss.html">
SCSS
</a>
</li>
<li class="chapter " data-level="1.5.4" data-path="../webapp/vue.html">
<a href="../webapp/vue.html">
Vue
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="../testing.html">
<a href="../testing.html">
Testing Guide
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="../cypress/">
<a href="../cypress/">
End-to-end tests
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="../webapp/testing.html">
<a href="../webapp/testing.html">
Frontend tests
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="testing.html">
<a href="testing.html">
Backend tests
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.7" data-path="../DOCKER_MORE_CLOSELY.html">
<a href="../DOCKER_MORE_CLOSELY.html">
Docker More Closely
</a>
</li>
<li class="chapter " data-level="1.8" >
<a target="_blank" href="https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/blob/master/deployment/README.md">
Deployment
</a>
</li>
<li class="chapter " data-level="1.9" data-path="../CONTRIBUTING.html">
<a href="../CONTRIBUTING.html">
Contributing
</a>
</li>
<li class="chapter " data-level="1.10" data-path="../cypress/features.html">
<a href="../cypress/features.html">
Feature Specification
</a>
</li>
<li class="chapter " data-level="1.11" data-path="../CODE_OF_CONDUCT.html">
<a href="../CODE_OF_CONDUCT.html">
Code of conduct
</a>
</li>
<li class="chapter " data-level="1.12" data-path="../LICENSE.html">
<a href="../LICENSE.html">
License
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href=".." >neo4j-graphql-js</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="neo4j-graphqljs">neo4j-graphql.js</h1>
<p>We use an npm package called <code>neo4j-graphql-js</code> as a cypher query builder. This
library also generates resolvers for graphql queries, unless we implement them
ourselves.</p>
<h2 id="debugging">Debugging</h2>
<p>As you can see in their <a href="https://github.com/neo4j-graphql/neo4j-graphql-js" target="_blank">documentation</a>
it is possible to log out the generated cypher statements. To do so, run the
backend like this:</p>
<pre><code class="lang-sh">DEBUG=neo4j-graphql-js yarn run dev
</code></pre>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="graphql.html" class="navigation navigation-prev " aria-label="Previous page: GraphQL">
<i class="fa fa-angle-left"></i>
</a>
<a href="../webapp/" class="navigation navigation-next " aria-label="Next page: Webapp">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"neo4j-graphql-js","level":"1.4.2","depth":2,"next":{"title":"Webapp","level":"1.5","depth":1,"path":"webapp/README.md","ref":"webapp/README.md","articles":[{"title":"Components","level":"1.5.1","depth":2,"path":"webapp/components.md","ref":"webapp/components.md","articles":[]},{"title":"HTML","level":"1.5.2","depth":2,"path":"webapp/html.md","ref":"webapp/html.md","articles":[]},{"title":"SCSS","level":"1.5.3","depth":2,"path":"webapp/scss.md","ref":"webapp/scss.md","articles":[]},{"title":"Vue","level":"1.5.4","depth":2,"path":"webapp/vue.md","ref":"webapp/vue.md","articles":[]}]},"previous":{"title":"GraphQL","level":"1.4.1","depth":2,"path":"backend/graphql.md","ref":"backend/graphql.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-lunr","-search","-sharing","hints","tabs2","theme-simple@git+https://github.com/plugins-zander/gitbook-plugin-theme-simple.git","search-pro@git+https://github.com/plugins-zander/gitbook-plugin-search-pro.git","splitter@git+https://github.com/plugins-zander/gitbook-plugin-splitter.git","edit-link@git+https://github.com/plugins-zander/gitbook-plugin-edit-link.git","gtag@git+https://github.com/plugins-zander/gitbook-plugin-gtag.git","chapter-fold@git+https://github.com/plugins-zander/gitbook-plugin-chapter-fold.git","copy-code-button@git+https://github.com/plugins-zander/gitbook-plugin-copy-code-button.git"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"chapter-fold":{},"splitter":{},"search-pro":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"sitemap-general":{"prefix":"https://zlogs.net/gitbook-action/"},"fontsettings":{"theme":"white","family":"sans","size":2},"gtag":{"token":""},"tabs2":{},"highlight":{},"theme-simple":{"showLevel":false,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"copy-code-button":{},"edit-link":{"label":"EDIT","base":"https://github.com/Ocelot-Social-Community/Ocelot-Social/edit/master/"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"busFaktor() e.V.","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Ocelot.Social Developer Documentation","gitbook":"3.2.3","description":"Developer Documentation by Gitbook-Action"},"file":{"path":"backend/neo4j-graphql-js.md","mtime":"2019-11-14T22:53:31.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2023-08-15T14:47:24.081Z"},"basePath":"..","book":{"language":""}});
});
</script>
</div>
<script src="../gitbook/gitbook.js"></script>
<script src="../gitbook/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="../gitbook/gitbook-plugin-tabs2/tabs.js"></script>
<script src="../gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
<script src="../gitbook/gitbook-plugin-search-pro/search.js"></script>
<script src="../gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="../gitbook/gitbook-plugin-edit-link/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-gtag/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
<script src="../gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
<script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>

View File

@ -0,0 +1,129 @@
{
"name": "ocelot-social-backend",
"version": "3.0.1",
"description": "GraphQL Backend for ocelot.social",
"repository": "https://github.com/Ocelot-Social-Community/Ocelot-Social",
"author": "ocelot.social Community",
"license": "MIT",
"private": false,
"main": "src/index.ts",
"scripts": {
"__migrate": "migrate --compiler 'ts:./src/db/compiler.ts' --migrations-dir ./src/db/migrations",
"prod:migrate": "migrate --migrations-dir ./build/src/db/migrations --store ./build/src/db/migrate/store.js",
"start": "node build/src/",
"build": "tsc && ./scripts/build.copy.files.sh",
"dev": "nodemon --exec ts-node src/ -e js,ts,gql",
"dev:debug": "nodemon --exec babel-node --inspect=0.0.0.0:9229 src/ -e js,ts,gql",
"lint": "eslint --max-warnings=0 --ext .js,.ts ./src",
"test": "cross-env NODE_ENV=test NODE_OPTIONS=--max-old-space-size=8192 jest --runInBand --coverage --forceExit --detectOpenHandles",
"db:clean": "ts-node src/db/clean.ts",
"db:reset": "yarn run db:clean",
"db:seed": "ts-node src/db/seed.ts",
"db:migrate": "yarn run __migrate --store ./src/db/migrate/store.ts",
"db:migrate:create": "yarn run __migrate --template-file ./src/db/migrate/template.ts --date-format 'yyyymmddHHmmss' create"
},
"dependencies": {
"@babel/cli": "~7.8.4",
"@babel/core": "~7.9.0",
"@babel/node": "~7.8.7",
"@babel/plugin-proposal-throw-expressions": "^7.8.3",
"@babel/preset-env": "~7.9.5",
"@babel/register": "^7.9.0",
"@sentry/node": "^5.15.4",
"apollo-cache-inmemory": "~1.6.5",
"apollo-client": "~2.6.8",
"apollo-link-context": "~1.0.20",
"apollo-link-http": "~1.5.17",
"apollo-server": "~2.14.2",
"apollo-server-express": "^2.14.2",
"aws-sdk": "^2.652.0",
"babel-core": "~7.0.0-0",
"babel-eslint": "~10.1.0",
"babel-jest": "~25.2.6",
"babel-plugin-transform-runtime": "^6.23.0",
"bcryptjs": "~2.4.3",
"cheerio": "~1.0.0-rc.3",
"cors": "~2.8.5",
"cross-env": "~7.0.3",
"dotenv": "~8.2.0",
"express": "^4.17.1",
"graphql": "^14.6.0",
"graphql-middleware": "~4.0.2",
"graphql-middleware-sentry": "^3.2.1",
"graphql-redis-subscriptions": "^2.2.1",
"graphql-shield": "~7.2.2",
"graphql-tag": "~2.10.3",
"helmet": "~7.0.0",
"ioredis": "^4.16.1",
"jsonwebtoken": "~8.5.1",
"languagedetect": "^2.0.0",
"linkifyjs": "~2.1.8",
"lodash": "~4.17.14",
"merge-graphql-schemas": "^1.7.8",
"metascraper": "^5.33.5",
"metascraper-audio": "^5.34.4",
"metascraper-author": "^5.33.5",
"metascraper-date": "^5.33.5",
"metascraper-description": "^5.33.5",
"metascraper-image": "^5.33.5",
"metascraper-lang": "^5.33.5",
"metascraper-lang-detector": "^4.10.2",
"metascraper-logo": "^5.33.5",
"metascraper-publisher": "^5.33.5",
"metascraper-soundcloud": "^5.34.4",
"metascraper-title": "^5.34.7",
"metascraper-url": "^5.34.2",
"metascraper-video": "^5.33.5",
"metascraper-youtube": "^5.33.5",
"migrate": "^2.0.0",
"mime-types": "^2.1.26",
"minimatch": "^3.0.4",
"mustache": "^4.2.0",
"neo4j-driver": "^4.0.2",
"neo4j-graphql-js": "^2.11.5",
"neode": "^0.4.9",
"node-fetch": "~2.6.1",
"nodemailer": "^6.4.4",
"nodemailer-html-to-text": "^3.2.0",
"request": "~2.88.2",
"sanitize-html": "~1.22.0",
"slug": "~6.0.0",
"subscriptions-transport-ws": "^0.9.19",
"trunc-html": "~1.1.2",
"uuid": "~8.3.2",
"validator": "^13.9.0",
"xregexp": "^4.3.0"
},
"devDependencies": {
"@faker-js/faker": "7.6.0",
"@types/jest": "^27.0.2",
"@types/node": "^20.2.5",
"@typescript-eslint/eslint-plugin": "^5.57.1",
"@typescript-eslint/parser": "^5.57.1",
"apollo-server-testing": "~2.11.0",
"chai": "~4.2.0",
"cucumber": "~6.0.5",
"eslint": "^8.37.0",
"eslint-config-prettier": "^8.8.0",
"eslint-config-standard": "^17.0.0",
"eslint-import-resolver-typescript": "^3.5.4",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-jest": "^27.2.1",
"eslint-plugin-n": "^15.7.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-security": "^1.7.1",
"jest": "^27.2.4",
"nodemon": "~2.0.2",
"prettier": "^2.8.7",
"rosie": "^2.0.1",
"ts-jest": "^27.0.5",
"ts-node": "^10.9.1",
"typescript": "^4.9.4"
},
"resolutions": {
"**/**/fs-capacitor": "^6.2.0",
"**/graphql-upload": "^11.0.0",
"nan": "2.17.0"
}
}

View File

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#84A939" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)" fill="#FEFEFE"><path d="M126.284 211.948c102.42-35.097 185.118-48.813 243.947 3.76-87.197-24.763-166.785-19.12-243.947-3.76zm56.557 37.817c83.2 8.086 125.85 7.018 185.85-18.187-78.351 41.912-114.88 34.814-185.85 18.187zm102.729 20.872c0-1.67 1.563-3.027 3.492-3.027 1.927 0 3.493 1.357 3.493 3.027 0 1.67-1.566 3.026-3.493 3.026-1.93 0-3.492-1.355-3.492-3.026zm-12.265.16c0-1.67 1.562-3.027 3.49-3.027 1.93 0 3.493 1.356 3.493 3.026 0 1.671-1.564 3.026-3.493 3.026-1.928 0-3.49-1.355-3.49-3.026zm-12.426.158c0-1.671 1.567-3.026 3.492-3.026 1.93 0 3.493 1.355 3.493 3.026 0 1.672-1.563 3.026-3.493 3.026-1.925 0-3.492-1.354-3.492-3.026zm59.115-4.762l-4.274 14.591-55.034-.141 44.12-5.849 15.188-8.601zm-186.512-44.348v-5.807c13.51-1.104 33.205-1.49 52.186 2.728l-52.186 3.08zm248.469-4.061c0-26.937-46.004-48.784-112.812-48.784-29.018 0-62.094 4.123-90.233 10.995l-46.092-5.762 3.41 20.454C122.504 201.562 114 209.429 114 217.784c0 8.419 8.628 16.34 22.526 23.251l-3.47 20.823 47.352-5.918a373.092 373.092 0 0 0 24.043 4.893v6.96h20.215l1.573-3.841a400.647 400.647 0 0 0 22.102 1.965l4.608 11.551.326 6.43h66.102l7.206-20.662h-14.52c42.795-7.105 69.888-24.776 69.888-45.452z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/><path id="c" d="M0 .056h291.913v103.538H0z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#84A939" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)"><path d="M247.532 256.288c26.553 0 49.62 4.608 61.301 11.379-10-8.244-33.676-14.039-61.3-14.039-27.625 0-51.301 5.795-61.302 14.039 11.684-6.77 34.75-11.379 61.301-11.379" fill="#E5ECD6"/><path d="M248.467 272.148c28.174 0 52.65 6.146 65.046 15.173-10.611-10.993-35.735-18.718-65.046-18.718-29.31 0-54.433 7.725-65.044 18.718 12.395-9.027 36.872-15.173 65.044-15.173" fill="#B5CB88"/><path d="M248.467 291.044c30.201 0 56.439 6.45 69.725 15.93-11.372-11.54-38.304-19.653-69.725-19.653-31.419 0-58.35 8.113-69.723 19.653 13.286-9.48 39.524-15.93 69.723-15.93" fill="#E5ECD6"/><path d="M248.424 312.164c33.088 0 61.833 6.994 76.39 17.272-12.46-12.512-41.964-21.31-76.39-21.31-34.423 0-63.929 8.798-76.39 21.31 14.558-10.278 43.303-17.272 76.39-17.272" fill="#B5CB88"/><g transform="translate(102 146)"><mask id="d" fill="#fff"><use xlink:href="#c"/></mask><path d="M145.956 28.306c-56.672 0-105.907 7.595-130.842 18.756C36.458 33.475 86.994 23.92 145.956 23.92c58.963 0 109.5 9.556 130.843 23.143-24.937-11.16-74.17-18.756-130.843-18.756m69.48 26.622c-4.413 2.168-9.05 1.749-10.362-.937-1.308-2.684 1.205-6.62 5.617-8.787 4.412-2.166 9.05-1.745 10.36.94 1.31 2.683-1.204 6.618-5.616 8.784m-69.479 36.038c-33.854 0-61.301-7.914-61.301-17.676 0-9.762 27.447-17.678 61.301-17.678 33.855 0 61.302 7.916 61.302 17.678s-27.447 17.676-61.302 17.676m54.659 2.678c-.498 1.453-2.839 1.968-5.228 1.145-2.39-.822-3.925-2.668-3.43-4.122.498-1.455 2.839-1.966 5.23-1.145 2.389.821 3.924 2.665 3.428 4.122m-100.66 0c-.497 1.453-2.838 1.968-5.227 1.145-2.39-.822-3.926-2.668-3.43-4.122.5-1.455 2.837-1.966 5.228-1.145 2.39.821 3.927 2.665 3.43 4.122M77.101 55.188c-4.647-1.597-7.631-5.186-6.667-8.015.967-2.828 5.517-3.826 10.163-2.228 4.648 1.597 7.632 5.187 6.666 8.014-.966 2.828-5.515 3.828-10.162 2.23m148.591-28.937C214.793 11.05 183.223.056 145.956.056 108.689.056 77.12 11.05 66.22 26.252 26.35 33.765 0 46.746 0 61.505c0 23.244 65.347 42.089 145.956 42.089 80.61 0 145.957-18.845 145.957-42.09 0-14.758-26.351-27.739-66.22-35.252" fill="#FEFEFE" mask="url(#d)"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1 @@
<svg width="512" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255-33L476 95v256L255 479 34 351V95z"/><path id="c" d="M0 0h132.6v218.216H0z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#84A939" transform="rotate(30 255 223)" xlink:href="#a"/><g mask="url(#b)"><g transform="translate(181.645 120)"><mask id="d" fill="#fff"><use xlink:href="#c"/></mask><path d="M11.221 66.902C6.636 33.096 34.24 9.57 62.304 9.57c.985 0 1.966.033 2.945.091-26.822 5.83-50.335 27.206-54.028 57.242M67.378.001C30.569 0-5.633 32.784.733 79.817c3.475 25.675 37.881 81.413 65.736 83.034a.02.02 0 0 1-.004.01c-.257.111-.492.482-.524.857-.001-.006-.005-.01-.005-.017a1.132 1.132 0 0 0 .003.205.84.84 0 0 0 .04.173c-.582 1.261-1.33 2.487-1.804 4.159-.67 2.366 3.474 5.2 7.465 2.42 2.523-1.76-1.758-3.08-1.977-4.84a9.117 9.117 0 0 0-.116-.674c3.67 2.972 10.917 10.466 7.945 21.534-1.91 7.111-5.973 11.194-9.56 14.794-4.17 4.19-8.109 8.146-6.837 15.37a1.662 1.662 0 0 0 1.924 1.349 1.664 1.664 0 0 0 1.346-1.927c-.972-5.52 1.918-8.423 5.919-12.442 3.687-3.702 8.275-8.311 10.415-16.28 3.49-12.99-5.024-21.714-9.236-25.105 27.033-5.322 57.021-57.103 60.365-81.804C138.19 33.6 104.183.001 67.378.001" fill="#FEFEFE" mask="url(#d)"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#84A939" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)" fill="#FEFEFE"><path d="M230.035 250.385c.86.402 1.793.598 2.712.593a6.087 6.087 0 0 0 2.66-.63c1.828-.903 3.288-2.82 3.642-5.787-.02-.147-.024-.306-.039-.458h-12.88c-.013.143-.01.303-.026.445.408 2.984 1.992 4.939 3.931 5.837M237.234 99h-12.187c-23.28 13.57-56.759 56.364.884 141.217h11.366c-30.487-66-23.202-120.912-.063-141.217zM259.063 99h12.187c23.28 13.57 56.891 56.364-.751 141.217h-12.167c30.487-66 23.87-120.912.73-141.217zM273.348 244.102c-.01.12-.007.25-.022.363.407 2.987 1.993 4.944 3.93 5.842.863.402 1.794.601 2.713.594a6.115 6.115 0 0 0 2.662-.628 5.906 5.906 0 0 0 1.59-1.179c.157-.176.314-.36.472-.538.85-1.094 1.448-2.571 1.607-4.454h-12.952zM223.388 244.34l-.02-.237h-12.902c.04.311.1.603.165.89a728.456 728.456 0 0 0 4.557 5.28c.63.199 1.277.333 1.924.329a6.091 6.091 0 0 0 2.662-.628c1.795-.887 3.228-2.76 3.614-5.633M245.652 250.096a6.352 6.352 0 0 0 2.711.593 6.138 6.138 0 0 0 2.666-.63c1.859-.92 3.337-2.896 3.654-5.957h-12.897c-.009.129-.013.261-.022.387.455 2.85 2.003 4.73 3.888 5.607M284.012 96.298c-10.502-4.528-22.225-7.073-34.6-7.073-12.373 0-24.095 2.545-34.597 7.073h69.197z"/><path d="M220.209 240.285c-70.207-81.191-29.736-127.722-2.779-141.217h-9.395C184.08 112.061 168 135.971 168 163.328c0 25.886 19.326 53.366 39.087 76.957h13.122zM277 240.285c70.207-81.191 29.736-127.722 2.778-141.217h9.395c23.957 12.993 40.036 36.903 40.036 64.26 0 25.886-19.326 53.366-39.087 76.957H277zM237.045 278.261l2.188-15.376h2.898v4.38h14.439v-4.38h3.45l2.183 15.376h-25.158zm-.603 27.055l2.329-20.592h3.614l2.059 16.025 14.905 5.014-22.907-.447zm43.804-51.73c-.09.002-.177.016-.267.016a9.026 9.026 0 0 1-3.852-.839c-1.689-.784-3.168-2.126-4.188-3.978-.942 1.62-2.257 2.798-3.746 3.535a8.84 8.84 0 0 1-3.846.903 9.036 9.036 0 0 1-3.853-.835c-1.71-.795-3.205-2.163-4.225-4.051-.95 1.929-2.381 3.323-4.049 4.146a8.76 8.76 0 0 1-3.843.906 9.04 9.04 0 0 1-3.857-.838c-1.587-.739-2.997-1.963-4.008-3.646-.95 1.785-2.326 3.083-3.91 3.867a8.782 8.782 0 0 1-3.845.905 9.006 9.006 0 0 1-3.855-.836c-1.687-.785-3.166-2.13-4.186-3.98-.94 1.62-2.256 2.8-3.747 3.536a8.74 8.74 0 0 1-3.173.862c2.917 3.326 5.77 6.544 8.484 9.626h10.363l-2.185 15.376h-4.61v6.463h3.426l-3.516 21.696h.03l3.911 4.67h31.626l3.913-4.67h.008v-.009l.01-.012h-.015l-3.508-21.675h2.891v-6.463h-3.833l-2.186-15.376h9.33c2.664-2.983 5.457-6.092 8.311-9.3zM248.011 99h5.029c16.71 35.173 10.995 57.883 1.544 141.217h-12.886c-10.733-70.609-14.48-113.26 1.544-141.217h4.769z"/><path d="M261.625 249.933a6.384 6.384 0 0 0 2.71.592 6.17 6.17 0 0 0 2.664-.628c1.793-.888 3.225-2.76 3.61-5.636l-.013-.159h-4.205c-.011.025-.02.05-.032.075l-.172-.075h-8.494c.412 2.978 1.995 4.93 3.932 5.831"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#84A939" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)" fill="#FEFEFE"><path d="M126 146l94.405 71.42-38.172-25.45-27.501-3.282 95.226 49.254-28.733 91.941 37.763-51.306-17.24 4.515 87.017-41.867 8.209-41.045 2.463 10.67 30.373-3.282-29.553-20.111-40.225 15.186 18.881 26.269-64.852-66.494z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 637 B

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/><path id="c" d="M0 0h218.936v174.69H0z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#84A939" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)"><g transform="translate(124 138)"><mask id="d" fill="#fff"><use xlink:href="#c"/></mask><path d="M104.134 27.903L5.11 0l-.592.604 97.681 29.448 87.491 33.51L4.473.651 0 5.219l100.81 83.795-39.555 15.02 46.152-9.598L218.08 70.762l.02.055-72.984 20.65-6.912 36.332 17.764 10.131c.265-6.47-6.641-9.97-5.288-17.874a31.598 31.598 0 0 0 1.546-2.977l.12.018a8.186 8.186 0 0 0 2.182-16.225 8.147 8.147 0 0 0-6.094 1.646 8.12 8.12 0 0 1 6.565-2.006c.27.035.532.087.794.139l-1.385-11.538 2.93-.353 1.561 12.991c6.621 3.448 8.733 12.552 1.896 15.793l3.072 25.581.35 2.918-2.55-1.456-7.14-4.072-.178.06c-.01-.006-.019-.015-.029-.021l.173-.059-18.673-10.648-.916-.524.197-1.033 6.836-35.923-31.345 8.87 10.75 16.354c-6.477 5.957-3.536 3.9-10.95 9.05l-15.685 4.519c-1.989 5.116-9.56 10.71 3.271 13.775 14.892-5.856 18.646-6.024 32.718-13.112l27.452 41.764 12.621 1.104 21.208-35.327 26.96-68.784-114.803-42.677z" fill="#FEFEFE" mask="url(#d)"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#84A939" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)" fill="#FEFEFE"><path d="M235.643 286.994c-7.337-3.551-12.277-8.112-15.098-13.57l-116.648-18.373-4.258-23.658 13.038 4.518 10.197 14.959-4.824 2.328 99.665 9.536c-.513-9.03 2.799-19.675 9.271-31.656-1.464 20.596 1.8 37.705 15.463 47.156 23.486 6.045 48.729 7.994 74.61 8.465-28.956 4.908-55.646 3.822-81.416.295zm69.532-27.415l-9.773-8.359-33.12-.45-10.792-3.35 2.282-14.323 57.564 4.523c-14.163-9.303-33.081-17.106-50.387-19.464v-5.573l.071-.34 147.07-6.467-19.661-7.346-126.49 9.388 2.19-10.52h-15.855l1.777 10.453-125.741-9.33-19.66 7.344 146.156 6.427.067.391v4.842c-.049 0-.098-.004-.145-.004-29.507 0-40.107 20.221-42.641 37.652l-79.63-4.934-9.978-19.48-29.413-6.494 4.3 32.913-4.3.502v9.3l42.598 6.01 86.112 18.034h10.441a78.766 78.766 0 0 0 5.452 2.24l1.33 8.006c-2.342 1.298-3.945 3.766-3.945 6.631a7.612 7.612 0 0 0 15.222 0c0-3.778-2.76-6.89-6.366-7.486l-.9-5.403c17.834 5.241 39.833 5.613 67.932 2.156l-.573 3.444c-3.433.736-6.01 3.781-6.01 7.435a7.611 7.611 0 1 0 15.22 0c0-2.995-1.747-5.563-4.265-6.803l.841-5.07 5.734-5.15h5.136c6.532-7.727 10.336-8.41 10.336-26.918 0-1.424-.303-2.907-.843-4.427h-27.343zM223.91 109.559c4.673-.533 9.103.431 13.206 2.575 1.986 1.039 2.466.165 2.88-1.414 2.241-3.537 4.34-7.236 8.198-9.306 11.677-6.263 26.247.19 30.135 13.27 1.77 5.957 1.12 11.827-.688 17.605-1.005 3.22-2.371 6.327-3.573 9.483-4.357 9.065-9.837 17.545-13.952 26.727-.854 1.906-1.6 1.957-3.322 1.064-2.773-1.438-5.53-2.964-8.534-3.923-4.288-1.848-8.602-3.644-12.86-5.56-6.696-3.015-13.344-6.187-18.823-11.203-7.401-6.774-10.928-14.974-7.87-25 2.305-7.555 7.88-11.94 15.204-14.318"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1 @@
<svg width="512" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255-33L476 95v256L255 479 34 351V95z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#84A939" transform="rotate(30 255 223)" xlink:href="#a"/><g mask="url(#b)" fill="#FEFEFE"><path d="M128.748 228.578l61.936 31.273 188.772-121.85zM215.634 274.035l-14.938 27.141 24.659-22.233zM217.273 271.672l70.296 35.496L382.634 138z"/><path d="M217.495 267.595L358.438 153.66 190.882 264.248l5.072 37.632 16.98-30.852 4.563-3.434z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 654 B

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/><path id="c" d="M0 0h280.118v187.763H0z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#1E70B7" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)"><g transform="translate(108 134)"><mask id="d" fill="#fff"><use xlink:href="#c"/></mask><path d="M163.39 149.606c-15.27-3.601-29.887-9.802-42.72-18.873 27.116 9.276 59.092 11.735 86.94 4.313 5.732 9.119 12.64 13.725 19.001 17.29 3.803 2.266 5.487 3.529 6.159 6.883l.958 4.714c.827 4.517-.43 6.509-3.67 8.897l-4.463 3.087c-5.162 3.798-5.112 11.852 2.063 11.846h21.003c7.333-.043 15.421-8.131 17.356-16.9l13.312-76.946c4.428-27.484-10.356-51.243-29.436-68.604C229.875 7.108 203.244-5.11 177.288 2.105 133.059 14.76 125.194 3.303 106.21 3.8c-12.501.33-18.655 3.835-29.956 8.434-9.583 3.902-19.977 6.67-29.195 11.133 4.37-5.153 9.852-9.154 15.82-12.316-3.005-4.873-11.102-6.727-14.773-3.955-4.665 3.508-8.828 13.264-7.669 19.958-3.305 2.128-6.357 4.614-9.042 7.629-6.095 6.848-8.07 13.003-8.703 16.488-.556 2.559-.892 3.309-2.648 4.437L2.633 66.225c-2.825 1.8-3.648 5.47-1.12 9.4 7.115 11.115 18.142 9.597 23.066 8.214 2.105-.551 2.823-.201 3.986 1.183 4.264 4.786 14.15 8.82 28.89 6.746 4.917-.653 8.087 2.192 7.681 7.185L60.73 154.9c-1.517 10.845-3.575 14.505-11.227 16.699l-15.68 4.317c-6.09 2.032-8.685 11.852-.744 11.846h34.72c6.472-.155 11.16-1.741 15.407-6.341 16.097-17.618 20.644-41.42 26.332-53.78 14.2 12.144 29.457 23.05 33.438 32.4 1.971 4.63.537 9.656-4.626 12.454-4.123 2.115-4.885 10.306 2.794 9.585l18.273-.01c5.423-.116 7.822-4.267 7.524-11.521-.305-6.631-1.65-13.762-3.55-20.944" fill="#FEFEFE" mask="url(#d)"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#1E70B7" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)" fill="#FEFEFE"><path d="M194.65 255.66c4.047 4.982 9.571 3.188 15.086-1.194 8.055-6.402 16.476-17.269 19.764-26.627 2.495-7.093.732-16.373-5.516-20.253-6.478-4.02-13.564.416-16.274 5.952-4.439 9.062-6.906 12.694-13.617 18.74-7.817 6.823-6.24 14.631.557 23.381zm107.461 0c6.797-8.75 8.374-16.559.558-23.382-6.712-6.046-9.178-9.678-13.614-18.74-2.713-5.536-9.796-9.972-16.277-5.952-6.248 3.88-8.011 13.16-5.517 20.253 3.288 9.358 11.709 20.225 19.765 26.627 5.515 4.382 11.041 6.176 15.085 1.193zm-27.558-26.665c4.408 4.596 13.593 2.09 12.798-5.04-.078-.677-.316-1.14-.681-1.583-5.136-6.53-10.59-4.72-12.941 2.797-.51 1.73.058 3.004.824 3.826zm-52.345 0c.766-.822 1.338-2.097.828-3.822-2.354-7.522-7.808-9.332-12.944-2.8-.366.442-.604.905-.682 1.581-.795 7.13 8.393 9.637 12.798 5.041zm-46.864-42.102a134.897 134.897 0 0 1 11.14-16.112c5.049-6.26 10.538-11.57 16.521-15.894l-3.069-3.96c-12.943-16.678-35.918 14.46-24.592 35.966zm118.413-32.006c5.982 4.323 11.472 9.633 16.523 15.894a135.717 135.717 0 0 1 11.14 16.112c11.326-21.507-11.652-52.644-24.595-35.966l-3.068 3.96zm-12.793 148.086c-9.533 6.024-22.681 7.08-32.584-.319-9.899 7.4-23.05 6.343-32.584.32 11.038 26.404 54.131 26.404 65.168 0zm-77.322-162.669c-17.905-23.078-50.233 22.52-30.874 51.153-6.196 11.49-10.812 24.013-13.066 36.701-1.673 4.842-5.068 10.247-8.702 12.538 0 0 3.541 1.435 7.232 1.614.023 3.57.214 6.986.558 10.262-.592 3.486-1.754 6.857-3.452 9.046 0 0 2.194.077 4.793-.356 1.887 9.088 5.145 16.903 9.583 23.556 1.129 3.366 1.695 6.9 1.225 9.64 0 0 2.069-1.012 4.214-2.693.309.336.619.67.936 1.001 2.25 4.433 4.814 11.088 2.906 15.704 0 0 6.777-1.493 9.759-5.2 1.319 2.512 2.001 5.115 1.247 7.41 0 0 2.882-1.73 5.193-4.288 5.679 2.733 11.894 4.871 18.563 6.465-1.526-3.76-2.325-8.128-2.168-13.093-4.717-4.3-7.891-10.057-8.221-16.612-.381-7.577 1.707-13.788 5.644-19.447-.755 2.826-1.166 5.664-1.121 8.508.147 11.827 6.973 20.626 15.905 24.124 8.105 3.18 17.946 1.991 23.146-5.26-.971-.228-1.944-.68-2.916-1.363-5.113-3.562-11.209-5.599-14.235-9.004-2.945-3.307-2.691-8.974 2.608-9.427 3.835-.332 9.649 1.588 15.981 1.588 6.334 0 12.144-1.92 15.984-1.588 5.298.453 5.548 6.12 2.606 9.427-3.029 3.405-9.124 5.442-14.235 9.004-.972.682-1.945 1.135-2.916 1.362 5.201 7.252 15.041 8.44 23.147 5.261 8.93-3.498 15.757-12.297 15.908-24.124.044-2.909-.388-5.813-1.179-8.704 3.995 5.714 6.083 11.978 5.698 19.643-.328 6.555-3.5 12.311-8.219 16.612.159 4.965-.643 9.33-2.17 13.09 6.669-1.594 12.884-3.729 18.564-6.462 2.31 2.558 5.196 4.287 5.196 4.287-.757-2.294-.072-4.897 1.243-7.407 2.986 3.705 9.759 5.198 9.759 5.198-1.907-4.616.657-11.27 2.907-15.704.317-.327.626-.662.936-1 2.141 1.68 4.213 2.692 4.213 2.692-.47-2.74.097-6.274 1.224-9.64 4.443-6.648 7.7-14.468 9.584-23.556 2.599.436 4.793.356 4.793.356-1.698-2.189-2.86-5.555-3.452-9.044.345-3.276.536-6.692.561-10.264 3.688-.179 7.229-1.612 7.229-1.612-3.634-2.293-7.029-7.698-8.702-12.54-2.254-12.688-6.87-25.21-13.065-36.7 19.358-28.634-12.97-74.232-30.875-51.154l-7.396 9.534c-10.869-5.877-23.226-8.89-37.343-8.89-14.113 0-26.473 3.013-37.341 8.89l-7.397-9.534z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/><path id="c" d="M0 0h170.423v190.223H0z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#1E70B7" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)"><g transform="translate(163 133)"><mask id="d" fill="#fff"><use xlink:href="#c"/></mask><path d="M166.489 131.825c-1.473-1.058-3.205-1.59-5.055-1.64-.457 6.738-2.37 13.122-5.414 19.051.17-3.725.102-7.574.139-11.43.365-38.024-25.043-68.757-55.531-70.73-15.427-.998-24.246-2.62-32.522-17.258-4.209-7.476-8.694-13.01-14.506-15.995 5.49.17 9.962 1.896 13.843 4.935 7.902-9.387 12.119-22.148 11.271-34.633-.266-3.669-2.423-4.599-5.458-3.92C55.139 4.406 48.259 17.56 45.958 31.511c-2.137-.257-4.432-.262-6.922.011-18.57 2.036-29.837 12.815-38.007 30.464-6.125 13.231 16.172 29.308 38.519 26.05-4.534 3.588-11.775 5.888-19.235 6.687 3.513 34.395 5.22 55.208 23.367 73.087 2.47 2.45 1.558 5.335-1.846 5.937-7.459 1.338-16.863 4.724-16.792 13.26.079 2.416 1.348 3.198 3.909 3.216h30.665c6.359.03 9.516-1.617 12.461-6.109 5.481-9.447 7.894-13.456 21.287-15.267 4.308-.58 5.463-3.02 4.227-7.052-10.239-33.426 12.827-44.218 29.58-42.314-14.528 2.398-33.529 13.087-21.94 46.98 1.143 3.323.858 6.253-3.664 6.865-7.692.985-19.784 4.091-19.534 13.88.126 2.27 1.351 2.985 3.49 3.017h30.7c7-.122 9.536-2.118 12.4-6.023 5.81-8.472 13.706-8.113 19.675-13.87 3.003-2.897 4.851-6.236 5.996-9.864 4.231-.685 8.758-3.59 12.054-8.185 5.377-7.5 5.442-16.658.141-20.456" fill="#FEFEFE" mask="url(#d)"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/><path id="c" d="M96 134h304.563v187.156H96z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#1E70B7" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)"><mask id="d" fill="#fff"><use xlink:href="#c"/></mask><path d="M233.572 271.01c-6.76-4.6-11.25-9.185-15.986-13.274 3.792 1.377 8.023 3.209 13.55 5.875 4.745 2.288 10.686 2.315 14.2-3.954 6.953-12.513 6.215-24.384 2.593-35.755 7.358 12.029 11.76 24.825 3.788 39.516 24.56 8.805 51.835 8.101 80.266-2.195-10.935-20.436-10.743-44.23-1.969-63.405-5.608 24.92.452 53.337 22.912 72.526 3.892 3.067 10.577 7.094 19.964 2.115 3.8-2.017 7.911-5.055 11.643-8.464-6.773 10.094-16.673 16.925-26.168 17.712.62 5.349 1.587 9.12 4.62 10.944 1.496.913 1.996 2.159 1.705 4.097l-1.14 7.26c-.613 3.047-1.516 4.663-4.944 5.458-13.168 3.534-10.77 11.695-3.248 11.69h15.154c5.555-.036 7.675-2.274 9.697-5.745l10.8-20.05c2.724-5.373 3.196-9.243 1.618-16.325l-3.724-12.733c-.969-3.3-.899-5.469 1.3-8.149 4.538-5.501 6.385-10.606 7.854-19.371 1.993-12.962 4.435-36.15.066-53.626-5.476-29.484-25.04-49.834-55.373-44.32-58.384 12.407-79.885-1.403-97.514-3.75-21.65-2.876-31.163 8.51-54.29 18.17 6.589-7.674 4.7-17.8 4.358-21.257-17.537.597-19.418 11.694-22.262 24.364-7.197-.895-12.441 2.044-14.888 10.181-6.707 19.633-21.913 21.532-29.577 20.886-1.769-.16-3.044-.723-4.335-2.073-3.484-3.843-5-9.245-4.752-17.793.144-2.482-2.28-2.809-4.11-1.32-4.522 3.993-9.938 13.102-11.465 27.708-.33 2.956-.517 3.703-2.258 6.166-3.195 4.77-5.135 10.542-5.635 16.787-.1 1.517.113 2.431 1.218 3.599 3.305 3.358 7.055 4.495 11.96 4.276 2.502-.089 3.088.005 4.891 1.84 12.791 13.16 20.004 6.143 42.201 8.222 22.875 2.137 39.078-5.802 46.26-22.102-1.034 12.313-6.938 22.012-17.133 28.431 2.766 4.267 6.674 7.578 13.054 9.51 1.803.57 2.582 1.412 2.535 3.635-.1 11.664 1.936 19.135 3.291 26.036 1.909 10.214 4.25 24.27-7.288 27.113-13.167 3.534-10.773 11.695-3.246 11.69h15.153c5.552-.094 9.04-1.625 9.691-5.745 1.826-11.108 3.626-14.96 7.916-24.43 2.928-6.469 5.201-12.769 7.047-19.97" fill="#FEFEFE" mask="url(#d)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/><path id="c" d="M149 133h197.237v189.77H149z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#1E70B7" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)"><mask id="d" fill="#fff"><use xlink:href="#c"/></mask><path d="M271.983 301.966c-8.364.88-17.497-1.828-24.363-9.108-6.87 7.276-16.007 9.988-24.373 9.113-9.277 7.49-8.469 20.8 4.571 20.8h39.6c13.044 0 13.847-13.317 4.565-20.805m-5.28-75.342c-.039 1.26 1.02 1.754 2.108 1.212 8.188-4.17 15.895-2.294 20.334-18.03.253-.933-.016-1.463-1.016-1.665-4.606-.938-11.352-2.32-15.98 1.017-4.78 3.45-5.047 11.206-5.446 17.466m-38.173 0c-.399-6.26-.663-14.016-5.447-17.466-4.624-3.337-11.37-1.955-15.975-1.017-1 .202-1.27.732-1.018 1.665 4.44 15.736 12.148 13.86 20.334 18.03 1.09.542 2.15.048 2.106-1.212m19.087-52.888c10.23 0 20.464 1.781 30.69 5.34 2.265.695 3.222-1.32 1.772-2.685-9.789-8.417-21.04-12.329-32.462-12.26-11.42-.069-22.672 3.843-32.46 12.26-1.449 1.365-.494 3.38 1.771 2.685 10.227-3.559 20.458-5.34 30.69-5.34m-25.682 22.118c14.401-3.159 36.964-3.159 51.363 0 2.24.462 2.76-1.326 1.487-2.249-14.989-10.87-39.347-10.87-54.335 0-1.274.923-.754 2.711 1.485 2.25m84.907 91.212c18.226-11.169 27.342-44.08 6.566-76.568-1.112-1.646-3.009-.658-2.366 1.69 5.31 18.81 9.856 44.55-6.773 72.111-1.37 2.442.575 3.904 2.573 2.767m-118.45 0c1.997 1.137 3.945-.325 2.572-2.767-16.632-27.562-12.082-53.302-6.77-72.112.642-2.347-1.256-3.335-2.368-1.689-20.778 32.487-11.66 65.4 6.565 76.568m109.691-72.166c-1.47-1.436-3.266-.266-2.617 1.638 4.863 13.282 5.382 21.047 2.34 34.861-.702 3.111 2.083 4.15 3.734 2.05 8.518-11.839 6.568-27.957-3.457-38.549m-100.929 0c-10.029 10.592-11.98 26.71-3.459 38.548 1.652 2.101 4.436 1.062 3.731-2.049-3.038-13.814-2.519-21.579 2.344-34.86.65-1.905-1.148-3.075-2.616-1.639m10.684 99.41c-.587-4.866 2.393-10.63 8.83-13.823-7.377-2.622-13.304-8.265-15.13-16.082-3.725-15.93 2.586-27.452 9.781-36.574-3.448 8.332-6.012 17.802-4.478 28.098 2.651 17.814 23.762 22.192 38.972 4.347a5.937 5.937 0 0 1-1.229-.718l-10.733-8.355c-4.53-3.792.198-11.802 7.68-8.432 1.526.658 2.075 1.026 3.837 1.01h4.5c1.761.016 2.31-.352 3.838-1.01 7.478-3.37 12.21 4.64 7.68 8.432l-10.738 8.355a5.855 5.855 0 0 1-1.224.718c15.205 17.85 36.32 13.472 38.971-4.347 1.525-10.234-1.002-19.658-4.42-27.952 7.173 9.168 13.435 20.724 9.721 36.428-1.847 7.811-7.772 13.453-15.142 16.076 6.448 3.19 9.431 8.96 8.84 13.83 13.604-4.805 25.07-12.445 33.402-23.119 3.515 2.727 7.033 8.127 8.982 16.097 7.267-11.59 5.723-25.319 2.934-33.122 2.974 1.391 6.955 5.561 9.13 12.083 4.117-12.372 1.098-24.299-4.144-31.306 3.438.722 6.39 3.253 8.212 6.202 1.823-13.045-4.316-26.077-10.38-32.4 2.431.021 5.142 1.17 6.873 2.732-3.695-15.869-13.086-25.616-16.297-28.566a100.124 100.124 0 0 0-5.95-10.615c-3.995-5.673-3.172-11.237 1.441-15.836 18.95-19.27-6.892-57.465-26.66-38.16l-10.595 10.768c-5.095 5.18-9.29 6.324-16.369 4.498a82.25 82.25 0 0 0-20.356-2.532c-7.098 0-13.9.887-20.354 2.532-7.079 1.826-11.274.682-16.37-4.498l-10.598-10.769c-19.765-19.304-45.61 18.89-26.657 38.161 4.615 4.6 5.436 10.163 1.443 15.836a98.73 98.73 0 0 0-5.95 10.615c-3.21 2.95-12.603 12.697-16.298 28.566 1.728-1.563 4.443-2.71 6.873-2.733-6.064 6.324-12.203 19.356-10.38 32.401 1.824-2.949 4.774-5.48 8.213-6.202-5.245 7.007-8.26 18.934-4.148 31.306 2.178-6.522 6.156-10.692 9.13-12.083-2.789 7.803-4.329 21.532 2.934 33.122 1.953-7.97 5.47-13.37 8.985-16.097 8.334 10.67 19.795 18.314 33.398 23.118" fill="#FEFEFE" mask="url(#d)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#1E70B7" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)" fill="#FEFEFE"><path d="M188.74 245.033c-3.953 0-7.161 1.979-7.161 4.426 0 2.444 3.208 4.427 7.162 4.427 3.954 0 7.161-1.983 7.161-4.427 0-2.447-3.207-4.426-7.161-4.426m21.144 8.09c-7.708-.69-10.217 6.19-21.144 6.19-10.924 0-13.433-6.88-21.144-6.19 5.133 3.257 8.929 12.703 21.144 12.703 12.215 0 16.018-9.446 21.144-12.703m147.05-30.274c2.975-9.662 5.02-12.315 11.313-17.998 31.238-27.646 30.43-51.658 24.545-70.851-5.557 18.187-33.065 4.357-40.66 28.398-13.773-21.315-34.758.35-49.452-13.277 1.532 27.69 25.526 33.642 38.183 48.287 4.444 5.152 3.989 11.73-1.956 15.517-49.149 31.406-100.128 1.906-149.571 1.017-29.169-.523-58.305 6.71-79.76 14.678-9.511 3.825-11.391 10.684-8.035 19.454 13.923 32.119 49.884 52.038 90.795 58.184-16.337.539-32.45-1.076-47.332-4.852-5.706 5.575-12.046 11.423-19.477 17.533 32.45 7.447 57.723.387 78.558-11.304a189.342 189.342 0 0 0 40.502-.944c32.71 10.862 73.437 22.47 117.684-7.714-51.504-16.794-68.083-38.293-121.901-33.977 30.804-9.268 54.943-2.28 83.925 7.978 14.89-12.964 26.424-29.613 32.64-50.129"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M255.5-33L477 95v256L255.5 479 34 351V95z"/><path id="c" d="M0 0h197.01v186.749H0z"/></defs><g transform="translate(1 -1)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#1E70B7" transform="rotate(30 255.5 223)" xlink:href="#a"/><g mask="url(#b)"><g transform="translate(149 135)"><mask id="d" fill="#fff"><use xlink:href="#c"/></mask><path d="M49.467 17.814c-5.418-4.322-11.367-7.31-17.501-7.373-4.208-.017-5.188-.143-7.916-2.47C19.304 3.894 16.122 1.23 11.564.16 9.108-.35 8.214.324 7.7 2.604c-1.15 5.252-2.128 7.936-.598 15.377.496 2.086-1.204 2.514-3.507 1.135-3.663-2.276-5.075 3.447-1.612 7.282 3.112 3.439 7.559 6.192 8.223 15.72.26 3.761.578 6.618.995 9.014.483 2.634.568 3.038.113 5.636-3.691 19.968 4.455 21.12 9.908 33.044 4.086 8.933 8.75 17.055 14.4 22.549 2.416 2.293 3.74 3.88 5.048 7.015 4.922 11.494 9.567 28.374 8.574 50.046-.3 6.38-3.776 10.275-10.251 8.8-3.782-.86-7.311.24-7.3 4.123.006 1.734.618 4.185 3.927 4.405h14.67c3.519-.014 6.028-1.376 7.004-4.792 5.766-21.198 7.343-36.803 8.017-52.548.4-6.025 2.717-9.076 9.089-9.544 15.108-.951 32.244-3.475 46.518-6.29-2.863-9.972-4.225-20.618-2.973-33.955 4.204 27.358 11.447 31.555 28.017 55.235 8.376 11.97 7.227 30.77-4.102 41.189-.913.84-1.938 1.534-3.082 1.988-2.16.862-2.996.672-5.11.189-3.78-.858-7.31.24-7.3 4.123.008 1.734.618 4.185 3.927 4.405h14.67c3.53-.053 5.39-1.316 6.736-3.811l13.022-24.778c3.375-6.477 2.747-11.292-.021-17.974-1.057-2.462-2.313-6.117-3.357-9.33-1.78-5.84-.413-9.097 2.269-13.242 4.059-6.362 10.075-10.92 14.302-20.597-.55 6.769-3.346 12.22-6.521 17.24-3.15 5.21-3.77 8.492-2.05 14.373 3.522 12.064 7.018 22.587 8.536 26.661 3.067 7.749 7.642 9.631 10.662 12.84 1.363 1.376 2.358 1.154 3.126-.572 1.67-4.08 5.263-7.486 5.34-15.825-.115-7.849-1.454-36.989-6.296-61.132-5.165-25.71-17.168-45.135-48.56-44.38-23.8.995-50.62 5.209-69.908-6.633-7.2 7.161-16.35 8.217-25.05 2.631 9.129 2.359 17.167-1.261 22.149-9.938 1.434-2.602 1.067-5.016-1.773-6.18l-13.266-5.427c-1.73-.726-3.018-1.351-4.84-2.862" fill="#FEFEFE" mask="url(#d)"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="#AD245D" d="M384.5.297L512.325 221.9l-128 221.702-255.825.102L.675 222.1 128.675.4z"/><path d="M35.01 367.726c-.08-21.169-.205-53.162 21.257-71.332 3.817-3.253 9.93-7.497 17.321-9.224 2.575-.523 4.956-.756 7.262-.979 4.438-.431 8.27-.804 12.054-2.9l4.954-2.846c9.87-5.655 19.194-10.996 28.226-17.377 5.085-3.632 6.726-15.73 6.095-25.428-.214-2.792-1.893-5.7-3.67-8.777-1.097-1.901-2.232-3.867-3.065-5.916l-.073-.199a56.976 56.976 0 0 1-.422-1.443c-1.195-4.205-1.933-6.378-2.386-7.476-7.029-.944-11.8-8.647-12.888-21.006l-.031-.557c-.645-12.785.808-16.13 2.316-17.716.24-.254.505-.475.783-.666-1.754-16.051 3.115-32.521 13.358-44.704 9.314-11.079 21.955-17.18 35.592-17.18 3.73 0 7.55.458 11.355 1.362 25.63 6.228 41.679 30.27 40.062 59.227.53.251 1.018.61 1.44 1.066 2.752 2.964 2.47 10.97 2.22 14.276l-.024.41c-.335 5.236-.684 10.65-3.052 15.73-1.739 3.918-4.405 6.242-6.76 8.29-2.396 2.089-4.288 3.735-5.294 6.885-.7 2.416-1.645 4.866-2.559 7.235-1.752 4.538-3.407 8.827-3.54 13.244-.427 10.222 1.17 18.391 4.172 21.359 5.097 5.163 13.003 9.391 19.978 13.121 1.6.855 3.166 1.692 4.654 2.517 9.28 5.052 16.07 7.915 25.309 8.557 9.118.849 18.056 5.193 24.754 11.97.736.641 1.82 1.744 3.694 3.648 4.416 4.492 4.416 4.492 4.426 5.852l.007.758c10.783 17.702 11.14 40.656 11.415 58.169l.05 3.28-3.278.028c-42.05.363-84.058.677-126.058.993-42.12.314-84.232.632-126.367.994l-3.273.029-.014-3.274zM329.011 135.763a5.232 5.232 0 0 0-5.223 5.23 5.232 5.232 0 0 0 5.223 5.23 5.236 5.236 0 0 0 5.231-5.23 5.236 5.236 0 0 0-5.23-5.23m0 40.237C309.705 176 294 160.297 294 140.993 294 121.698 309.706 106 329.011 106 348.303 106 364 121.698 364 140.993 364 160.297 348.303 176 329.011 176" fill="#FFF"/><path d="M330.511 101C308.173 101 290 119.164 290 141.492 290 163.828 308.173 182 330.511 182 352.836 182 371 163.828 371 141.492 371 119.164 352.836 101 330.511 101m0 51.022c5.823 0 10.531-4.716 10.531-10.53a10.517 10.517 0 0 0-10.53-10.529 10.51 10.51 0 0 0-10.523 10.529c0 5.814 4.7 10.53 10.522 10.53m0-40.496c16.563 0 29.963 13.406 29.963 29.966 0 16.555-13.4 29.982-29.963 29.982-16.555 0-29.985-13.427-29.985-29.982 0-16.56 13.43-29.966 29.985-29.966" fill="#AD245D"/><path d="M331 106.209c-20.305 0-36.825 16.06-36.825 35.799 0 19.747 16.52 35.813 36.825 35.813 20.306 0 36.827-16.066 36.827-35.813 0-19.74-16.521-35.8-36.827-35.8zM314.287 215l-4.11-21.345c-.324-.129-.648-.265-.972-.404l-18.012 12.169-23.607-23.609 12.186-18.009a63.31 63.31 0 0 1-.403-.968L258 158.712v-33.383l21.361-4.13c.131-.327.267-.652.407-.979l-12.18-18.025 23.608-23.612 18.015 12.198c.322-.137.643-.27.964-.4L314.287 69h33.416l4.13 21.387c.319.13.638.26.956.396l18.024-12.2 23.608 23.612-12.186 18.031c.139.324.273.648.402.971L404 125.33v33.381l-21.37 4.124c-.13.32-.262.64-.398.96l12.19 18.017-23.606 23.609-18.021-12.171c-.32.137-.642.27-.964.402L347.701 215h-33.414z" fill="#FFF"/><path d="M330 171.448c-17.342 0-31.45-13.656-31.45-30.44 0-16.778 14.108-30.427 31.45-30.427 17.341 0 31.449 13.649 31.449 30.426 0 16.785-14.108 30.441-31.45 30.441zM350.979 63h-41.97l-1.64 8.517-1.953 10.156-8.55-5.788-7.18-4.862-6.132 6.132-17.399 17.4-6.126 6.126 4.85 7.178 5.8 8.583-10.173 1.966-8.506 1.646v41.932l8.51 1.643 10.16 1.962-5.787 8.553-4.858 7.179 6.13 6.13 17.399 17.399 6.126 6.126 7.177-4.85 8.56-5.782 1.954 10.141 1.64 8.513H350.975l1.645-8.507 1.964-10.15 8.566 5.787 7.178 4.846 6.124-6.124 17.4-17.399 6.13-6.13-4.858-7.18-5.788-8.554 10.153-1.96 8.51-1.643v-41.932l-8.507-1.646-10.165-1.965 5.8-8.584 4.85-7.178-6.125-6.126-17.4-17.4-6.13-6.13-7.18 4.858-8.558 5.792-1.964-10.166L350.98 63zm-20.98 118.948c23.176 0 41.95-18.318 41.95-40.94 0-22.607-18.774-40.927-41.95-40.927-23.174 0-41.948 18.32-41.948 40.926 0 22.623 18.774 40.941 41.949 40.941zM342.313 73.5l3.855 19.963a47.184 47.184 0 0 1 6.037 2.502l16.824-11.386 17.4 17.4-11.362 16.818a53.171 53.171 0 0 1 2.502 6.066l19.932 3.855v24.601l-19.932 3.848a56.644 56.644 0 0 1-2.502 6.066l11.362 16.795-17.4 17.4-16.824-11.364a44.931 44.931 0 0 1-6.037 2.504l-3.855 19.932H317.68l-3.84-19.932a43.821 43.821 0 0 1-6.043-2.504l-16.818 11.364-17.4-17.4 11.364-16.795a53.759 53.759 0 0 1-2.51-6.066l-19.933-3.848v-24.601l19.933-3.855a50.617 50.617 0 0 1 2.51-6.066l-11.364-16.818 17.4-17.4 16.818 11.386a45.957 45.957 0 0 1 6.043-2.502l3.84-19.963h24.632z" fill="#AD245D"/></g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="#AD245D" d="M384.5.297L512.325 221.9l-128 221.702-255.825.102L.675 222.1 128.675.4z"/><g fill="#FFF"><path d="M35.01 367.726c-.08-21.169-.205-53.162 21.257-71.332 3.817-3.253 9.93-7.497 17.321-9.224 2.575-.523 4.956-.756 7.262-.979 4.438-.431 8.27-.804 12.054-2.9l4.954-2.846c9.87-5.655 19.194-10.996 28.226-17.377 5.085-3.632 6.726-15.73 6.095-25.428-.214-2.792-1.893-5.7-3.67-8.777-1.097-1.901-2.232-3.867-3.065-5.916l-.073-.199a56.976 56.976 0 0 1-.422-1.443c-1.195-4.205-1.933-6.378-2.386-7.476-7.029-.944-11.8-8.647-12.888-21.006l-.031-.557c-.645-12.785.808-16.13 2.316-17.716.24-.254.505-.475.783-.666-1.754-16.051 3.115-32.521 13.358-44.704 9.314-11.079 21.955-17.18 35.592-17.18 3.73 0 7.55.458 11.355 1.362 25.63 6.228 41.679 30.27 40.062 59.227.53.251 1.018.61 1.44 1.066 2.752 2.964 2.47 10.97 2.22 14.276l-.024.41c-.335 5.236-.684 10.65-3.052 15.73-1.739 3.918-4.405 6.242-6.76 8.29-2.396 2.089-4.288 3.735-5.294 6.885-.7 2.416-1.645 4.866-2.559 7.235-1.752 4.538-3.407 8.827-3.54 13.244-.427 10.222 1.17 18.391 4.172 21.359 5.097 5.163 13.003 9.391 19.978 13.121 1.6.855 3.166 1.692 4.654 2.517 9.28 5.052 16.07 7.915 25.309 8.557 9.118.849 18.056 5.193 24.754 11.97.736.641 1.82 1.744 3.694 3.648 4.416 4.492 4.416 4.492 4.426 5.852l.007.758c10.783 17.702 11.14 40.656 11.415 58.169l.05 3.28-3.278.028c-42.05.363-84.058.677-126.058.993-42.12.314-84.232.632-126.367.994l-3.273.029-.014-3.274z"/><text font-family="Impact" font-size="118" font-style="condensed" font-weight="700" transform="translate(1 -1)"><tspan x="256" y="208">&lt;/&gt;</tspan></text></g></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1 @@
<svg width="512" height="444" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="#AD245D" d="M384 .297L511.392 221.65l-128 221.702-255.392.352L.608 222.35 128.608.65z"/><g fill="#FFF"><path d="M34.944 367.726c-.081-21.169-.205-53.162 21.215-71.332 3.81-3.253 9.91-7.497 17.288-9.224 2.57-.523 4.946-.756 7.247-.979 4.43-.431 8.254-.804 12.03-2.9l4.945-2.846c9.851-5.655 19.157-10.996 28.171-17.377 5.075-3.632 6.713-15.73 6.082-25.428-.213-2.792-1.888-5.7-3.662-8.777-1.095-1.901-2.228-3.867-3.059-5.916l-.073-.199a57.061 57.061 0 0 1-.42-1.443c-1.194-4.205-1.93-6.378-2.382-7.476-7.015-.944-11.778-8.647-12.864-21.006l-.03-.557c-.644-12.785.806-16.13 2.31-17.716.241-.254.505-.475.783-.666-1.75-16.051 3.11-32.521 13.331-44.704 9.296-11.079 21.912-17.18 35.524-17.18 3.722 0 7.535.458 11.332 1.362 25.58 6.228 41.597 30.27 39.983 59.227.53.251 1.016.61 1.439 1.066 2.745 2.964 2.464 10.97 2.215 14.276l-.024.41c-.335 5.236-.683 10.65-3.046 15.73-1.736 3.918-4.397 6.242-6.747 8.29-2.391 2.089-4.28 3.735-5.284 6.885-.698 2.416-1.642 4.866-2.554 7.235-1.749 4.538-3.4 8.827-3.534 13.244-.425 10.222 1.17 18.391 4.165 21.359 5.087 5.163 12.977 9.391 19.939 13.121 1.597.855 3.16 1.692 4.645 2.517 9.262 5.052 16.038 7.915 25.259 8.557 9.1.849 18.02 5.193 24.706 11.97.735.641 1.817 1.744 3.687 3.648 4.408 4.492 4.408 4.492 4.417 5.852l.007.758c10.762 17.702 11.12 40.656 11.392 58.169l.05 3.28-3.271.028c-41.968.363-83.894.677-125.812.993-42.038.314-84.067.632-126.12.994l-3.267.029-.013-3.274zM332.387 115.763h15.318v86.734h-15.318v.513l-22.127-17.64v.12h-10.21V211h-22.128v-25.51h-20.424v-52.722h52.762v-.508l22.127-17.065v.568zm34.313 72.093l-7.988-4.591c15.803-27.453 1.717-46.642 1.106-47.443l7.304-5.607c.774.993 18.547 24.675-.422 57.641zm27.361 21.216l-13.866-7.975c27.437-47.66 2.98-80.973 1.918-82.36L394.795 109c1.343 1.723 32.2 42.839-.734 100.072z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M0 .89h265.71v170.52H0z"/></defs><g fill="none" fill-rule="evenodd"><path fill="#84A939" d="M384.5.297L512.325 221.9l-128 221.702-255.825.102L.675 222.1 128.675.4z"/><path d="M210.84 346.697l2.17.412c3.654-5.4 7.304-10.797 11.167-16.514l-13.948-4.158c.216 7.17.415 13.715.61 20.26" fill="#FEFEFE"/><g transform="translate(124 96.872)"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><path d="M265.476 135.466c2.28-16.36-12.373-28.485-33.146-37.925-3.264-1.498-32.042-13.807-71.066-11.423-.493-.025-.99-.055-1.485-.077-4.622-.21-8.12-1.25-9.72-6.232 8.024-2.458 14.575-6.522 17.408-15.188 2.705-8.281.812-14.61-5.396-18.966 3.091-4.423 7.693-7.442 11.87-10.785 5.529-4.425 11.32-7.711 18.427-8.009.24.227.53.414.906.525 2.803.837 4.097-3.51 1.295-4.345-1.034-.309-1.896.11-2.368.801-6.4.293-11.767 2.709-17.154 6.329-5.428 3.635-11.634 8.205-15.427 13.712-.48-1.289-2.718-6.195-9.466-8.056-4.63-1.276-7.919-.39-9.835.541 1.488-12.829-8.348-26.169-18.146-33.456-.048-.826-.524-1.61-1.556-1.917-2.804-.835-4.097 3.502-1.295 4.337.41.121.772.127 1.11.054 9.044 6.741 19.157 19.93 16.758 31.839-.028.13-.005.243-.002.363-16.899-.786-23.471 21.104-10.53 35.477-4.684 2.295-5.616 2.748-8.613 1.177-32.087-24.754-64.257-30.463-67.89-31.01C27.605 39.755 8.707 41.88 1.662 56.82-2.182 65.082.903 73.342 8.21 80.396A46.714 46.714 0 0 0 10.342 95.9c13.312 41.39 67.248 17.494 97.338 5.981 1.043 2.698 2.299 5.946 3.627 9.388l1.733.513c-12.762 1.374-25.1 8.753-34.245 20.253 11.938-.127 26.762 2.062 42.317 6.698 15.322 4.568 28.756 10.738 38.637 17.268-1.399-14.62-7.72-27.531-17.685-35.634l.046.013 9.111-6.463c18.754 25.75 51.289 77.278 85.606 49.502a46.669 46.669 0 0 0 10.267-11.807c9.978-1.902 17.079-7.125 18.382-16.146" fill="#FEFEFE" mask="url(#b)"/></g><path d="M239.142 255.648c-17.848-5.32-34.719-7.408-47.378-6.481a74.024 74.024 0 0 0-.923 2.876 70.569 70.569 0 0 0-2.728 14.609c12.465-.643 28.687 1.501 45.785 6.598 16.902 5.04 31.502 12.025 41.573 19.298a70.533 70.533 0 0 0 6.48-16.67c-10.089-7.605-25.188-14.976-42.809-20.23" fill="#E5ECD6"/><path d="M189.62 286.635c3.972 16.568 14.648 29.797 29.836 34.325 15.22 4.537 31.434-.721 43.835-12.47-9.486-5.756-21.669-11.116-35.364-15.198-13.858-4.13-27.135-6.319-38.307-6.657" fill="#FEFEFE"/></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M.073.459h124.425v172.749H.073z"/></defs><g fill="none" fill-rule="evenodd"><path fill="#84A939" d="M384.5.297L512.325 221.9l-128 221.702-255.825.102L.675 222.1 128.675.4z"/><path d="M232.409 254.848c.268-7.727 7.016-33.547 7.258-39.582.838-19.569-19.295-37.316-35.404-44.459-20.896-9.313-46.108-15.054-68.428-7.619-17.536 5.837-23.16 21.744-17.995 38.456 5.905 18.931 25.96 23.883 43.23 27.984-2.735 6.685-13.588 12.887-16.81 23.005-2.78 8.729-2.97 17.367-1.227 26.318.333 1.703 1.236 3.314 1.819 4.836 5.689 14.863 40.24 34.999 49.693 39.224 3.09 1.366 18.603 9.7 24.605 9.519.476-.016.962-.047 1.453-.096 12.115-1.246 17.577-9.799 19.811-20.828.36-1.791-8.229-49.896-8.005-56.758" fill="#E5ECD6"/><path d="M268.885 204.496c-.268-7.83-8.948-10.453-13.935-7.422-2.966.291-5.702 2.075-6.746 5.894-4.237 15.355-1.235 30.542-.916 46.19.358 17.416-.37 34.49 2.024 51.804 1.158 8.493 14.876 8.837 16.773.612 3.27-14.248 1.438-28.557 1.233-42.969-.291-18.067 2.216-36.006 1.567-54.11" fill="#FEFEFE"/><path d="M268.54 185.138c3.437-13.134 12.433-23.528 20.018-34.472 9.29-13.399 19.905-24.457 35.392-29.791.675.343 1.439.565 2.342.565 6.73 0 6.73-10.44 0-10.44-2.483 0-4.111 1.491-4.696 3.324-13.922 4.858-24.18 13.72-33.687 25.246-10.257 12.408-21.876 27.757-26.012 43.492-1.119 4.336 5.523 6.417 6.643 2.076M251.284 184.303c-2.824-31.263-34.996-55.942-62.636-66.026-.649-1.789-2.215-3.207-4.696-3.207-6.732 0-6.732 10.42 0 10.42.979 0 1.782-.23 2.481-.612 24.382 8.926 55.359 31.37 57.89 59.222.381 4.386 7.37 4.679 6.961.203" fill="#BBD094"/><g transform="translate(273.18 159.325)"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><path d="M8.09 95.524C7.822 87.797 1.074 61.977.832 55.94c-.838-19.568 19.294-37.316 35.404-44.458 20.896-9.313 46.106-15.055 68.427-7.62C122.2 9.702 127.824 25.608 122.66 42.32c-5.905 18.932-25.961 23.884-43.23 27.984 2.734 6.685 13.588 12.887 16.81 23.005 2.78 8.73 2.97 17.367 1.226 26.318-.334 1.704-1.236 3.315-1.818 4.836-5.69 14.863-40.24 35-49.695 39.225-3.088 1.366-18.601 9.7-24.604 9.518a21.536 21.536 0 0 1-1.453-.095C7.78 171.864 2.32 163.31.085 152.282c-.36-1.792 8.228-49.896 8.005-56.758" fill="#E5ECD6" mask="url(#b)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M.474.589h222.082V155.85H.474z"/></defs><g fill="none" fill-rule="evenodd"><path fill="#84A939" d="M384.5.297L512.325 221.9l-128 221.702-255.825.102L.675 222.1 128.675.4z"/><path d="M106 295.77c0-8.772 4.114-14.323 7.973-17.622 3.405-2.91 6.612-4.072 6.612-4.072s.991-13.569 10.898-22.434c.097-.086.18-.179.278-.265 3.804-3.31 8.891-5.92 15.692-6.854.112-.015.214-.039.33-.053.545-.07 1.087-.144 1.654-.193 3.884-.328 7.329-.025 10.403.706 18.218 4.333 22.977 24.233 22.977 24.233s9.721-6.152 19.125.324c9.397 6.48 7.454 15.87 7.454 15.87 17.507-2.266 26.092 4.209 26.092 18.623 0 14.412-17.015 17.001-17.015 17.001h-93.672s-.333-.157-.89-.452C120.203 318.614 106 310.138 106 295.771" fill="#FEFEFE"/><path d="M333.747 275.73c0-55.854-45.477-101.293-101.378-101.293-43.712 0-80.995 27.807-95.194 66.632a36.758 36.758 0 0 0-9.437 5.96l-.479.442c-5.63 5.087-8.934 11.15-10.906 16.39 5.97-58.709 55.707-104.681 116.016-104.681 64.32 0 116.648 52.284 116.648 116.55 0 16.978-3.683 33.105-10.245 47.668h-16.984a100.603 100.603 0 0 0 11.96-47.669" fill="#E5ECD6"/><path d="M320.29 275.73c0-48.44-39.44-87.85-87.923-87.85-34.819 0-64.929 20.35-79.154 49.752-.883.022-1.766.048-2.66.124-.625.051-1.223.127-1.818.205l-.773.112c-3.737.513-7.249 1.487-10.519 2.889 14.22-38.649 51.374-66.313 94.924-66.313 55.784 0 101.17 45.345 101.17 101.08a100.39 100.39 0 0 1-11.987 47.67h-15.386c8.92-13.742 14.127-30.106 14.127-47.67" fill="#CCDBAE"/><path d="M308.526 275.73c0-41.957-34.164-76.092-76.156-76.092-28.736 0-53.744 16.016-66.704 39.555-.62-.182-1.233-.366-1.877-.518-3.268-.778-6.708-1.125-10.244-1.06 14.209-29.225 44.179-49.44 78.825-49.44 48.315 0 87.626 39.278 87.626 87.554 0 17.574-5.227 33.94-14.183 47.67h-14.145c10.533-13.055 16.858-29.635 16.858-47.67" fill="#B5CB88"/><g transform="translate(182.963 98.98)"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><path d="M104.288 16.014c56.52-.178 102.65 45.62 102.829 102.093.04 13.318-2.485 26.05-7.103 37.743h16.444c3.993-11.874 6.14-24.585 6.097-37.791C222.35 53.079 169.273.382 104.241.588 59.286.73 20.245 26.132.474 63.257c7.3-3.05 14.945-5.433 22.867-7.06 18.668-24.318 47.967-40.079 80.947-40.183" fill="#E5ECD6" mask="url(#b)"/></g><path d="M376.475 217.131c.042 13.462-2.936 26.238-8.287 37.7h14.566c4.626-11.69 7.153-24.425 7.11-37.742-.178-56.354-46.21-102.058-102.612-101.88-32.822.104-61.988 15.75-80.621 39.905 6.557-1.328 13.306-2.117 20.192-2.376 15.83-14.881 37.068-24.076 60.472-24.15 49.019-.155 89.023 39.565 89.18 88.543" fill="#CCDBAE"/><path d="M364.578 217.169c.042 13.669-3.534 26.506-9.78 37.663h13.049a87.88 87.88 0 0 0 8.33-37.7c-.155-48.812-40.028-88.4-88.881-88.246-23.205.076-44.275 9.145-60.024 23.84 1.434-.048 2.867-.108 4.313-.108 4.568 0 9.074.26 13.516.738 12.112-8.07 26.607-12.831 42.23-12.881 42.461-.134 77.112 34.271 77.247 76.694" fill="#B5CB88"/><path d="M354.798 254.83h-.377c.03.174.072.345.102.519.098-.17.18-.349.275-.518" fill="#CABAA1"/></g></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -0,0 +1 @@
<svg width="513" height="444" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="#84A939" d="M384.5.297L512.325 221.9l-128 221.702-255.825.102L.675 222.1 128.675.4z"/><path d="M238.234 309.762c-1.375.258-2.792 1.55-3.708 2.736-1.608 2.081-3.007 1.861-5.165.778-8.43-4.235-16.65-1.328-20.991 6.88-.792 1.496-2.614 2.848-4.257 3.43-6.343 2.24-10.08 6.638-10.719 13.498h98.273c-.897-5.657-3.359-9.528-8.075-12.241-2.12-1.22-4.18-3.107-5.416-5.194-4.232-7.157-10.743-9.897-18.71-7.382-3.109.983-9.193-2.98-10.331-6.279h-6.066c-.46 1.829-1.749 3.193-4.835 3.774" fill="#FEFEFE"/><path d="M252.144 200.674c-2.639 3.425-9.63 13.408-11.283 24.964l-.87 5.505c-2.211-5.534-6.18-10.496-11.796-14.408-11.918-8.303-25.534-11.544-39.636-13.142-6.885-.78-13.842-.944-21.559-1.436 4.949 20.969 11.08 40.049 25.452 55.231 6.342 6.698 14.362 10.992 23.85 10.166 5.9-.514 11.66-2.65 17.862-4.149 4.946 11.405 7.394 24.204 8.876 37.28.143 1.266.255 2.46.227 3.56h5.569c-.882-7.237-1.761-14.484-2.983-21.665-.397-2.335-.79-4.38-.575-5.91.299-1.79.748-1.79 1.582-3.072.884-1.193 2.198-2.26 4.092-3.402 2.143 1.826 3.998 3.807 6.216 5.223 4.423 2.827 7.262 5.105 14.637 5.803 2.418.234 5.006.276 7.187-.337 4.318-1.207 8.743-2.716 12.51-5.075 14.244-8.905 24.206-21.803 32.765-35.977-.592-.457-.912-.851-1.319-.994-14.417-5.058-29.212-8.309-44.538-6.92-8.774.796-17.394 3.209-23.143 10.763-3.56 4.676-6.985 9.634-5.063 16.138-.412 3.335-1.967 5.828-4.244 7.79-1.402-12.036-2.767-39.862 11.142-58.371" fill="#E5ECD6"/><path d="M258.188 206.85s7.083 18.602 21.241 17.487c0 0 20.87.371 21.987-27.161 0 0 21.198 8.399 32.42-4.093 0 0 15.653-18.974-8.567-34.6 0 0 18.63-8.93 11.921-30.137 0 0-6.707-19.347-35.028-7.812 0 0-.746-26.045-23.107-26.788 0 0-23.538.821-21.239 27.53 0 0-23.85-13.022-35.03 5.582 0 0-10.062 18.973 10.435 31.996 0 0-22.36 17.115-7.826 35.719 0 0 10.435 12.649 27.762 4.836m25.716-27.533c-6.827 0-12.36-5.525-12.36-12.342 0-6.816 5.533-12.342 12.36-12.342 6.826 0 12.36 5.526 12.36 12.342 0 6.817-5.534 12.342-12.36 12.342" fill="#FFF"/></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.4 KiB

Some files were not shown because too many files have changed in this diff Show More