Fastlane fixes working up to a full release #68
| @@ -5,7 +5,7 @@ on: | |||||||
|     paths: |     paths: | ||||||
|       - frontend/** |       - frontend/** | ||||||
|  |  | ||||||
| name: Build and release release apps to production track | name: Build and release apps to beta track | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   get-version: |   get-version: | ||||||
| @@ -13,6 +13,7 @@ jobs: | |||||||
|     runs-on: macos |     runs-on: macos | ||||||
|     steps: |     steps: | ||||||
|       - uses: https://gitea.com/actions/checkout@v4 |       - uses: https://gitea.com/actions/checkout@v4 | ||||||
|  |  | ||||||
|       - name: Fetch tags from main branch |       - name: Fetch tags from main branch | ||||||
|         # since this workflow is triggered by a pull request, we want to match the latest tag of the main branch |         # since this workflow is triggered by a pull request, we want to match the latest tag of the main branch | ||||||
|         id: version |         id: version | ||||||
| @@ -20,14 +21,21 @@ jobs: | |||||||
|           git fetch origin main --tags |           git fetch origin main --tags | ||||||
|           LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) |           LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) | ||||||
|           # remove the 'v' prefix from the tag name |           # remove the 'v' prefix from the tag name | ||||||
|           echo "BUILD_NAME=${LATEST_TAG//v}" >> $GITHUB_ENV |           echo "BUILD_NAME=${LATEST_TAG//v}" >> $GITHUB_OUTPUT | ||||||
|  |  | ||||||
|  |       - name: Output the version that is being used | ||||||
|  |         run: | | ||||||
|  |           echo "Building for version ${{ steps.version.outputs.BUILD_NAME }}" | ||||||
|  |  | ||||||
|  |     outputs: | ||||||
|  |       build_name: ${{ steps.version.outputs.BUILD_NAME }} | ||||||
|  |  | ||||||
|   build-android: |   build-android: | ||||||
|     name: Build and upload android app |     name: Build and upload android app | ||||||
|     uses: ./.gitea/workflows/workflow_build-app-android.yaml |     uses: ./.gitea/workflows/workflow_build-app-android.yaml | ||||||
|     with: |     with: | ||||||
|       build_type: beta |       build_type: beta | ||||||
|       build_name: ${{ env.BUILD_NAME }} |       build_name: ${{ needs.get-version.outputs.build_name }} | ||||||
|     secrets: |     secrets: | ||||||
|       ANDROID_SECRET_PROPERTIES_BASE64: ${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }} |       ANDROID_SECRET_PROPERTIES_BASE64: ${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }} | ||||||
|       ANDROID_GOOGLE_PLAY_JSON_BASE64: ${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }} |       ANDROID_GOOGLE_PLAY_JSON_BASE64: ${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }} | ||||||
| @@ -40,7 +48,7 @@ jobs: | |||||||
|     uses: ./.gitea/workflows/workflow_build-app-ios.yaml |     uses: ./.gitea/workflows/workflow_build-app-ios.yaml | ||||||
|     with: |     with: | ||||||
|       build_type: beta |       build_type: beta | ||||||
|       build_name: ${{ env.BUILD_NAME }} |       build_name: ${{ needs.get-version.outputs.build_name }} | ||||||
|     secrets: |     secrets: | ||||||
|       IOS_ASC_KEY_ID: ${{ secrets.IOS_ASC_KEY_ID }} |       IOS_ASC_KEY_ID: ${{ secrets.IOS_ASC_KEY_ID }} | ||||||
|       IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} |       IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} | ||||||
| @@ -48,4 +56,4 @@ jobs: | |||||||
|       IOS_MATCH_REPO_SSH_KEY_BASE64: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} |       IOS_MATCH_REPO_SSH_KEY_BASE64: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} | ||||||
|       IOS_MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }} |       IOS_MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }} | ||||||
|       IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }} |       IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }} | ||||||
|     needs: get-version |     needs: build-android # technically not needed, but this prevents the builds from running in parallel | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ on: | |||||||
|     tags: |     tags: | ||||||
|       - v* |       - v* | ||||||
|  |  | ||||||
| name: Build and release release apps to production track | name: Build and release apps to production track | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   get-version: |   get-version: | ||||||
| @@ -11,21 +11,28 @@ jobs: | |||||||
|     runs-on: macos |     runs-on: macos | ||||||
|     steps: |     steps: | ||||||
|       - uses: https://gitea.com/actions/checkout@v4 |       - uses: https://gitea.com/actions/checkout@v4 | ||||||
|  |  | ||||||
|       - name: Get version from git tag |       - name: Get version from git tag | ||||||
|         id: version |         id: version | ||||||
|         env:  |         env:  | ||||||
|           REF_NAME: ${{ gitea.ref_name }} |           REF_NAME: ${{ gitea.ref_name }} | ||||||
|         # remove the 'v' prefix from the tag name |         # remove the 'v' prefix from the tag name | ||||||
|         run: | |         run: | | ||||||
|           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV |           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_OUTPUT | ||||||
|  |  | ||||||
|  |       - name: Output the version that is being used | ||||||
|  |         run: | | ||||||
|  |           echo "Building for version ${{ steps.version.outputs.BUILD_NAME }}" | ||||||
|  |  | ||||||
|  |     outputs: | ||||||
|  |       build_name: ${{ steps.version.outputs.BUILD_NAME }} | ||||||
|  |  | ||||||
|   build-android: |   build-android: | ||||||
|     name: Build and upload android app |     name: Build and upload android app | ||||||
|     uses: ./.gitea/workflows/workflow_build-app-android.yaml |     uses: ./.gitea/workflows/workflow_build-app-android.yaml | ||||||
|     with: |     with: | ||||||
|       build_type: release |       build_type: release | ||||||
|       build_name: ${{ env.BUILD_NAME }} |       build_name: ${{ needs.get-version.outputs.build_name }} | ||||||
|     secrets: |     secrets: | ||||||
|       ANDROID_SECRET_PROPERTIES_BASE64: ${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }} |       ANDROID_SECRET_PROPERTIES_BASE64: ${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }} | ||||||
|       ANDROID_GOOGLE_PLAY_JSON_BASE64: ${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }} |       ANDROID_GOOGLE_PLAY_JSON_BASE64: ${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }} | ||||||
| @@ -38,12 +45,12 @@ jobs: | |||||||
|     uses: ./.gitea/workflows/workflow_build-app-ios.yaml |     uses: ./.gitea/workflows/workflow_build-app-ios.yaml | ||||||
|     with: |     with: | ||||||
|       build_type: release |       build_type: release | ||||||
|       build_name: ${{ env.BUILD_NAME }} |       build_name: ${{ needs.get-version.outputs.build_name }} | ||||||
|     secrets: |     secrets: | ||||||
|       IOS_ASC_KEY_ID: ${{ secrets.IOS_ASC_KEY_ID }} |       IOS_ASC_KEY_ID: ${{ secrets.IOS_ASC_KEY_ID }} | ||||||
|       IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} |       IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} | ||||||
|       IOS_ASC_KEY: ${{ secrets.IOS_ASC_KEY }} |       IOS_ASC_KEY: ${{ secrets.IOS_ASC_KEY }} | ||||||
|       IOS_MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }} |  | ||||||
|       IOS_MATCH_REPO_SSH_KEY_BASE64: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} |       IOS_MATCH_REPO_SSH_KEY_BASE64: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} | ||||||
|  |       IOS_MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }} | ||||||
|       IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }} |       IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }} | ||||||
|     needs: get-version |     needs: build-android # technically not needed, but this prevents the builds from running in parallel | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ defaults: | |||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|     runs-on: macos |     runs-on: macos-14 | ||||||
|     env: |     env: | ||||||
|       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps |       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps | ||||||
|       BUNDLE_GEMFILE: ${{ gitea.workspace }}/frontend/android/Gemfile |       BUNDLE_GEMFILE: ${{ gitea.workspace }}/frontend/android/Gemfile | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ defaults: | |||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|     runs-on: macos |     runs-on: macos-14 | ||||||
|     env: |     env: | ||||||
|       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps |       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps | ||||||
|       BUNDLE_GEMFILE: ${{ gitea.workspace }}/frontend/ios/Gemfile |       BUNDLE_GEMFILE: ${{ gitea.workspace }}/frontend/ios/Gemfile | ||||||
| @@ -53,9 +53,13 @@ jobs: | |||||||
|           ruby-version: 3.3 |           ruby-version: 3.3 | ||||||
|           bundler-cache: true # runs 'bundle install' and caches installed gems automatically |           bundler-cache: true # runs 'bundle install' and caches installed gems automatically | ||||||
|  |  | ||||||
|  |       - uses: GuillaumeFalourd/setup-rsync@v1.2 | ||||||
|  |         # rsync is required by the google maps ios tools | ||||||
|  |  | ||||||
|       - name: Install dependencies and clean up |       - name: Install dependencies and clean up | ||||||
|         run: | |         run: | | ||||||
|           flutter pub get |           flutter pub get | ||||||
|  |           flutter precache --ios | ||||||
|           bundle exec pod install --allow-root |           bundle exec pod install --allow-root | ||||||
|           flutter clean |           flutter clean | ||||||
|           bundle exec pod cache clean --all --allow-root |           bundle exec pod cache clean --all --allow-root | ||||||
| @@ -69,6 +73,11 @@ jobs: | |||||||
|         env: |         env: | ||||||
|           MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} |           MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} | ||||||
|  |  | ||||||
|  |       - name: Replace API Key from secret | ||||||
|  |         # on a macOS runner, sed requires a replacement suffix after the -i flag | ||||||
|  |         run: | | ||||||
|  |           sed -i '' -e "s/IOS_GOOGLE_MAPS_API_KEY/${{ secrets.IOS_GOOGLE_MAPS_API_KEY }}/g" Runner/AppDelegate.swift | ||||||
|  |  | ||||||
|       - name: Run fastlane lane |       - name: Run fastlane lane | ||||||
|         run: bundle exec fastlane deploy_${{ inputs.build_type }} |         run: bundle exec fastlane deploy_${{ inputs.build_type }} | ||||||
|         env: |         env: | ||||||
|   | |||||||
| @@ -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 }} |  | ||||||
							
								
								
									
										64
									
								
								frontend/.github/workflows/build_app_ios.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -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 }} |  | ||||||
| @@ -17,7 +17,7 @@ platform :android do | |||||||
|       ) |       ) | ||||||
|      |      | ||||||
|     upload_to_play_store( |     upload_to_play_store( | ||||||
|       track: 'alpha', |       track: 'beta', | ||||||
|       # upload aab files intstead |       # upload aab files intstead | ||||||
|       skip_upload_apk: true, |       skip_upload_apk: true, | ||||||
|       skip_upload_changelogs: true, |       skip_upload_changelogs: true, | ||||||
|   | |||||||
| @@ -1,7 +0,0 @@ | |||||||
| AnyWay is an application that helps you plan truly unique city trips. When planning a new trip, you can specify <your> preferences and constraints and anyway generates a personalized itinerary just for you.  |  | ||||||
|  |  | ||||||
| Anyway follows these core principles: |  | ||||||
| - **Personalization**: Trips should be match your interests - not just the most popular destinations. |  | ||||||
| - **Efficiency**: Don't just walk in circles! Anyway creates the most efficient route for you. |  | ||||||
| - **Flexibility**: Vacations are the time to be spontaneous. Anyway lets you update your plans on the go. |  | ||||||
| - **Discoverability**: Tourism means exploration. Anyway encourages you to take detours and make spontaneous decisions. |  | ||||||
| @@ -0,0 +1,7 @@ | |||||||
|  | AnyWay is an application that helps you plan truly unique city trips. When planning a new trip, you can specify your preferences and constraints and anyway generates a personalized itinerary just for you.  | ||||||
|  |  | ||||||
|  | Anyway follows these core principles: | ||||||
|  | - Personalization: Trips should be match your interests - not just the most popular destinations. | ||||||
|  | - Efficiency: Don't just walk in circles! Anyway creates the most efficient route for you. | ||||||
|  | - Flexibility: Vacations are the time to be spontaneous. Anyway lets you update your plans on the go. | ||||||
|  | - Discoverability: Tourism means exploration. Anyway encourages you to take detours and make spontaneous decisions. | ||||||
| Before Width: | Height: | Size: 3.0 MiB After Width: | Height: | Size: 3.0 MiB | 
| Before Width: | Height: | Size: 4.1 MiB After Width: | Height: | Size: 4.1 MiB | 
| Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB | 
| Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB | 
| @@ -1,4 +1,4 @@ | |||||||
| app_identifier("info.anydev.testing") # The bundle identifier of your app | app_identifier("info.anydev.anyway") # The bundle identifier of your app | ||||||
| apple_id("me@moll.re") # Your Apple Developer Portal username | apple_id("me@moll.re") # Your Apple Developer Portal username | ||||||
|  |  | ||||||
| itc_team_id("127439860") # App Store Connect Team ID | itc_team_id("127439860") # App Store Connect Team ID | ||||||
|   | |||||||
| @@ -28,17 +28,6 @@ platform :ios do | |||||||
|       readonly: true, |       readonly: true, | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     # replace secrets by real values, the stupid way |  | ||||||
|     sh( |  | ||||||
|       "sed", |  | ||||||
|       "-i", |  | ||||||
|       "", |  | ||||||
|       "s/IOS_GOOGLE_MAPS_API_KEY/#{ENV["IOS_GOOGLE_MAPS_API_KEY"]}/g", |  | ||||||
|       "../Runner/AppDelegate.swift" |  | ||||||
|     ) |  | ||||||
|      |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     sh( |     sh( | ||||||
|       "flutter", |       "flutter", | ||||||
|       "build", |       "build", | ||||||
| @@ -74,15 +63,6 @@ platform :ios do | |||||||
|       readonly: true, |       readonly: true, | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     # replace secrets by real values, the stupid way |  | ||||||
|     sh( |  | ||||||
|       "sed", |  | ||||||
|       "-i", |  | ||||||
|       "", |  | ||||||
|       "s/IOS_GOOGLE_MAPS_API_KEY/#{ENV["IOS_GOOGLE_MAPS_API_KEY"]}/g", |  | ||||||
|       "../Runner/AppDelegate.swift" |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
|     sh( |     sh( | ||||||
|       "flutter", |       "flutter", | ||||||
|       "build", |       "build", | ||||||
| @@ -101,9 +81,9 @@ platform :ios do | |||||||
|     upload_to_app_store( |     upload_to_app_store( | ||||||
|       overwrite_screenshots: true, |       overwrite_screenshots: true, | ||||||
|       metadata_path: "fastlane/metadata", |       metadata_path: "fastlane/metadata", | ||||||
|       screenshot_path: "fastlane/screenshots", |       screenshots_path: "fastlane/screenshots", | ||||||
|       precheck_include_in_app_purchases: false, |       precheck_include_in_app_purchases: false, | ||||||
|  |       force: true, # Skip HTMl report verification | ||||||
|       submit_for_review: true, |       submit_for_review: true, | ||||||
|       automatic_release: true, |       automatic_release: true, | ||||||
|       # automatically release the app after review |       # automatically release the app after review | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
|  | 2025 anydev | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| AnyWay is an application that helps you plan truly unique city trips. When planning a new trip, you can specify <our> preferences and constraints and anyway generates a personalized itinerary just for you.  | AnyWay is an application that helps you plan truly unique city trips. When planning a new trip, you can specify your preferences and constraints and anyway generates a personalized itinerary just for you.  | ||||||
|  |  | ||||||
| Anyway follows these core principles: | Anyway follows these core principles: | ||||||
| - **Personalization**: Trips should be match your interests - not just the most popular destinations. | - Personalization: Trips should be match your interests - not just the most popular destinations. | ||||||
| - **Efficiency**: Don't just walk in circles! Anyway creates the most efficient route for you. | - Efficiency: Don't just walk in circles! Anyway creates the most efficient route for you. | ||||||
| - **Flexibility**: Vacations are the time to be spontaneous. Anyway lets you update your plans on the go. | - Flexibility: Vacations are the time to be spontaneous. Anyway lets you update your plans on the go. | ||||||
| - **Discoverability**: Tourism means exploration. Anyway encourages you to take detours and make spontaneous decisions. | - Discoverability: Tourism means exploration. Anyway encourages you to take detours and make spontaneous decisions. | ||||||
|   | |||||||
| Before Width: | Height: | Size: 1.6 MiB | 
| Before Width: | Height: | Size: 2.2 MiB | 
| @@ -1 +1 @@ | |||||||
| AnyWay | Any.Way | ||||||
| @@ -1 +1 @@ | |||||||
|  | TRAVEL | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
|  | anydev.anyway@gmail.com | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
|  | Remy | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
|  | Moll | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
|  | +4915128785827 | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								frontend/ios/fastlane/screenshots/en-US/iOS Phones  6.9-01.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.6 MiB | 
| Before Width: | Height: | Size: 2.1 MiB After Width: | Height: | Size: 2.1 MiB | 
| Before Width: | Height: | Size: 626 KiB After Width: | Height: | Size: 626 KiB | 
| Before Width: | Height: | Size: 758 KiB After Width: | Height: | Size: 758 KiB | 
| After Width: | Height: | Size: 2.2 MiB | 
| Before Width: | Height: | Size: 2.5 MiB After Width: | Height: | Size: 2.5 MiB | 
| Before Width: | Height: | Size: 574 KiB After Width: | Height: | Size: 574 KiB | 
| Before Width: | Height: | Size: 800 KiB After Width: | Height: | Size: 800 KiB |