diff --git a/.github/workflows/github-prerelease.yml b/.github/workflows/github-prerelease.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6bd9901fdab4a6916cecf464033e94b9f6d5ade9
--- /dev/null
+++ b/.github/workflows/github-prerelease.yml
@@ -0,0 +1,330 @@
+name: Create GitHub Pre-Release after GitLab tag mirror
+
+on:
+  push:
+    tags:
+      - '[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+'
+      - '[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+'
+      - '[0-9]+.[0-9]+.[0-9]+-pre.[0-9]+'
+
+jobs:
+  release:
+    runs-on: ubuntu-latest
+    steps:
+      # GET LATEST CODE
+      - name: Checkout latest code
+        uses: actions/checkout@master
+        with:
+          fetch-depth: 0
+
+      # EXTRACT TAG FROM PUSH
+      - name: Get tag
+        id: tag
+        uses: dawidd6/action-get-tag@v1
+      - name: Use tag
+        run: echo ${{steps.tag.outputs.tag}}
+
+      # GENERATE CHANGELOG, RELEASE
+      - id: conventional_changelog
+        uses: ardalanamini/auto-changelog@master
+        with:
+          token: ${{ secrets.GITHUB_TOKEN }}
+      - name: Create Release
+        id: create_release
+        uses: actions/create-release@latest
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          tag_name: ${{ github.ref }}
+          release_name: Release ${{ steps.tag.outputs.tag }}
+          body: |
+            Automatic release of version: **${{ steps.tag.outputs.tag }}**
+            **Changes in this release:**
+            ${{ steps.conventional_changelog.outputs.changelog }}
+          draft: false
+          prerelease: true
+
+  # IF JAVA PROJECT
+
+#      # BUILD PROJECT AND PUBLISH TO PACKAGES
+#      - name: Set up JDK 8
+#        uses: actions/setup-java@v2
+#        with:
+#          distribution: 'adopt'
+#          java-version: '8'
+#      - name: Grant execute permission for gradlew
+#        run: chmod +x gradlew
+#      - name: Publish to GitHub Packages
+#        env:
+#          GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }}
+#          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+#        run: |
+#          NEW_VERSION=$(echo "${{ steps.tag.outputs.tag }}")
+#          echo "New version: ${NEW_VERSION}"
+#          echo "Github username: ${GITHUB_ACTOR}"
+#          ./gradlew about
+#          ./gradlew installQuasar cleanFrontend assembleFrontend copyDist build --info -x test
+#      - name: List files
+#        run: ls -ahl build/libs
+#
+#      - name: Rename files
+#        run: |
+#          echo "**** Renaming files to please the eye ****"
+#          mv build/libs/REPOSITORY.jar build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}.jar
+#          mv build/libs/REPOSITORY-javadoc.jar build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}-javadoc.jar
+#          mv build/libs/REPOSITORY-sources.jar build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}-sources.jar
+#
+#      - uses: actions/upload-artifact@v2
+#        with:
+#          name: build-artifacts-gradle
+#          path: |
+#            build/libs/
+#          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
+#      - uses: actions/upload-artifact@v2
+#        if: failure()
+#        with:
+#          name: report
+#          path: build/reports/tests/test/
+#          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
+#
+#      # UPLOAD ASSETS TO RELEASE
+#      - name: Upload Release Asset Main Jar
+#        id: upload-release-asset
+#        uses: actions/upload-release-asset@v1
+#        env:
+#          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+#        with:
+#          upload_url: ${{ steps.create_release.outputs.upload_url }}
+#          asset_path: ./build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}.jar
+#          asset_name: REPOSITORY-${{ steps.tag.outputs.tag }}.jar
+#          asset_content_type: application/jar
+#
+#      - name: Upload Release Asset Sources Jar
+#        id: upload-release-asset-sources
+#        uses: actions/upload-release-asset@v1
+#        env:
+#          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+#        with:
+#          upload_url: ${{ steps.create_release.outputs.upload_url }}
+#          asset_path: ./build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}-sources.jar
+#          asset_name: REPOSITORY-${{ steps.tag.outputs.tag }}-sources.jar
+#          asset_content_type: application/jar
+#
+#      - name: Upload Release Asset Javadoc Jar
+#        id: upload-release-asset-javadoc
+#        uses: actions/upload-release-asset@v1
+#        env:
+#          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+#        with:
+#          upload_url: ${{ steps.create_release.outputs.upload_url }}
+#          asset_path: ./build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}-javadoc.jar
+#          asset_name: REPOSITORY-${{ steps.tag.outputs.tag }}-javadoc.jar
+#          asset_content_type: application/jar
+#
+#      # DOCKER RELATED
+#      - name: Set up QEMU
+#        uses: docker/setup-qemu-action@v1
+#      - name: Set up Docker Buildx
+#        uses: docker/setup-buildx-action@v1
+#      - name: Login to DockerHub
+#        uses: docker/login-action@v1
+#        with:
+#          username: griefed
+#          password: ${{ secrets.DOCKERHUB_TOKEN }}
+#      - name: Login to GitHub Container Registry
+#        uses: docker/login-action@v1
+#        with:
+#          registry: ghcr.io
+#          username: ${{ github.actor }}
+#          password: ${{ secrets.GITHUB_TOKEN }}
+#      - name: Build and push
+#        uses: docker/build-push-action@v2
+#        with:
+#          context: .
+#          file: ./Dockerfile.gradle.quasar
+#          platforms: linux/amd64,linux/arm64
+#          push: true
+#          tags: |
+#            ghcr.io/griefed/REPOSITORY:latest
+#            ghcr.io/griefed/REPOSITORY:${{ steps.tag.outputs.tag }}
+#            griefed/REPOSITORY:latest
+#            griefed/REPOSITORY:${{ steps.tag.outputs.tag }}
+
+  # IF QUASAR PROJECT
+
+#      - name: Setup Node.js environment
+#        uses: actions/setup-node@v2.4.1
+#        with:
+#          # Version Spec of the version to use.  Examples: 12.x, 10.15.1, >=10.15.0
+#          node-version: '>= 16.9.1'
+#          # Set this option if you want the action to check for the latest available version that satisfies the version spec
+#          check-latest: false
+#
+#      - name: Install Quasar
+#        run: npm install -g @quasar/cli
+#
+#      - name: Install packages
+#        run: npm install
+#
+#      - name: Build project for NGINX release package
+#        run: quasar build
+#
+#      - name: List files
+#        run: pwd && ls -al *
+#
+#      # NGINX Archives
+#      - name: Create NGINX Archive tar.gz
+#        run: |
+#          echo "**** Creating archive of quasar build ****"
+#          tar -cvzf REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.tar.gz dist/spa
+#      - name: Create NGINX Archive zip
+#        uses: papeloto/action-zip@v1
+#        with:
+#          files: dist/spa
+#          recursive: true
+#          dest: REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.zip
+#
+#      - uses: actions/upload-artifact@v2
+#        with:
+#          name: build-artifacts
+#          path: dist/spa/ # frontend/dist/spa if Gradle Spring Boot project for example
+#          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
+#
+#      # Upload NGINX Assets
+#      - name: Upload Release Archive tar.gz
+#        id: upload-release-asset-archive-targz
+#        uses: actions/upload-release-asset@v1
+#        env:
+#          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+#        with:
+#          upload_url: ${{ steps.create_release.outputs.upload_url }}
+#          asset_path: ./REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.tar.gz
+#          asset_name: REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.tar.gz
+#          asset_content_type: application/gzip
+#      - name: Upload Release Archive zip
+#        id: upload-release-asset-archive-zip
+#        uses: actions/upload-release-asset@v1
+#        env:
+#          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+#        with:
+#          upload_url: ${{ steps.create_release.outputs.upload_url }}
+#          asset_path: ./REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.zip
+#          asset_name: REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.zip
+#          asset_content_type: application/zip
+#
+#      # DEPLOY TO GH-PAGES
+#      - name: Deploy to GitHub-Pages
+#        uses: JamesIves/github-pages-deploy-action@4.1.6
+#        with:
+#          branch: gh-pages
+#          folder: dist/spa
+
+#      # DOCKER RELATED
+#      - name: Set up QEMU
+#        uses: docker/setup-qemu-action@v1
+#      - name: Set up Docker Buildx
+#        uses: docker/setup-buildx-action@v1
+#      - name: Login to DockerHub
+#        uses: docker/login-action@v1
+#        with:
+#          username: griefed
+#          password: ${{ secrets.DOCKERHUB_TOKEN }}
+#      - name: Login to GitHub Container Registry
+#        uses: docker/login-action@v1
+#        with:
+#          registry: ghcr.io
+#          username: ${{ github.actor }}
+#          password: ${{ secrets.GITHUB_TOKEN }}
+#      - name: Build and push
+#        uses: docker/build-push-action@v2
+#        with:
+#          context: .
+#          file: ./Dockerfile.gradle.quasar
+#          platforms: linux/amd64,linux/arm64
+#          push: true
+#          tags: |
+#            ghcr.io/griefed/REPOSITORY:latest
+#            ghcr.io/griefed/REPOSITORY:${{ steps.tag.outputs.tag }}
+#            griefed/REPOSITORY:latest
+#            griefed/REPOSITORY:${{ steps.tag.outputs.tag }}
+
+  # IF ELECTRON PROJECT
+
+#  electron:
+#    needs: release
+#    runs-on: ${{ matrix.os }}
+#
+#    strategy:
+#      matrix:
+#        os: [macos-latest, ubuntu-latest, windows-latest]
+#
+#    steps:
+#      # GET LATEST CODE
+#      - name: Checkout latest code
+#        uses: actions/checkout@master
+#        with:
+#          fetch-depth: 0
+#
+#      # SETUP NODE ENVIRONMENT
+#      - name: Setup Node.js environment
+#        uses: actions/setup-node@v2.4.1
+#        with:
+#          # Version Spec of the version to use.  Examples: 12.x, 10.15.1, >=10.15.0
+#          node-version: '>= 16.9.1'
+#          # Set this option if you want the action to check for the latest available version that satisfies the version spec
+#          check-latest: false
+#
+#      - name: Build/release Electron app
+#        uses: vedaprakashms/quasar_electron_build@V0.0.1
+#        with:
+#          # GitHub token, automatically provided to the action
+#          # (No need to define this secret in the repo settings)
+#          github_token: ${{ secrets.github_token }}
+#
+#      - name: List files
+#        run: ls dist/electron
+#
+#      - uses: actions/upload-artifact@v2
+#        with:
+#          name: electron-artifacts ${{ matrix.os }}
+#          path: |
+#            dist/electron/
+#            !dist/electron/UnPackaged
+#          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
+#
+#      - name: Rename folders
+#        run: |
+#          mv dist/electron/REPOSITORY* REPOSITORY-${{ matrix.os }}
+#
+#      # Electron Archives
+#      - name: Create zip
+#        uses: ihiroky/archive-action@v1
+#        with:
+#          root_dir: REPOSITORY-${{ matrix.os }}
+#          file_path: REPOSITORY-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.zip
+#          verbose: true
+#      - name: Create tar.gz
+#        run: |
+#          tar -cvzf REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.tar.gz REPOSITORY-${{ matrix.os }}
+#
+#      # Upload App Assets
+#      - name: Upload App Archive zip
+#        id: upload-release-asset-archive-zip
+#        uses: actions/upload-release-asset@v1
+#        env:
+#          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+#        with:
+#          upload_url: ${{ needs.release.outputs.uploadurl }}
+#          asset_path: ./REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.zip
+#          asset_name: REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.zip
+#          asset_content_type: application/zip
+#      - name: Upload App Archive tar.gz
+#        id: upload-release-asset-archive-targz
+#        uses: actions/upload-release-asset@v1
+#        env:
+#          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+#        with:
+#          upload_url: ${{ needs.release.outputs.uploadurl }}
+#          asset_path: ./REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.tar.gz
+#          asset_name: REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.tar.gz
+#          asset_content_type: application/gzip
\ No newline at end of file
diff --git a/.github/workflows/github_release.yml b/.github/workflows/github_release.yml
index c686c7b3d7415a1b3696c74b6bacc3836628435c..51e236876537865855b34b6e13c8f98ddf39f140 100644
--- a/.github/workflows/github_release.yml
+++ b/.github/workflows/github_release.yml
@@ -3,7 +3,7 @@ name: Create GitHub Release after tag push
 on:
   push:
     tags:
-      - '*'
+      - '[0-9]+.[0-9]+.[0-9]+'
 
 jobs:
   release: