First of all, I'd like to express my appreciation to you for contributing to this project. Below is the guidance for how to report issues, propose new features, and submit contributions via Pull Requests (PRs).
If you have a question, think you've discovered an issue, would like to propose a new feature, etc., then find/file an issue BEFORE starting work to fix/implement it.
Before filing a new issue, search existing open and closed issues first: It is likely someone else has found the problem you're seeing, and someone may be working on or have already contributed a fix!
If no existing item describes your issue/feature, great - please file a new issue.
For those able & willing to help fix issues and/or implement features ...
Make sure you have
- JDK 17
- Xcode 15 if you're building for iOS/macOS
Flare uses ktlint to check the code style for Kotlin, so make sure run ./gradlew ktlintFormat
and fix the errors before you submit any PR.
- Make sure you have JDK 17 installed
- Run
./gradlew installDebug
to build and install the debug version of the app - You can open the project in Android Studio or IntelliJ IDEA if you want
- Make sure you have a Mac with Xcode 15 installed
- open
iosApp/iosApp.xcodeproj
in Xcode - Build and run the app
The project is split into 3 parts:
shared
: The common code shared between Android and iOS/macOSapp
: The Android appiosApp
: The iOS/macOS app
Most of the business logic is in shared
, and the platform specific code and UI is in app
and iosApp
.
Flare uses Kotlin Multiplatform to share code between platforms, Jetpack Compose for the UI on Android, SwiftUI for the UI on iOS/macOS.
Flare leverages Molecule to implement business logic, with most presenters extending from PresenterBase
. Additionally, Flare employs the concept of a "single source of truth" to ensure consistency in its business logic implementation.
Since Flare uses Jetpack Compose and SwiftUI, both of which are declarative UI frameworks, ensure that the UI contains no business logic and is solely responsible for rendering the state provided by the presenter.