# Nepanikař! First aid for psychological issues - Official mobile app for [nepanikar.eu](https://nepanikar.eu/) ## Project specs & conventions - targeted platforms: iOS, Android - Flutter version: 3.47.x - code style: 100 characters per line - state management: [Provider](https://pub.dev/packages/provider) - routing: [GoRouter](https://pub.dev/packages/go_router) - data persistence: [sembast](https://pub.dev/packages/sembast) (NoSQL) ## Project documentation ### Running application Run command `flutter run` from root folder of application. ### Adding a new asset [flutter_gen](https://pub.dev/packages/flutter_gen) package lets us quickly generate paths for images/icons. To add a new asset, add it to `./assets/` and then run `flutter packages pub run build_runner build -d`. If you are creating a new assets folder, do not forget to reference it in `pubspec.yaml`. ### Updating localization files We are using [Localazy](https://localazy.com/) for managing app localizations. The prerequisites for running the localization update script are: - Python SDK - Python dependency `stringcase`: `pip install stringcase` - Localazy CLI (run `npm install -g @localazy/cli` or see [Installation](https://localazy.com/docs/cli/installation) page for other options) After that, you can simply run the script located in `./bin/localazy/localazy_gen.sh`. When adding a new language: 1. Create the localization file in lib/app/l10n/arb/ 2. Create appropriate android/app/src/main/res/values-LOCALE 3. Create appropriate ios/Runner/LOCALE.lproj ### Updating contacts & help data Contacts & help data are generated from Dart objects for easier maintainability. These data are then converted and shipped within the app as JSON which is located in the `./assets/contacts/` folder. The whole contacts & help UI in the app is controlled by the content of this JSON file. The prerequisites for updating and regenerating these data is: - Dart SDK The source of these data is managed by `nepanikar_contacts_gen` Dart package. Source data are located in `./packages/nepanikar_contacts_gen/bin/translation_extra_files/{language_tag}.dart`. Make the necessary changes, then simply run the script located in `./bin/nepanikar_contacts_gen/` to regenerate the JSON file. ### Commands - `flutter run` - run application - `flutter packages pub run build_runner build -d` - regenerate go_route/freezed/assets files - `flutter pub run build_runner watch -d` - watch and generate automatically changes when files are changed - `flutter gen-l10n` - recompile .arb language files - `flutter pub run flutter_native_splash:create` - regenerate splash screen - `dart format --line-length 100 ./` - automatic formatting of the project