- Introduction
- Features
- Upcoming Features
- Quick start
- Prerequisites
- Getting Started
- Documentation
- Architecture Decision Record
- Flutter catalyst is an opinionated code structure along with recommended coding practices to spread common pattern and practices followed in the community.
- A decent local dev set up, CI/CD setup and detailed documentation for all the features.
- As part of version
2.0.0
, setup for E2E testing, Code Obfuscation with Proguard, Adopting to Material 3 Library along with few bug fixes has been done. - Ready to use development and production environments setup.
Note:
You can refer to the artifacts of previous release version 1.0.0
here - https://drive.google.com/file/d/1uVZyqzZ9U3t0g0i_Ai-rAgWmWNtOx-xQ/view?usp=share_link
- Monorepo
- Static code and analysis
- Flutter analyzer
- Commit hook
- Flutter format
- Talisman
- Storage
- Hive storage
- Secure storage
- Common interfaces
- Factory pattern
- Network
- Dio
- Abort controller
- Endpoint code generation
- Testing
- Unit test
- Widget test
- Generating mocks
- Routing
- AutoRoute
- Generate app routes
- Route guard
- Route wrapper
- Localisation
- Theming
- DLS
- Environment
- CI/CD
- GitHub actions
- Deployment
- Setup for E2E Testing
- Code Obfuscation with Proguard
- Reduced apk size
- Faster boot time
- SSL Pinning
- Crashlytics
- Universal links support
- Feature Toggle
The project also includes the following custom packages:
- storage: A custom package for managing local storage.
- dls: A custom package for implementing design language systems.
- network: A custom package for managing network requests.
- config: A custom package for managing app configurations.
- localization: A custom package for implementing localization support.
- Flutter - 3.7.11
- Dart - 2.19.6
- Xcode - 13.4, iOS 15
- Cocoapods
- Android Studio and Android SDK(21-31)
Refer Flutter environment setup to setup all prerequisites (select Windows / MacOS and follow instructions according to your OS).
-
For NEO users download the repo using
Download source code
button on top right. -
Install melos
flutter pub global activate melos 2.9.0
-
Install Dependencies To install flutter dependencies run the following commands
flutter pub global run melos bootstrap
or we can use make commands that are already configured
make bootstrap
-
Get the list of devices This command will help to get list devices running the machine
make list-devices
-
Run the app To Run the application, give the prefix of the device
make app/<DEVICE PREFIX>
Default Flavor and Build Type is development and debug respectively. We can change them by passing FLAVOR and B_TYPE in make command as follows:
make app/<DEVICE PREFIX> FLAVOR=<FLAVOR> B_TYPE=<Build_Type>
Note:
To perform various operations like format, test, analyze you can refer to Makefile.
Once application gets started, it renders the login page. Logging to the application using following credentials
User Id : derek
Password : jklg*_56
NOTE: Check the right corner of the Appbar
to change the Language and Theme
.
- Monorepo
- CI/CD
- Config management
- Tools
- Storage
- Code Obfuscation with Proguard
- Integration Testing E2E
Observations on E2E Setup:
- As we have basic setup for integration test, we have not setup workflows for it. User can setup integration pipeline according to the requirement.
- As observed during running integration test on pipeline, there is complication to get stable Device configuration. Somehow it works with Android 11(most stable with Pixel 2 api 30). Upgraded version of devices give different issues in test cases.
- Test cases behaves flaky and gives error "Bad state: No element", but issue gets resolve when use certain time delay. (pump() and pumpAndSettle).
Please refer decisions folder to learn more about our tech choices and more detailed comparisons.
Note:
For security reasons we have deleted google-service.json and GoogleService-Info.plist file from the project.
If there is need of push notification and other things that required firebase usages. We need to add google-service.json and GoogleService-Info.plist files in native layer to set firebase sdk. For more information you refer Firebase SDK setup documentation (docs/firebase_sdk_setup/firebase_sdk_setup.md).