Macao is an Application microframework built with Compose Multiplatform.
It ships a variety of customizable navigation components such as Drawer
, BottomNavigation
, Pager
, Panel
, Topbar
and Stack
. But it also offers the API to expand the existing components and/or create new ones.
The framework also contains an Application architecture module with APIs for App startup and a Plug-in infrastructure that allows easy integration of platform specific code into commonMain code.
-One image is worth a thousand words
![macao-sdk-arch](https://private-user-images.githubusercontent.com/5303301/287160925-2f3b0d28-c3ab-42cd-9de0-094d373503c7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQxMjMwNjcsIm5iZiI6MTcyNDEyMjc2NywicGF0aCI6Ii81MzAzMzAxLzI4NzE2MDkyNS0yZjNiMGQyOC1jM2FiLTQyY2QtOWRlMC0wOTRkMzczNTAzYzcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgyMCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MjBUMDI1OTI3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Y2M0ZjY3Yjc5ZTNiYzYwOWRlYjM4NmU1ZmE4ZmNiODFlNjcxMTNhZDQzOGVkZTFmNWMwYmE5NzAyMGM2N2FkZSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.KUIrSvc53pVowyOMkE39hbEsq7kFq3-mnzEUXD2yFME)
![macao-component-diagram](https://private-user-images.githubusercontent.com/5303301/320130218-fa58c951-0fc7-470d-b2a0-9a534a405c34.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQxMjMwNjcsIm5iZiI6MTcyNDEyMjc2NywicGF0aCI6Ii81MzAzMzAxLzMyMDEzMDIxOC1mYTU4Yzk1MS0wZmM3LTQ3MGQtYjJhMC05YTUzNGE0MDVjMzQucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgyMCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MjBUMDI1OTI3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MzliMjBhMTg2NzVlYTkxZTAzN2Q3NDM2MjJiMjYyZWU5NzRjNWU2ODQ1ZWM0NzkzYTdmYzJlNDkwZmZmNzU4NyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.clLZpjIYL9dA7rH4_VyEt5vMqrdkaClTeBwLMr0oLhQ)
This module contains the core components API. Check the Developers Guide for more information.
sourceSets {
commonMain.dependencies {
implementation("io.github.pablichjenkov:component-toolkit:0.6.11")
}
}
An extension on the core API to integrate platform plug-ins in an opinionated Application architecture based on manual dependency injection. Check the Developers Guide for more information.
sourceSets {
commonMain.dependencies {
implementation("io.github.pablichjenkov:macao-sdk-app:0.6.11")
}
}
Similar to macao-sdk-app but instead of manual DI it uses koin. Check the Developers Guide for more information.
sourceSets {
commonMain.dependencies {
implementation("io.github.pablichjenkov:macao-sdk-koin:0.6.11")
}
}
Built on top of Jetpack Lifecycle, ViewModel, Navigation and Koin, it offers the same extendable and flexible plugin architecture but using the Google recomended libraries instead. Check the Developers Guide for more information.
We welcome contributions from the community! If you have ideas for new features, bug fixes, or improvements, please open an issue or submit a pull request.
This is the App used to demo and test while developing components.
Android | iOS |
![]() |
![]() |
Deep Linking |
Deep Linking + Request/Result between Components |
Adaptive Layout |
![]() |
Web Browser |
![]() |
Hotel Booking An App that consumes Amadeus Self Sevice API. The Amadeus Self Sevice API is the company's public service to test the Hotel and Flight booking in their platform.
Android | iOS |
Web |