Voni is a versatile Kotlin Multiplatform library designed to simplify your UI development process. It provides a collection of essential UI components, including powerful charting tools and helpers for managing screen orientation across Android, iOS, Desktop (JVM), and Web (Wasm).
- 🎨 UI Components: A set of ready-to-use, customizable UI components for Compose Multiplatform
- 📊 Charting: Powerful and easy-to-use charting components to visualize your data
- 📱 Orientation Helpers: Utilities to easily manage and respond to screen orientation changes
- 🌐 Kotlin Multiplatform: Written in pure Kotlin, works seamlessly across all platforms
- ✅ Android
- ✅ iOS (iosX64, iosArm64, iosSimulatorArm64)
- ✅ Desktop (JVM)
- ✅ Web (Wasm-JS)
Add the dependency to your build.gradle.kts:
dependencies {
implementation("tz.co.pesalock:voni:1.0.1")
}Add to your libs.versions.toml:
[versions]
voni = "1.0.1"
[libraries]
voni = { module = "tz.co.pesalock:voni", version.ref = "voni" }Then use in your build.gradle.kts:
dependencies {
implementation(libs.voni)
}For Android, ensure you have the minimum SDK version:
android {
defaultConfig {
minSdk = 24 // or higher
}
}For iOS, no additional setup is required.
For Desktop (JVM), ensure you have Java 11 or higher.
For Web (Wasm), enable the experimental Wasm target in your build.gradle.kts:
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
kotlin {
@OptIn(ExperimentalWasmDsl::class)
wasmJs {
browser()
}
}Here's a simple example to get you started:
import androidx.compose.runtime.Composable
import tz.co.pesalock.voni.*
@Composable
fun App() {
// Your Voni components here
// Example: Charts, orientation-aware layouts, etc.
}For local development or when contributing to the library, you can include it as a composite build.
-
Add the submodule:
git submodule add https://github.com/Pesalock/Voni.git voni
-
Include the build in
settings.gradle.kts:includeBuild("voni") -
Add the dependency:
implementation("tz.co.pesalock:voni:1.0.1")Gradle will automatically use your local version instead of the remote one.
If Voni is in your project's repository structure:
// settings.gradle.kts
includeBuild("libs/voni") // adjust path as neededgit clone https://github.com/Pesalock/Voni.git
cd Voni
./gradlew buildDetailed documentation and examples are coming soon. For now, explore the source code and check the examples in the repository.
- Comprehensive documentation with examples
- Additional chart types
- More UI components
- Sample applications for each platform
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please make sure to update tests as appropriate and follow the existing code style.
- Issues: GitHub Issues
- Email: software@pesalock.co.tz
- Website: pesalock.co.tz
Voni is licensed under the Apache License, Version 2.0.
Copyright 2025 Pesalock Africa Limited
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Built with ❤️ by Pesalock Africa Limited
Note: This library is in early development (version 1.0.1). APIs may change in future releases.