Metadata for app store releases #44
							
								
								
									
										51
									
								
								.gitea/workflows/frontend_deploy-beta.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,51 @@
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    paths:
 | 
			
		||||
      - frontend/**
 | 
			
		||||
 | 
			
		||||
name: Build and release release apps to production track
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  get-version:
 | 
			
		||||
    name: Get version
 | 
			
		||||
    runs-on: macos
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://gitea.com/actions/checkout@v4
 | 
			
		||||
      - 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
 | 
			
		||||
        id: version
 | 
			
		||||
        run: |
 | 
			
		||||
          git fetch origin main --tags
 | 
			
		||||
          LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
 | 
			
		||||
          # remove the 'v' prefix from the tag name
 | 
			
		||||
          echo "BUILD_NAME=${LATEST_TAG//v}" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
  build-android:
 | 
			
		||||
    name: Build and upload android app
 | 
			
		||||
    uses: ./.gitea/workflows/workflow_build-app-android.yaml
 | 
			
		||||
    with:
 | 
			
		||||
      build_type: beta
 | 
			
		||||
      build_name: ${{ env.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:
 | 
			
		||||
    name: Build and upload ios app
 | 
			
		||||
    uses: ./.gitea/workflows/workflow_build-app-ios.yaml
 | 
			
		||||
    with:
 | 
			
		||||
      build_type: beta
 | 
			
		||||
      build_name: ${{ env.BUILD_NAME }}
 | 
			
		||||
    secrets:
 | 
			
		||||
      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 }}
 | 
			
		||||
      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 }}
 | 
			
		||||
    needs: get-version
 | 
			
		||||
							
								
								
									
										49
									
								
								.gitea/workflows/frontend_deploy-release.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,49 @@
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    tags:
 | 
			
		||||
      - v*
 | 
			
		||||
 | 
			
		||||
name: Build and release release apps to production track
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  get-version:
 | 
			
		||||
    name: Get version
 | 
			
		||||
    runs-on: macos
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://gitea.com/actions/checkout@v4
 | 
			
		||||
      - name: Get version from git tag
 | 
			
		||||
        id: version
 | 
			
		||||
        env: 
 | 
			
		||||
          REF_NAME: ${{ gitea.ref_name }}
 | 
			
		||||
        # remove the 'v' prefix from the tag name
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  build-android:
 | 
			
		||||
    name: Build and upload android app
 | 
			
		||||
    uses: ./.gitea/workflows/workflow_build-app-android.yaml
 | 
			
		||||
    with:
 | 
			
		||||
      build_type: release
 | 
			
		||||
      build_name: ${{ env.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:
 | 
			
		||||
    name: Build and upload ios app
 | 
			
		||||
    uses: ./.gitea/workflows/workflow_build-app-ios.yaml
 | 
			
		||||
    with:
 | 
			
		||||
      build_type: release
 | 
			
		||||
      build_name: ${{ env.BUILD_NAME }}
 | 
			
		||||
    secrets:
 | 
			
		||||
      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 }}
 | 
			
		||||
      IOS_MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }}
 | 
			
		||||
      IOS_MATCH_REPO_SSH_KEY_BASE64: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }}
 | 
			
		||||
      IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }}
 | 
			
		||||
    needs: get-version
 | 
			
		||||
@@ -1,18 +1,30 @@
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    paths:
 | 
			
		||||
      - frontend/**
 | 
			
		||||
  workflow_call:
 | 
			
		||||
    inputs:
 | 
			
		||||
      build_type:
 | 
			
		||||
        description: 'Release type (release, beta)'
 | 
			
		||||
        required: true
 | 
			
		||||
        type: string
 | 
			
		||||
      build_name:
 | 
			
		||||
        description: 'Build name'
 | 
			
		||||
        required: true
 | 
			
		||||
        type: string
 | 
			
		||||
    secrets:
 | 
			
		||||
      ANDROID_SECRET_PROPERTIES_BASE64:
 | 
			
		||||
        required: true
 | 
			
		||||
      ANDROID_GOOGLE_PLAY_JSON_BASE64:
 | 
			
		||||
        required: true
 | 
			
		||||
      ANDROID_KEYSTORE_BASE64:
 | 
			
		||||
        required: true
 | 
			
		||||
      ANDROID_GOOGLE_MAPS_API_KEY:
 | 
			
		||||
        required: true
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
name: Build and release debug APK
 | 
			
		||||
name: Build and release android appbundle to specfied track
 | 
			
		||||
 | 
			
		||||
defaults:
 | 
			
		||||
  run:
 | 
			
		||||
    working-directory: frontend/android
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
    runs-on: macos
 | 
			
		||||
@@ -52,14 +64,6 @@ jobs:
 | 
			
		||||
        ruby-version: 3.3
 | 
			
		||||
        bundler-cache: true # runs 'bundle install' and caches installed gems automatically
 | 
			
		||||
 | 
			
		||||
    - name: Infer version number from git tag
 | 
			
		||||
      id: version
 | 
			
		||||
      env: 
 | 
			
		||||
        REF_NAME: ${{ gitea.ref_name }}
 | 
			
		||||
      run:
 | 
			
		||||
        # remove the 'v' prefix from the tag name
 | 
			
		||||
        echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
    - name: Add required secret files
 | 
			
		||||
      run: |
 | 
			
		||||
        echo "${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }}" | base64 -d > secrets.properties
 | 
			
		||||
@@ -67,8 +71,8 @@ jobs:
 | 
			
		||||
        echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > release.keystore
 | 
			
		||||
 | 
			
		||||
    - name: Run fastlane lane
 | 
			
		||||
      run: bundle exec fastlane deploy_beta
 | 
			
		||||
      run: bundle exec fastlane deploy_${{ inputs.build_type }}
 | 
			
		||||
      env:
 | 
			
		||||
        BUILD_NUMBER: ${{ gitea.run_number }}
 | 
			
		||||
        # BUILD_NAME is implicitly available
 | 
			
		||||
        BUILD_NAME: ${{ inputs.build_name }}
 | 
			
		||||
        ANDROID_GOOGLE_MAPS_API_KEY: ${{ secrets.ANDROID_GOOGLE_MAPS_API_KEY }}
 | 
			
		||||
@@ -1,11 +1,29 @@
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    paths:
 | 
			
		||||
      - frontend/**
 | 
			
		||||
  workflow_call:
 | 
			
		||||
    inputs:
 | 
			
		||||
      build_type:
 | 
			
		||||
        description: 'Release type (release, beta)'
 | 
			
		||||
        required: true
 | 
			
		||||
        type: string
 | 
			
		||||
      build_name:
 | 
			
		||||
        description: 'Build name'
 | 
			
		||||
        required: true
 | 
			
		||||
        type: string
 | 
			
		||||
    secrets:
 | 
			
		||||
      IOS_ASC_KEY_ID:
 | 
			
		||||
        required: true
 | 
			
		||||
      IOS_ASC_ISSUER_ID:
 | 
			
		||||
        required: true
 | 
			
		||||
      IOS_ASC_KEY:
 | 
			
		||||
        required: true
 | 
			
		||||
      IOS_MATCH_REPO_SSH_KEY_BASE64:
 | 
			
		||||
        required: true
 | 
			
		||||
      IOS_MATCH_PASSWORD:
 | 
			
		||||
        required: true
 | 
			
		||||
      IOS_GOOGLE_MAPS_API_KEY:
 | 
			
		||||
        required: true
 | 
			
		||||
 | 
			
		||||
name: Build and release debugging app to ios testflight
 | 
			
		||||
name: Build and release ipa to specified track
 | 
			
		||||
 | 
			
		||||
defaults:
 | 
			
		||||
  run:
 | 
			
		||||
@@ -29,26 +47,18 @@ jobs:
 | 
			
		||||
          architecture: x64
 | 
			
		||||
          cache: true
 | 
			
		||||
 | 
			
		||||
      - name: Install dependencies and clean up
 | 
			
		||||
        run: |
 | 
			
		||||
          flutter pub get
 | 
			
		||||
          bundle exec pod install
 | 
			
		||||
          flutter clean
 | 
			
		||||
          bundle exec pod cache clean --all
 | 
			
		||||
 | 
			
		||||
      - name: Set up ruby env
 | 
			
		||||
        uses: https://github.com/ruby/setup-ruby@v1
 | 
			
		||||
        with:
 | 
			
		||||
          ruby-version: 3.3
 | 
			
		||||
          bundler-cache: true # runs 'bundle install' and caches installed gems automatically
 | 
			
		||||
 | 
			
		||||
      - name: Infer version number from git tag
 | 
			
		||||
        id: version
 | 
			
		||||
        env: 
 | 
			
		||||
          REF_NAME: ${{ gitea.ref_name }}
 | 
			
		||||
        run:
 | 
			
		||||
          # remove the 'v' prefix from the tag name
 | 
			
		||||
          echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV
 | 
			
		||||
      - name: Install dependencies and clean up
 | 
			
		||||
        run: |
 | 
			
		||||
          flutter pub get
 | 
			
		||||
          bundle exec pod install --allow-root
 | 
			
		||||
          flutter clean
 | 
			
		||||
          bundle exec pod cache clean --all --allow-root
 | 
			
		||||
 | 
			
		||||
      - name: Setup SSH key for match git repo
 | 
			
		||||
        # and mark the host as known
 | 
			
		||||
@@ -60,11 +70,10 @@ jobs:
 | 
			
		||||
          MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }}
 | 
			
		||||
 | 
			
		||||
      - name: Run fastlane lane
 | 
			
		||||
        run: bundle exec fastlane deploy_beta
 | 
			
		||||
        run: bundle exec fastlane deploy_${{ inputs.build_type }}
 | 
			
		||||
        env:
 | 
			
		||||
          BUILD_NUMBER: ${{ gitea.run_number }}
 | 
			
		||||
          # BUILD_NAME is implicitly available
 | 
			
		||||
          GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }}
 | 
			
		||||
          BUILD_NAME: ${{ inputs.build_name }}
 | 
			
		||||
          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 }}
 | 
			
		||||
@@ -17,15 +17,9 @@ flutter pub get
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Development
 | 
			
		||||
### ...
 | 
			
		||||
### Icons and logos
 | 
			
		||||
The application uses a custom launcher icon and splash screen. These are managed platform-independently using the `flutter_launcher_icons` package.
 | 
			
		||||
 | 
			
		||||
To update the icons, change the `flutter_launcher_icons.yaml` configuration file. Especially the `image_path` is relevant. Then run
 | 
			
		||||
```bash
 | 
			
		||||
dart run flutter_launcher_icons
 | 
			
		||||
```
 | 
			
		||||
### TODO
 | 
			
		||||
 | 
			
		||||
## Deployment and metadata
 | 
			
		||||
### Deploying a new version
 | 
			
		||||
To truly deploy a new version of the application, i.e. to the official app stores, a special CI step is required. This listens for new tags. To create a new tag position yourself on the main branch and run
 | 
			
		||||
```bash
 | 
			
		||||
@@ -34,6 +28,18 @@ git push origin v<name>
 | 
			
		||||
```
 | 
			
		||||
We adhere to the [Semantic Versioning](https://semver.org/) standard, so the tag should be of the form `v0.1.8` for example. 
 | 
			
		||||
 | 
			
		||||
### Icons and logos
 | 
			
		||||
The application uses a custom launcher icon and splash screen. These are managed platform-independently using the `flutter_launcher_icons` package.
 | 
			
		||||
 | 
			
		||||
To update the icons, change the `flutter_launcher_icons.yaml` configuration file. Especially the `image_path` is relevant. Then run
 | 
			
		||||
```bash
 | 
			
		||||
dart run flutter_launcher_icons
 | 
			
		||||
```
 | 
			
		||||
### Other metadata
 | 
			
		||||
Fastlane provides mechanisms to update the metadata of the application. This includes the name, description, screenshots, etc. The metadata is stored in the `fastlane/metadata` directory of both the `android`and the `ios` version of the application. Both versions have different structures but **they should be kept in sync**. For more information see the [fastlane documentation](https://docs.fastlane.tools/):
 | 
			
		||||
- https://docs.fastlane.tools/actions/deliver/
 | 
			
		||||
- https://docs.fastlane.tools/actions/supply/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Fastlane - in depth
 | 
			
		||||
The application is deployed to the Google Play Store and the Apple App Store using fastlane: [https://docs.fastlane.tools/](https://docs.fastlane.tools/)
 | 
			
		||||
@@ -46,16 +52,17 @@ bundle exec fastlane <lane>
 | 
			
		||||
```
 | 
			
		||||
This is reused in the CI/CD pipeline to automate the deployment process.
 | 
			
		||||
 | 
			
		||||
Secrets used by fastlane are stored on hashicorp vault and are fetched by the CI/CD pipeline. See below.
 | 
			
		||||
 | 
			
		||||
## Secrets
 | 
			
		||||
These are mostly used by the CI/CD pipeline to deploy the application. The main usage for github actions is documented under [https://github.com/hashicorp/vault-action](https://github.com/hashicorp/vault-action).
 | 
			
		||||
These are used by the CI/CD pipeline to deploy the application.
 | 
			
		||||
 | 
			
		||||
**Platform-specific secrets** are used by the CI/CD pipeline to deploy to the respective app stores.
 | 
			
		||||
- `GOOGLE_MAPS_API_KEY` is used to authenticate with the Google Maps API and is scoped to the android platform
 | 
			
		||||
- `ANDROID_GOOGLE_MAPS_API_KEY` is used to authenticate with the Google Maps API and is scoped to the android platform
 | 
			
		||||
- `ANDROID_KEYSTORE` is used to sign the android apk
 | 
			
		||||
- `ANDROID_GOOGLE_KEY` is used to authenticate with the Google Play Store api
 | 
			
		||||
- `IOS_GOOGLE_MAPS_API_KEY` is used to authenticate with the Google Maps API and is scoped to the ios platform
 | 
			
		||||
- `IOS_GOOGLE_...`
 | 
			
		||||
- `IOS_GOOGLE_...`
 | 
			
		||||
- `IOS_GOOGLE_...`
 | 
			
		||||
- `IOS_ASC_ISSUER_ID` is used to authenticate with the App Store Connect API
 | 
			
		||||
- `IOS_ASC_KEY` as well
 | 
			
		||||
- `IOS_ASC_KEY_ID` as well
 | 
			
		||||
- `IOS_MATCH_PASSWORD` is used by fastlane match to download the certificates
 | 
			
		||||
- `IOS_MATCH_REPO_SSH_KEY_BASE64` is used to authenticate with the git repository where the certificates are stored
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,7 @@ platform :android do
 | 
			
		||||
      skip_upload_apk: true,
 | 
			
		||||
      skip_upload_changelogs: true,
 | 
			
		||||
      aab: "../build/app/outputs/bundle/release/app-release.aab",
 | 
			
		||||
      metadata_path: "fastlane/metadata",
 | 
			
		||||
      )
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
AnyWay - plan city trips your way
 | 
			
		||||
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 a mobile application that helps users plan city trips. The app allows users to specify their preferences and constraints, and then generates a personalized itinerary for them. The planning follows some guiding principles:
 | 
			
		||||
- **Personalization**:The user's preferences should be reflected in the choice of destinations.
 | 
			
		||||
- **Efficiency**:The itinerary should be optimized for the user's constraints.
 | 
			
		||||
- **Flexibility**: We aknowledge that tourism is a dynamic activity, and that users may want to change their plans on the go.
 | 
			
		||||
- **Discoverability**: Tourism is an inherently exploratory activity. Once a rough itinerary is generated, detours and spontaneous decisions should be encouraged.
 | 
			
		||||
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.
 | 
			
		||||
 
 | 
			
		||||
| 
		 After Width: | Height: | Size: 3.0 MiB  | 
| 
		 After Width: | Height: | Size: 4.1 MiB  | 
| 
		 After Width: | Height: | Size: 1.1 MiB  | 
| 
		 After Width: | Height: | Size: 1.1 MiB  | 
| 
		 Before Width: | Height: | Size: 106 KiB  | 
| 
		 Before Width: | Height: | Size: 1.3 MiB  | 
| 
		 Before Width: | Height: | Size: 637 KiB  | 
| 
		 Before Width: | Height: | Size: 573 KiB  | 
| 
		 Before Width: | Height: | Size: 175 KiB  | 
| 
		 Before Width: | Height: | Size: 360 KiB  | 
							
								
								
									
										3
									
								
								frontend/ios/fastlane/Deliverfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,3 @@
 | 
			
		||||
# The Deliverfile allows you to store various App Store Connect metadata
 | 
			
		||||
# For more information, check out the docs
 | 
			
		||||
# https://docs.fastlane.tools/actions/deliver/
 | 
			
		||||
@@ -99,8 +99,9 @@ platform :ios do
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    upload_to_app_store(
 | 
			
		||||
      skip_screenshots: true,
 | 
			
		||||
      skip_metadata: true,
 | 
			
		||||
      overwrite_screenshots: true,
 | 
			
		||||
      metadata_path: "fastlane/metadata",
 | 
			
		||||
      screenshot_path: "fastlane/screenshots",
 | 
			
		||||
      precheck_include_in_app_purchases: false,
 | 
			
		||||
 | 
			
		||||
      submit_for_review: true,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/copyright.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7
									
								
								frontend/ios/fastlane/metadata/en-US/description.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +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 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.
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								frontend/ios/fastlane/metadata/en-US/iOS Phones  6.9-01.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.6 MiB  | 
							
								
								
									
										
											BIN
										
									
								
								frontend/ios/fastlane/metadata/en-US/iOS Phones  6.9-02.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.1 MiB  | 
							
								
								
									
										
											BIN
										
									
								
								frontend/ios/fastlane/metadata/en-US/iOS Phones  6.9-03.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 626 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								frontend/ios/fastlane/metadata/en-US/iOS Phones  6.9-04.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 758 KiB  | 
| 
		 After Width: | Height: | Size: 2.2 MiB  | 
| 
		 After Width: | Height: | Size: 2.5 MiB  | 
| 
		 After Width: | Height: | Size: 574 KiB  | 
| 
		 After Width: | Height: | Size: 800 KiB  | 
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/en-US/keywords.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
tourism, cities, travel, guide
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/en-US/marketing_url.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
https://anydev.info
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/en-US/name.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
AnyWay
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/en-US/privacy_url.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
https://anydev.info/privacy
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
AnyWay - plan city trips your way!
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/en-US/release_notes.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/en-US/subtitle.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
Plan city trips your way!
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/en-US/support_url.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/primary_category.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/ios/fastlane/metadata/secondary_category.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										30
									
								
								frontend/ios/fastlane/screenshots/README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,30 @@
 | 
			
		||||
## Screenshots Naming Rules
 | 
			
		||||
 | 
			
		||||
Put all screenshots you want to use inside the folder of its language (e.g. `en-US`).
 | 
			
		||||
The device type will automatically be recognized using the image resolution.
 | 
			
		||||
 | 
			
		||||
The screenshots can be named whatever you want, but keep in mind they are sorted
 | 
			
		||||
alphabetically, in a human-friendly way. See https://github.com/fastlane/fastlane/pull/18200 for more details.
 | 
			
		||||
 | 
			
		||||
### Exceptions
 | 
			
		||||
 | 
			
		||||
#### iPad Pro (3rd Gen) 12.9"
 | 
			
		||||
 | 
			
		||||
Since iPad Pro (3rd Gen) 12.9" and iPad Pro (2nd Gen) 12.9" have the same image
 | 
			
		||||
resolution, screenshots of the iPad Pro (3rd gen) 12.9" must contain either the
 | 
			
		||||
string `iPad Pro (12.9-inch) (3rd generation)`, `IPAD_PRO_3GEN_129`, or `ipadPro129`
 | 
			
		||||
(App Store Connect's internal naming of the display family for the 3rd generation iPad Pro)
 | 
			
		||||
in its filename to be assigned the correct display family and to be uploaded to
 | 
			
		||||
the correct screenshot slot in your app's metadata.
 | 
			
		||||
 | 
			
		||||
### Other Platforms
 | 
			
		||||
 | 
			
		||||
#### Apple TV
 | 
			
		||||
 | 
			
		||||
Apple TV screenshots should be stored in a subdirectory named `appleTV` with language
 | 
			
		||||
folders inside of it.
 | 
			
		||||
 | 
			
		||||
#### iMessage
 | 
			
		||||
 | 
			
		||||
iMessage screenshots, like the Apple TV ones, should also be stored in a subdirectory
 | 
			
		||||
named `iMessage`, with language folders inside of it.
 | 
			
		||||
							
								
								
									
										48
									
								
								status
									
									
									
									
									
								
							
							
						
						@@ -1,48 +0,0 @@
 | 
			
		||||
error: wrong number of arguments, should be from 1 to 2
 | 
			
		||||
usage: git config [<options>]
 | 
			
		||||
 | 
			
		||||
Config file location
 | 
			
		||||
    --[no-]global         use global config file
 | 
			
		||||
    --[no-]system         use system config file
 | 
			
		||||
    --[no-]local          use repository config file
 | 
			
		||||
    --[no-]worktree       use per-worktree config file
 | 
			
		||||
    -f, --[no-]file <file>
 | 
			
		||||
                          use given config file
 | 
			
		||||
    --[no-]blob <blob-id> read config from given blob object
 | 
			
		||||
 | 
			
		||||
Action
 | 
			
		||||
    --[no-]get            get value: name [value-pattern]
 | 
			
		||||
    --[no-]get-all        get all values: key [value-pattern]
 | 
			
		||||
    --[no-]get-regexp     get values for regexp: name-regex [value-pattern]
 | 
			
		||||
    --[no-]get-urlmatch   get value specific for the URL: section[.var] URL
 | 
			
		||||
    --[no-]replace-all    replace all matching variables: name value [value-pattern]
 | 
			
		||||
    --[no-]add            add a new variable: name value
 | 
			
		||||
    --[no-]unset          remove a variable: name [value-pattern]
 | 
			
		||||
    --[no-]unset-all      remove all matches: name [value-pattern]
 | 
			
		||||
    --[no-]rename-section rename section: old-name new-name
 | 
			
		||||
    --[no-]remove-section remove a section: name
 | 
			
		||||
    -l, --[no-]list       list all
 | 
			
		||||
    --[no-]fixed-value    use string equality when comparing values to 'value-pattern'
 | 
			
		||||
    -e, --[no-]edit       open an editor
 | 
			
		||||
    --[no-]get-color      find the color configured: slot [default]
 | 
			
		||||
    --[no-]get-colorbool  find the color setting: slot [stdout-is-tty]
 | 
			
		||||
 | 
			
		||||
Type
 | 
			
		||||
    -t, --[no-]type <type>
 | 
			
		||||
                          value is given this type
 | 
			
		||||
    --bool                value is "true" or "false"
 | 
			
		||||
    --int                 value is decimal number
 | 
			
		||||
    --bool-or-int         value is --bool or --int
 | 
			
		||||
    --bool-or-str         value is --bool or string
 | 
			
		||||
    --path                value is a path (file or directory name)
 | 
			
		||||
    --expiry-date         value is an expiry date
 | 
			
		||||
 | 
			
		||||
Other
 | 
			
		||||
    -z, --[no-]null       terminate values with NUL byte
 | 
			
		||||
    --[no-]name-only      show variable names only
 | 
			
		||||
    --[no-]includes       respect include directives on lookup
 | 
			
		||||
    --[no-]show-origin    show origin of config (file, standard input, blob, command line)
 | 
			
		||||
    --[no-]show-scope     show scope of config (worktree, local, global, system, command)
 | 
			
		||||
    --[no-]default <value>
 | 
			
		||||
                          with --get, use default value when missing entry
 | 
			
		||||
 | 
			
		||||