Compare commits
	
		
			7 Commits
		
	
	
		
			main
			...
			c4adac65fb
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c4adac65fb | |||
| e15689ef22 | |||
| 5313016312 | |||
| 2d29a61dfa | |||
| 7c8b44559d | |||
| 342a8b9e4d | |||
| 15c674fadf | 
| @@ -5,7 +5,7 @@ on: | |||||||
|     paths: |     paths: | ||||||
|       - frontend/** |       - frontend/** | ||||||
|  |  | ||||||
| name: Build and release apps to beta track | name: Build and release release apps to production track | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   get-version: |   get-version: | ||||||
| @@ -13,7 +13,6 @@ 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 | ||||||
| @@ -21,34 +20,27 @@ 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_OUTPUT |           echo "BUILD_NAME=${LATEST_TAG//v}" >> $GITHUB_ENV | ||||||
|  |  | ||||||
|       - name: Output the version that is being used |   # build-android: | ||||||
|         run: | |   #   name: Build and upload android app | ||||||
|           echo "Building for version ${{ steps.version.outputs.BUILD_NAME }}" |   #   uses: ./.gitea/workflows/workflow_build-app-android.yaml | ||||||
|  |   #   with: | ||||||
|     outputs: |   #     build_type: release # for current testing | ||||||
|       build_name: ${{ steps.version.outputs.BUILD_NAME }} |   #     build_name: ${{ env.BUILD_NAME }} | ||||||
|  |   #   secrets: | ||||||
|   build-android: |   #     ANDROID_SECRET_PROPERTIES_BASE64: ${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }} | ||||||
|     name: Build and upload android app |   #     ANDROID_GOOGLE_PLAY_JSON_BASE64: ${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }} | ||||||
|     uses: ./.gitea/workflows/workflow_build-app-android.yaml |   #     ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} | ||||||
|     with: |   #     ANDROID_GOOGLE_MAPS_API_KEY: ${{ secrets.ANDROID_GOOGLE_MAPS_API_KEY }} | ||||||
|       build_type: beta |   #   needs: get-version | ||||||
|       build_name: ${{ needs.get-version.outputs.build_name }} |  | ||||||
|     secrets: |  | ||||||
|       ANDROID_SECRET_PROPERTIES_BASE64: ${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }} |  | ||||||
|       ANDROID_GOOGLE_PLAY_JSON_BASE64: ${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }} |  | ||||||
|       ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} |  | ||||||
|       ANDROID_GOOGLE_MAPS_API_KEY: ${{ secrets.ANDROID_GOOGLE_MAPS_API_KEY }} |  | ||||||
|     needs: get-version |  | ||||||
|  |  | ||||||
|   build-ios: |   build-ios: | ||||||
|     name: Build and upload ios app |     name: Build and upload ios app | ||||||
|     uses: ./.gitea/workflows/workflow_build-app-ios.yaml |     uses: ./.gitea/workflows/workflow_build-app-ios.yaml | ||||||
|     with: |     with: | ||||||
|       build_type: beta |       build_type: release # for current testing | ||||||
|       build_name: ${{ needs.get-version.outputs.build_name }} |       build_name: ${{ env.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 }} | ||||||
| @@ -56,4 +48,6 @@ 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: build-android # technically not needed, but this prevents the builds from running in parallel |     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 apps to production track | name: Build and release release apps to production track | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   get-version: |   get-version: | ||||||
| @@ -11,28 +11,21 @@ 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_OUTPUT |           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV | ||||||
|  |  | ||||||
|       - 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: ${{ needs.get-version.outputs.build_name }} |       build_name: ${{ env.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 }} | ||||||
| @@ -45,7 +38,7 @@ 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: ${{ needs.get-version.outputs.build_name }} |       build_name: ${{ env.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 }} | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ defaults: | |||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|     runs-on: macos-14 |     runs-on: macos | ||||||
|     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-14 |     runs-on: macos | ||||||
|     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 | ||||||
| @@ -54,7 +54,6 @@ jobs: | |||||||
|           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 |       - 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: | | ||||||
| @@ -73,11 +72,6 @@ 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: | ||||||
|   | |||||||
							
								
								
									
										59
									
								
								frontend/.github/workflows/build_app_android.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,59 @@ | |||||||
|  | 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
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,64 @@ | |||||||
|  | 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: 'beta', |       track: 'alpha', | ||||||
|       # 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 +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 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. | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| app_identifier("info.anydev.anyway") # The bundle identifier of your app | app_identifier("info.anydev.testing") # 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,6 +28,17 @@ 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", | ||||||
| @@ -63,6 +74,15 @@ 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", | ||||||
| @@ -81,9 +101,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", | ||||||
|       screenshots_path: "fastlane/screenshots", |       screenshot_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 your 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 <our> 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. | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								frontend/ios/fastlane/metadata/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 | 
| @@ -1 +1 @@ | |||||||
| Any.Way | AnyWay | ||||||
| @@ -1 +1 @@ | |||||||
| TRAVEL |  | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| anydev.anyway@gmail.com |  | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| Remy |  | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| Moll |  | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| +4915128785827 |  | ||||||
|   | |||||||
| Before Width: | Height: | Size: 1.6 MiB | 
| Before Width: | Height: | Size: 2.2 MiB |