{"id":20950145,"url":"https://github.com/aeecleclair/titan","last_synced_at":"2026-01-07T02:15:29.817Z","repository":{"id":47964338,"uuid":"477009393","full_name":"aeecleclair/Titan","owner":"aeecleclair","description":"A Frontend client for Hyperion","archived":false,"fork":false,"pushed_at":"2024-05-22T14:26:45.000Z","size":56311,"stargazers_count":8,"open_issues_count":48,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-22T14:45:44.587Z","etag":null,"topics":["android","dart","flutter","ios"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aeecleclair.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-02T09:34:49.000Z","updated_at":"2024-05-31T08:29:10.333Z","dependencies_parsed_at":"2023-09-23T18:40:28.175Z","dependency_job_id":"a01d9eaf-839a-4dba-ad4d-3f2f5daf900d","html_url":"https://github.com/aeecleclair/Titan","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeecleclair%2FTitan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeecleclair%2FTitan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeecleclair%2FTitan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeecleclair%2FTitan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aeecleclair","download_url":"https://codeload.github.com/aeecleclair/Titan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225275430,"owners_count":17448386,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","dart","flutter","ios"],"created_at":"2024-11-19T00:45:51.649Z","updated_at":"2026-01-07T02:15:29.812Z","avatar_url":"https://github.com/aeecleclair.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Titan\n\nTitan 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.\n\nOur builds of Titan are called MyECL and can be downloaded from the App Store and from the Google Play Store.\n\n## Setup environment\n\nInstall Flutter:\nhttps://docs.flutter.dev/get-started/install\n\nSetup VS Code for Flutter development:\nhttps://docs.flutter.dev/get-started/editor?tab=vscode\n\nTitan is designed to be launched on Web, Android and iOS platforms.\n\n## Configure Titan\n\nUpdate [`.env`](.env) to match your Hyperion's backend:\n\n`PROD_HOST = \"\u003c\u003cYour Production Server Host\u003e\u003e`\n\nYou can also specify an other host for debuging:\n\n`DEV_HOST = \"\u003c\u003cYour Debbuging Server Host\u003e\u003e`\n\nNB: a trailing slash is required.\n\n## Development\n\n### Formatting\n\nTo format code use `dart format .`\n\n```\ndart format .\n```\n\n### Linting\n\nTitan support linting according to the official [Flutter static analysis options](https://dart.dev/guides/language/analysis-options).\n\nThe linter can be launched using:\n\n```\ndart analyze\n```\n\nDart allows you to fix issues in your code with the dart command `dart fix`.\n\nTo preview proposed changes, use the `--dry-run` flag:\n\n```\ndart fix --dry-run\n```\n\nTo apply the proposed changes, use the --apply flag:\n\n```\ndart fix --apply\n```\n\n### Testing\n\nTitan's tests follow the official [Flutter documentation](https://docs.flutter.dev/testing).\n\nTests can be run using:\n\n```bash\nflutter test --flavor dev\n```\n\nTo run a specific test file :\n\n```bash\nflutter test --flavor dev path/to/file.dart\n```\n\n### Flavors\n\nTitan supports [flavors](https://docs.flutter.dev/deployment/flavors), which allows to easily switch between several versions of Titan for several use cases.\n\nTitan includes 3 flavors: `dev`, `alpha`, `prod`. On VSCode, you can choose which flavor to use when launching the debugger\n\nEach 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)\n\n#### Build with a flavor\n\nTo build Titan with a specific flavor use:\n\n```\nflutter build {target} --flavor={flavor}\n```\n\nCurrently flavor are not supported for Flutter for web, you should use:\n\n```\nflutter build web --dart-define=flavor={flavor}\n```\n\n### Notifications setup\n\nNotifications are handled using the Firebase Cloud Messaging API. On mobile platforms, a valid notification configuration is required to debug Titan. Notifications are disabled on web builds.\n\nPlease refer to the [documentation](https://pub.dev/packages/firebase_messaging) of the corresponding Flutter's package to correctly setup notifications.\n\nPlease follow [Android](https://firebase.google.com/docs/cloud-messaging/android/client) or [iOS](https://firebase.google.com/docs/cloud-messaging/ios/client) Firebase documentation to setup notifications.\n\n#### Android FCM config file\n\nFor Android, add your `google-services.json` in `android/app/src/\u003cflavor\u003e/`.\n\n#### iOS FCM config file\n\nFor iOS, add your `GoogleService-Info.plist` in `ios/config/\u003cflavor/`.\n\n## Advanced\n\n### Allows non SSL connexion to use a custom local Hyperion backend\n\nOn mobile, using plaintext HTTP connexions may raise issues.\n\n#### Android\n\nUpdate [AndroidManifest.xml](./android/app/src/debug/AndroidManifest.xml):\n\n```\n\u003capplication\n    ...\n    android:usesCleartextTraffic=\"true\"\n    ...   \u003e\n```\n\n#### iOS\n\nUpdate [Info.plist](ios/Runner/Info.plist):\n\n```\n\u003ckey\u003eCADisableMinimumFrameDurationOnPhone\u003c/key\u003e\n\u003ctrue/\u003e\n\u003ckey\u003eNSAppTransportSecurity\u003c/key\u003e\n\u003cdict\u003e\n\t\u003ckey\u003eNSAllowsArbitraryLoads\u003c/key\u003e\n\t\u003ctrue/\u003e\n\t\u003ckey\u003eNSExceptionDomains\u003c/key\u003e\n\t\u003cdict\u003e\n\t\t\u003ckey\u003eyourdomain.com\u003c/key\u003e\n\t\t\u003cdict\u003e\n\t\t\t\u003ckey\u003eNSIncludesSubdomains\u003c/key\u003e\n\t\t\t\u003ctrue/\u003e\n\t\t\t\u003ckey\u003eNSThirdPartyExceptionRequiresForwardSecrecy\u003c/key\u003e\n\t\t\t\u003cfalse/\u003e\n\t\t\u003c/dict\u003e\n\t\u003c/dict\u003e\n\u003c/dict\u003e\n```\n\n### Update Titan's icon\n\nFirst update the icon's file and update [pubspec.yaml](./pubspec.yaml).\n\nThen, `flutter_launcher_icons` must be updated:\n\n```bash\nflutter pub get\nflutter pub run flutter_launcher_icons\n```\n\n### Upgrade Gradle version\n\n[Guided upgrade using Android Studio](https://docs.flutter.dev/release/breaking-changes/android-java-gradle-migration-guide#solution-1-guided-fix-using-android-studio)\n[Java and Gradle compatibility](https://docs.gradle.org/current/userguide/compatibility.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faeecleclair%2Ftitan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faeecleclair%2Ftitan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faeecleclair%2Ftitan/lists"}