diff --git a/.gitea/workflows/frontend_deploy-release.yaml b/.gitea/workflows/frontend_deploy-release.yaml
index 71c8060..c0048fc 100644
--- a/.gitea/workflows/frontend_deploy-release.yaml
+++ b/.gitea/workflows/frontend_deploy-release.yaml
@@ -3,7 +3,7 @@ on:
     tags:
       - v*
 
-name: Build and release release apps to production track
+name: Build and release apps to production track
 
 jobs:
   get-version:
diff --git a/.gitea/workflows/workflow_build-app-android.yaml b/.gitea/workflows/workflow_build-app-android.yaml
index 2455bfb..5002752 100644
--- a/.gitea/workflows/workflow_build-app-android.yaml
+++ b/.gitea/workflows/workflow_build-app-android.yaml
@@ -27,7 +27,7 @@ defaults:
 
 jobs:
   build:
-    runs-on: macos
+    runs-on: macos-14
     env:
       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
       BUNDLE_GEMFILE: ${{ gitea.workspace }}/frontend/android/Gemfile
diff --git a/.gitea/workflows/workflow_build-app-ios.yaml b/.gitea/workflows/workflow_build-app-ios.yaml
index 5eea161..b2822cf 100644
--- a/.gitea/workflows/workflow_build-app-ios.yaml
+++ b/.gitea/workflows/workflow_build-app-ios.yaml
@@ -31,7 +31,7 @@ defaults:
 
 jobs:
   build:
-    runs-on: macos
+    runs-on: macos-14
     env:
       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
       BUNDLE_GEMFILE: ${{ gitea.workspace }}/frontend/ios/Gemfile
diff --git a/frontend/.github/workflows/build_app_android.yaml b/frontend/.github/workflows/build_app_android.yaml
deleted file mode 100644
index b62943a..0000000
--- a/frontend/.github/workflows/build_app_android.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-on:
-  push:
-    tags:
-      - 'v*'
-
-jobs:
-  build:
-    runs-on: macos-latest
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: Set up ruby env
-        uses: ruby/setup-ruby@v1
-        with:
-          ruby-version: 3.2.1
-          bundler-cache: true
-
-      - name: Setup java for android build
-        uses: actions/setup-java@v4
-        with:
-          java-version: '17'
-          distribution: 'zulu'
-
-      - name: Setup android SDK
-        uses: android-actions/setup-android@v3
-      
-      - name: Install Flutter
-        uses: subosito/flutter-action@v2
-        with:
-          channel: stable
-          flutter-version: 3.22.0
-          cache: true
-
-      - name: Infer version number from git tag
-        id: version
-        env: 
-          REF_NAME: ${{ github.ref_name }}
-        run:
-          # remove the 'v' prefix from the tag name
-          echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV
-
-      - name: Put selected secrets into files
-        run: |
-          echo "${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }}" | base64 -d > secrets.properties
-          echo "${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }}" | base64 -d > google-key.json
-          echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > release.keystore
-        working-directory: android
-
-      - name: Install fastlane
-        run: bundle install
-        working-directory: android
-
-      - name: Run fastlane lane
-        run: bundle exec fastlane deploy_release
-        working-directory: android
-        env:
-          BUILD_NUMBER: ${{ github.run_number }}
-          # BUILD_NAME is implicitly available
-          GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }}
diff --git a/frontend/.github/workflows/build_app_ios.yaml b/frontend/.github/workflows/build_app_ios.yaml
deleted file mode 100644
index 4ed3707..0000000
--- a/frontend/.github/workflows/build_app_ios.yaml
+++ /dev/null
@@ -1,64 +0,0 @@
-on:
-  push:
-    tags:
-      - 'v*'
-
-jobs:
-  build:
-    runs-on: macos-latest
-    env:
-      # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
-      BUNDLE_GEMFILE: ${{ github.workspace }}/ios/Gemfile
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: Set up ruby env
-        uses: ruby/setup-ruby@v1
-        with:
-          ruby-version: 3.3
-          bundler-cache: true # runs 'bundle install' and caches installed gems automatically
-
-      - name: Install Flutter
-        uses: subosito/flutter-action@v2
-        with:
-          channel: stable
-          flutter-version: 3.22.0
-          cache: true
-
-      - name: Infer version number from git tag
-        id: version
-        env: 
-          REF_NAME: ${{ github.ref_name }}
-        run:
-          # remove the 'v' prefix from the tag name
-          echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV
-
-      - name: Setup SSH key for match git repo
-        # and mark the host as known
-        run: |
-          echo $MATCH_REPO_SSH_KEY | base64 --decode > ~/.ssh/id_rsa
-          chmod 600 ~/.ssh/id_rsa
-          ssh-keyscan -p 2222 git.kluster.moll.re > ~/.ssh/known_hosts
-        env:
-          MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }}
-
-      - name: Install dependencies and clean up
-        run: |
-          flutter pub get
-          bundle exec pod install
-          flutter clean
-          bundle exec pod cache clean --all
-        working-directory: ios
-
-      - name: Run fastlane lane
-        run: bundle exec fastlane deploy_release --verbose
-        working-directory: ios
-        env:
-          BUILD_NUMBER: ${{ github.run_number }}
-          # BUILD_NAME is implicitly available
-          GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }}
-          IOS_ASC_KEY_ID: ${{ secrets.IOS_ASC_KEY_ID }}
-          IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }}
-          IOS_ASC_KEY: ${{ secrets.IOS_ASC_KEY }}
-          MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }}
-          IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }}