JetCo is a ready-to-go Compose library building awesome UI components for both Android and KMP (Kotlin Multiplatform). π‘
β¨ Beautiful β’ β‘ Fast β’ π Cross-Platform β’ π¨ Customizable
Your ultimate Open-Source partner for crafting visually stunning, interactive, and efficient UI components across multiple platforms including Android, iOS, JVM, JS, and WASM. Designed specifically for Jetpack Compose enthusiasts, JetCo is here to make your life easier, your apps prettier, and your users happier. π
π§ KMP Documentation Pipeline: Full Kotlin Multiplatform documentation is currently in development and will be live soon! For now, KMP projects work identically to Android projects with the same component functionality. The only differences are the Gradle implementation and import statements shown below. Stay tuned! π
graph TB
A("JetCo Root Repository") --> B("JetCoKMP")
A --> C("jetco-android")
A --> D("assets")
A --> E("LICENSE & README")
B --> B1("composeApp")
B --> B2("jetco - KMP Library")
B --> B3("iosApp")
B --> B4("gradle")
B1 --> B1a("androidMain")
B1 --> B1b("commonMain")
B1 --> B1c("iosMain")
B1 --> B1d("jvmMain")
B1 --> B1e("jsMain")
B1 --> B1f("wasmJsMain")
B2 --> B2a("commonMain")
B2 --> B2b("androidMain")
B2 --> B2c("iosMain")
B2 --> B2d("jvmMain")
B2 --> B2e("Tests")
B2a --> B2a1("Charts")
B2a --> B2a2("Cards")
B2a --> B2a3("Steppers")
B2a --> B2a4("Controls")
C --> C1("JetCoLibrary")
C1 --> C1a("app")
C1 --> C1b("jetco/ui")
C1 --> C1c("assets/images")
C1 --> C1d("gradle & build")
C1b --> C1b1("Charts")
C1b --> C1b2("Cards")
C1b --> C1b3("Steppers")
C1b --> C1b4("Controls")
D --> D1("images")
%% Styling with light blue theme, blue borders, and increased spacing
classDef default fill:#E3F2FD,stroke:#1976D2,stroke-width:2px,color:#000000,rx:15,ry:15
classDef rootStyle fill:#BBDEFB,stroke:#0D47A1,stroke-width:3px,color:#000000,rx:15,ry:15
classDef kmpStyle fill:#E1F5FE,stroke:#0277BD,stroke-width:2px,color:#000000,rx:15,ry:15
classDef androidStyle fill:#E8F5E8,stroke:#2E7D32,stroke-width:2px,color:#000000,rx:15,ry:15
classDef libraryStyle fill:#FFF3E0,stroke:#E65100,stroke-width:2px,color:#000000,rx:15,ry:15
classDef componentStyle fill:#F3E5F5,stroke:#6A1B9A,stroke-width:2px,color:#000000,rx:15,ry:15
class A rootStyle
class B,B1,B2,B3,B4 kmpStyle
class C,C1,C1a,C1c,C1d androidStyle
class B2a,B2b,B2c,B2d,C1b libraryStyle
class B2a1,B2a2,B2a3,B2a4,C1b1,C1b2,C1b3,C1b4 componentStyle
Write once, run everywhere! JetCo supports all major platforms through Kotlin Multiplatform
Material Design 3 Native performance & gestures |
Native iOS Feel Cupertino design system |
Cross-platform UI Windows, macOS, Linux |
Modern Web Apps PWA ready, responsive |
Click to expand Android setup
Add this to your module's build.gradle.kts
:
dependencies {
implementation("com.developerstring.jetco:ui:1.0.0-beta.6")
}
π₯ Recommended - KMP Setup (Click to expand)
Add this to your commonMain
dependencies in build.gradle.kts
:
commonMain.dependencies {
implementation("com.developerstring.jetco-kmp:ui:1.0.0-beta.7")
}
β‘ Quick Start: Use the same component examples below for both Android Native and Kotlin Multiplatform! All functionality is identical.
Full configuration example
kotlin {
// Android target
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = "1.8"
}
}
}
// iOS targets
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach { iosTarget ->
iosTarget.binaries.framework {
baseName = "ComposeApp"
isStatic = true
}
}
// Desktop target
jvm("desktop")
// Web target
js(IR) {
moduleName = "composeApp"
browser {
commonWebpackConfig {
outputFileName = "composeApp.js"
}
}
binaries.executable()
}
// WASM target
wasmJs {
moduleName = "composeApp"
browser {
commonWebpackConfig {
outputFileName = "composeApp.js"
}
}
binaries.executable()
}
sourceSets {
commonMain.dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
// π¨ Add JetCo KMP
implementation("com.developerstring.jetco-kmp:ui:1.0.0-beta.7")
}
androidMain.dependencies {
implementation(libs.compose.ui.tooling.preview)
implementation(libs.androidx.activity.compose)
}
iosMain.dependencies {
// iOS specific dependencies
}
desktopMain.dependencies {
implementation(compose.desktop.currentOs)
}
}
}
Component | Description | Platforms | Status |
---|---|---|---|
ποΈ Ticket Card | Cinema-style cards with cutout design and dashed dividers | β |
Component | Description | Platforms | Status |
---|---|---|---|
π Switch Button | Animated toggle switch with custom styling | β |
π§ Coming Soon: Date Pickers, Floating Action Buttons, Bottom Sheets, and more!
π Import statements for different setups
// π For KMP projects (Recommended)
import com.developerstring.jetco_kmp.charts.piechart.PieChart
import com.developerstring.jetco_kmp.cards.ticket.TicketCard
import com.developerstring.jetco_kmp.components.stepper.VerticalStepper
import com.developerstring.jetco_kmp.components.button.SwitchButton
// π€ For Android-only projects
import com.developerstring.jetco.ui.charts.piechart.PieChart
import com.developerstring.jetco.ui.cards.ticket.TicketCard
import com.developerstring.jetco.ui.components.stepper.VerticalStepper
import com.developerstring.jetco.ui.components.button.SwitchButton
π‘ Note: All components have identical functionality and API across both Android and KMP versions. Only the import path and Gradle dependency differ!
Pie Chart
@Composable
fun MyAwesomeScreen() {
// π¨ Use any JetCo component across all platforms!
PieChart(
data = listOf(
PieChartData(
label = "Android",
value = 40f,
color = Color(0xFF3DDC84)
),
PieChartData(
label = "iOS",
value = 30f,
color = Color(0xFF007AFF)
),
PieChartData(
label = "Web",
value = 20f,
color = Color(0xFFFF6B35)
),
PieChartData(
label = "Desktop",
value = 10f,
color = Color(0xFFFFD23F)
)
),
modifier = Modifier
.size(300.dp)
.padding(16.dp),
animationDuration = 1000,
showLabels = true,
centerText = "JetCo"
)
}
Ticket Card
@Composable
fun TicketExample() {
TicketCard(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp),
backgroundColor = Color(0xFF6200EE),
cornerRadius = 16.dp,
cutoutRadius = 24.dp
) {
Column(
modifier = Modifier.padding(20.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "π¬ Movie Ticket",
style = MaterialTheme.typography.headlineSmall,
color = Color.White
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = "JetCo: The Movie",
style = MaterialTheme.typography.bodyLarge,
color = Color.White.copy(alpha = 0.8f)
)
}
}
}
Animated Switch Button
@Composable
fun SwitchExample() {
var isChecked by remember { mutableStateOf(false) }
SwitchButton(
checked = isChecked,
onCheckedChange = { isChecked = it },
modifier = Modifier.padding(16.dp),
colors = SwitchButtonColors(
checkedColor = Color(0xFF4CAF50),
uncheckedColor = Color(0xFFE0E0E0),
thumbColor = Color.White
),
animationDuration = 300
)
}
π₯ Coming Soon: Dedicated KMP documentation with platform-specific examples and deployment guides!
Feature | Description | Benefit |
---|---|---|
π Kotlin Multiplatform | One codebase for Android, iOS, Web, Desktop, and WASM | 50% less development time |
ποΈ Modern UI Components | Charts, cards, steppers with beautiful animations | Professional look out-of-the-box |
β‘ Compose Integration | Seamless with Jetpack Compose and Compose Multiplatform | Native performance everywhere |
π οΈ Infinite Customization | Theme every pixel to match your brand identity | Unique, branded experiences |
π Performance Optimized | Lightweight, efficient, 60fps smooth animations | Happy users, better retention |
π± Platform-Specific | Tailored experiences respecting platform conventions | Feels native on every platform |
π Future-Ready | Built for the next generation of Compose | Investment protection |
π Open Source | MIT licensed, community-driven development | Free forever, transparent |
π Be part of something amazing!
We're always looking for passionate developers to join our mission of making beautiful UI accessible to everyone.
Check out our Contributing Guide and Good First Issues!
If JetCo helped you build something amazing, consider:
β Starring the repo β’ π¦ Sharing on Twitter β’ πΌ Sharing on LinkedIn
Made with β€οΈ by the JetCo team