From f5ef8f20ef38ee31996c2d1772295cf8c5eb43af Mon Sep 17 00:00:00 2001 From: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:23:27 +0100 Subject: [PATCH 1/2] Fastlane documentation --- .env.template | 6 ------ .gitignore | 3 ++- README.md | 33 ++++++++++++++++++++++++++++++--- android/Gemfile | 2 ++ android/Gemfile.lock | 2 ++ ios/Gemfile.lock | 20 ++++++++++---------- 6 files changed, 46 insertions(+), 20 deletions(-) delete mode 100644 .env.template diff --git a/.env.template b/.env.template deleted file mode 100644 index 130341b4bd..0000000000 --- a/.env.template +++ /dev/null @@ -1,6 +0,0 @@ -# A trailing slash is required -DEV_HOST = "<>" -ALPHA_HOST = "<>" -PROD_HOST = "<>" -PLAUSIBLE_HOST = "<>" -PLAUSIBLE_DOMAIN = "<>" \ No newline at end of file diff --git a/.gitignore b/.gitignore index beb797db5c..b1fda3823e 100644 --- a/.gitignore +++ b/.gitignore @@ -88,5 +88,6 @@ config/ keys MainActivity.kt +android/build/reports/problems/problems-report.html -.env \ No newline at end of file +.env diff --git a/README.md b/README.md index ba1c3887be..83c51e2953 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ Titan is designed to be launched on Web, Android and iOS platforms. ## Configure Titan +TODO remove + Update [`.env`](.env) to match your Hyperion's backend: `PROD_HOST = "<>` @@ -171,16 +173,41 @@ flutter pub run flutter_launcher_icons [Guided upgrade using Android Studio](https://docs.flutter.dev/release/breaking-changes/android-java-gradle-migration-guide#solution-1-guided-fix-using-android-studio) [Java and Gradle compatibility](https://docs.gradle.org/current/userguide/compatibility.html) -# Configuring fastlane +# Using Fastlane + +## Fastlane configuration + +You need to create config json files: + +- config/config-dev.json +- config/config-alpha.json +- config/config-prod.json -Google service account +For automated signature and upload, you need to provide the following keys: + +- Google service account ``` android/fastlane-service-account.json ``` -Apple +- Apple App Store Connect API key ``` ios/app-store-connect-api.p8 ``` + +## Build using Fastlane + +```bash +cd ios # or android +bundle exec fastlane beta flavor:alpha # or prod or dev +``` + +## Run (without fastlane) + +TODO: migrate to fastlane? + +```bash +flutter run --flavor dev --dart-define-from-file=config/config-dev.json --web-port 3000 +``` diff --git a/android/Gemfile b/android/Gemfile index fdf182dfa5..35a6e64aac 100644 --- a/android/Gemfile +++ b/android/Gemfile @@ -3,3 +3,5 @@ source "https://rubygems.org" gem "abbrev" gem "fastlane" gem "ostruct" + +gem "nkf" \ No newline at end of file diff --git a/android/Gemfile.lock b/android/Gemfile.lock index 20e10f585d..e562a81890 100644 --- a/android/Gemfile.lock +++ b/android/Gemfile.lock @@ -172,6 +172,7 @@ GEM mutex_m (0.3.0) nanaimo (0.4.0) naturally (2.3.0) + nkf (0.2.0) optparse (0.8.0) os (1.1.4) ostruct (0.6.1) @@ -227,6 +228,7 @@ PLATFORMS DEPENDENCIES abbrev fastlane + nkf ostruct BUNDLED WITH diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock index 31ca9de4b3..d0842adaf4 100644 --- a/ios/Gemfile.lock +++ b/ios/Gemfile.lock @@ -8,16 +8,16 @@ GEM i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) + addressable (2.8.8) + public_suffix (>= 2.0.2, < 8.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.4.0) - aws-partitions (1.1187.0) - aws-sdk-core (3.239.1) + aws-partitions (1.1200.0) + aws-sdk-core (3.240.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -28,7 +28,7 @@ GEM aws-sdk-kms (1.118.0) aws-sdk-core (~> 3, >= 3.239.1) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.205.0) + aws-sdk-s3 (1.209.0) aws-sdk-core (~> 3, >= 3.234.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) @@ -37,7 +37,7 @@ GEM babosa (1.0.4) base64 (0.3.0) benchmark (0.4.1) - bigdecimal (3.3.1) + bigdecimal (4.0.1) claide (1.1.0) cocoapods (1.16.2) addressable (~> 2.8) @@ -114,7 +114,7 @@ GEM faraday-em_synchrony (1.0.1) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.1.1) + faraday-multipart (1.2.0) multipart-post (~> 2.0) faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) @@ -221,7 +221,7 @@ GEM i18n (1.14.7) concurrent-ruby (~> 1.0) jmespath (1.6.2) - json (2.16.0) + json (2.18.0) jwt (2.10.2) base64 logger (1.7.0) @@ -229,7 +229,7 @@ GEM mini_mime (1.1.5) minitest (5.25.5) molinillo (0.8.0) - multi_json (1.17.0) + multi_json (1.19.1) multipart-post (2.4.1) mutex_m (0.3.0) nanaimo (0.4.0) @@ -239,7 +239,7 @@ GEM nkf (0.2.0) og-corefoundation (0.2.3) ffi - optparse (0.8.0) + optparse (0.8.1) os (1.1.4) ostruct (0.6.1) plist (3.7.2) From fe113e3ab6ceca23275863f665fded23d267b9e5 Mon Sep 17 00:00:00 2001 From: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Date: Sat, 7 Feb 2026 10:23:20 +0100 Subject: [PATCH 2/2] Readme --- README.md | 93 +++++++++++++++++++++++-------------------------------- 1 file changed, 38 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index 83c51e2953..1e3a3aa9a9 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,44 @@ # Titan -Titan is a cross platform frontend written in Flutter for an open-source project launched by ÉCLAIR, the computer science association of Ecole Centrale de Lyon. This project aims to provide students of business and engineering schools a digital tool to simplify the association process. +Titan is a cross platform frontend written in Flutter for an open-source project launched by ÉCLAIR and maintained by ProximApp. This project aims to provide students of business and engineering schools a digital tool to simplify campus life and student association activities. -Our builds of Titan are called MyECL and can be downloaded from the App Store and from the Google Play Store. +## Flavors -## Setup environment +Titan supports [flavors](https://docs.flutter.dev/deployment/flavors), which allows the developer to easily switch between several versions of Titan for several use cases. -Install Flutter: -https://docs.flutter.dev/get-started/install +Titan includes 3 flavors: `dev`, `alpha`, `prod`. On VSCode, you can choose which flavor to use when launching the debugger -Setup VS Code for Flutter development: -https://docs.flutter.dev/get-started/editor?tab=vscode +Each flavor is associated with a specific app package name (`*.titan.dev`, `*.titan.alpha`, `*.titan`) allowing the three app to be installed simultaneously on the same device. -Titan is designed to be launched on Web, Android and iOS platforms. +## Base configuration -## Configure Titan +You need to create config json files with required variables: + +- config/config-dev.json +- config/config-alpha.json +- config/config-prod.json + +## Development -TODO remove +### Setup dev environment -Update [`.env`](.env) to match your Hyperion's backend: +Install Flutter: +https://docs.flutter.dev/get-started/install -`PROD_HOST = "<>` +Setup VS Code for Flutter development: +https://docs.flutter.dev/get-started/editor?tab=vscode -You can also specify an other host for debuging: +Titan is designed to be launched on Web, Android and iOS platforms. -`DEV_HOST = "<>` +### Run Titan -NB: a trailing slash is required. +```bash +flutter run --flavor dev --dart-define-from-file=config/config-dev.json --web-port 3000 +# flutter run --flavor alpha --dart-define-from-file=config/config-alpha.json --web-port 3000 +# flutter run --flavor prod --dart-define-from-file=config/config-prod.json --web-port 3000 +``` -## Development +Titan can be launched from VS Code _Run and Debug_ menu. ### Formatting @@ -78,27 +88,7 @@ To run a specific test file : flutter test --flavor dev path/to/file.dart ``` -### Flavors - -Titan supports [flavors](https://docs.flutter.dev/deployment/flavors), which allows to easily switch between several versions of Titan for several use cases. - -Titan includes 3 flavors: `dev`, `alpha`, `prod`. On VSCode, you can choose which flavor to use when launching the debugger - -Each flavor is associated with a specific app package name (`fr.myecl.titan.dev`, `fr.myecl.titan.alpha`, `fr.myecl.titan`) allowing the three app to be installed on the same device. Each flavor use its own Hyperion url defined in the [dotenv](/.env) - -#### Build with a flavor - -To build Titan with a specific flavor use: - -``` -flutter build {target} --flavor={flavor} -``` - -Currently flavor are not supported for Flutter for web, you should use: - -``` -flutter build web --dart-define=flavor={flavor} -``` +## Advanced Configuration ### Notifications setup @@ -120,8 +110,13 @@ For iOS, add your `GoogleService-Info.plist` in `ios/config/ + + On mobile, using plaintext HTTP connexions may raise issues. + + #### Android Update [AndroidManifest.xml](./android/app/src/debug/AndroidManifest.xml): @@ -157,11 +152,13 @@ Update [Info.plist](ios/Runner/Info.plist): ``` + + ### Update Titan's icon First update the icon's file and update [pubspec.yaml](./pubspec.yaml). -Then, `flutter_launcher_icons` must be updated: +Then run `flutter_launcher_icons` to generate all variants of the icon: ```bash flutter pub get @@ -173,15 +170,9 @@ flutter pub run flutter_launcher_icons [Guided upgrade using Android Studio](https://docs.flutter.dev/release/breaking-changes/android-java-gradle-migration-guide#solution-1-guided-fix-using-android-studio) [Java and Gradle compatibility](https://docs.gradle.org/current/userguide/compatibility.html) -# Using Fastlane - -## Fastlane configuration - -You need to create config json files: +## Building using Fastlane -- config/config-dev.json -- config/config-alpha.json -- config/config-prod.json +### Fastlane configuration For automated signature and upload, you need to provide the following keys: @@ -197,17 +188,9 @@ android/fastlane-service-account.json ios/app-store-connect-api.p8 ``` -## Build using Fastlane +### Build and upload a version ```bash cd ios # or android bundle exec fastlane beta flavor:alpha # or prod or dev ``` - -## Run (without fastlane) - -TODO: migrate to fastlane? - -```bash -flutter run --flavor dev --dart-define-from-file=config/config-dev.json --web-port 3000 -```