Contributing to Rush
June 1, 2026 ยท View on GitHub
Thank you for your interest in contributing to Rush! We appreciate your support.
Project Structure
Rush is organized into several modules to support Kotlin Multiplatform (KMP) and maintain a clean separation of concerns:
:androidApp: The main Android application module. It contains Android-specific configurations, entry points, and orchestrates dependency injection.:desktopApp: The main Desktop (Linux) application module. Can also be used for hot-reload withdesktopApp:hotRunJvm --auto -PmainClass=com.shub39.rush.MainKt:shared:core: A Kotlin Multiplatform module containing shared interfaces, data models, enums, and basic utility functions.:shared:logic: A Kotlin Multiplatform module containing the core business logic, including repository implementations, networking, database management, and shared dependency injection.:shared:ui: A Compose Multiplatform module containing UI components, themes, screens, and ViewModels. Most UI-related changes should happen here.:androidLibs: Contains Android-specific libraries::androidLibs:romanization: Handles romanization of various languages.:androidLibs:visualizer-helper: Helpers for audio visualization.
How to Contribute
- Fork the Repository: Fork the repository to your own GitHub account.
- Create a Branch: Create a new branch from
devfor your feature or bug fix. Use a descriptive name, such asfeat/add-new-featureorfix/resolve-issue-123. - Make Your Changes:
- Shared Code: Prefer putting core definitions in
:shared:core, business logic implementations in:shared:logic, and UI/ViewModels in:shared:uiwithincommonMainto ensure they are available on all platforms. - Platform-Specific Code: Only use platform-specific source sets (
androidMain,jvmMain, etc.) when absolutely necessary usingexpect/actualor platform-specific APIs.
- Shared Code: Prefer putting core definitions in
- Submit a Pull Request: Once you're ready, submit a pull request from your branch to the
devbranch of the main repository. Please reference the issue you created in your pull request description.
Pull Request Guidelines
- Ensure your code follows the existing style and conventions.
- Write clear and concise commit messages.
- Make sure your changes are well-tested.
- Run spotless
./gradlew spotlessApplybefore making a commit to ensure code formatting.
Compose Guidelines
- Modifier: Always expose a
Modifierparameter for each composable to allow customization from the caller. - Previews: Write Previews for significant composables (components, screens, etc.) in
shared:ui. - Theming: Use
@PreviewWrapper(RushPreviewWrapper::class)for previews to ensure consistent theming across all previews. - Location: Keep previews in the same file as the composable, preferably as a private function at the bottom of the file.
I'll review your pull request as soon as possible. Thank you for your contribution!