|  |  | @@ -17,15 +17,9 @@ flutter pub get | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  | ``` | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ## Development |  |  |  | ## Development | 
			
		
	
		
		
			
				
					
					|  |  |  | ### ... |  |  |  | ### TODO | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | ### 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 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ## Deployment and metadata | 
			
		
	
		
		
			
				
					
					|  |  |  | ### Deploying a new version |  |  |  | ### 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 |  |  |  | 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 |  |  |  | ```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.  |  |  |  | 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 |  |  |  | ## 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/) |  |  |  | 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,18 @@ bundle exec fastlane <lane> | 
			
		
	
		
		
			
				
					
					|  |  |  | ``` |  |  |  | ``` | 
			
		
	
		
		
			
				
					
					|  |  |  | This is reused in the CI/CD pipeline to automate the deployment process. |  |  |  | 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 used by fastlane are stored as repository. | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ## Secrets |  |  |  | ## 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 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). | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | **Platform-specific secrets** are used by the CI/CD pipeline to deploy to the respective app stores. |  |  |  | **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_KEYSTORE` is used to sign the android apk | 
			
		
	
		
		
			
				
					
					|  |  |  | - `ANDROID_GOOGLE_KEY` is used to authenticate with the Google Play Store api |  |  |  | - `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_MAPS_API_KEY` is used to authenticate with the Google Maps API and is scoped to the ios platform | 
			
		
	
		
		
			
				
					
					|  |  |  | - `IOS_GOOGLE_...` |  |  |  | - `IOS_ASC_ISSUER_ID` is used to authenticate with the App Store Connect API | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | - `IOS_GOOGLE_...` |  |  |  | - `IOS_ASC_KEY` as well | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | - `IOS_GOOGLE_...` |  |  |  | - `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 | 
			
		
	
	
		
		
			
				
					
					| 
						
						
						
						 |  |   |