Note
This branch is designed for partial customized projects. Running the customizer.sh
script
doesn't rename any application module, instead it'll change all core
and feature
module
namespaces, packages, and other related configurations accordingly.
For full customization, please use the full-customizable
branch instead.
- Cross-Platform Support: Android, iOS, Desktop, and Web applications from a single codebase
- Multi-Module Architecture: Clean, organized, and scalable project structure
- Advanced Source Set Hierarchy: Sophisticated code sharing structure with logical platform groupings
- Pre-configured CI/CD: GitHub Actions workflows for building, testing, and deployment
- Code Quality Tools: Static analysis and formatting tools pre-configured
- Sync Capabilities: Tools to stay in sync with upstream template changes
- Secrets Management: Secure handling of keystores and sensitive information
- Bash 4.0+
- Unix-like environment (macOS, Linux) or Git Bash on Windows
- Android Studio/IntelliJ IDEA
- Xcode (for iOS development)
- Node.js (for web development)
- Clone the Repository
git clone https://github.com/openMF/kmp-project-template.git
cd kmp-project-template
- Run the Customizer
./customizer.sh org.example.myapp MyKMPProject
- Build and Run
./gradlew build
The project follows a modular architecture:
- Platform Modules:
cmp-android
,cmp-ios
,cmp-desktop
,cmp-web
, etc. - Core Modules: Common, reusable components shared across all features
- Feature Modules: Self-contained feature implementations
- Build Logic: Custom Gradle plugins and build configuration
Our project includes comprehensive documentation to help you get started and understand the architecture:
- Setup Guide - Detailed instructions for setting up your development environment
- Architecture Overview - Explanation of the project's structure and design patterns
- Code Style Guide - Coding conventions and best practices
- Source Set Hierarchy - Guide to the Kotlin Multiplatform code sharing structure
- Sync Script - Information about keeping in sync with upstream changes
- Secrets Manager - Documentation for the keystore and secrets management system
- Fastlane Configuration - Guide to automating deployments with fastlane
Documentation is continuously improving. Check back for updates or contribute to enhancing our docs!
We welcome contributions to improve the project template! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a pull request
Please follow our Contributing Guidelines for detailed information.
- Join our Slack channel
- Report issues on GitHub
- Track progress on Jira
This project is licensed under the Mozilla Public License 2.0