Skip to content

vinceglb/FileKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FileKit for Kotlin Multiplatform and Compose Multiplatform

FileKit

πŸš€ A powerful cross-platform file operations library for Kotlin Multiplatform

FileKit Kotlin Maven Version Badge Android Badge iOS Badge JVM Badge JS

✨ Features

  • πŸ“± Cross-Platform Support: Works seamlessly on Android, iOS, macOS, JVM (Windows, macOS, Linux), JS, and WASM
  • 🎯 Native Experience: Uses platform-native file pickers for the best user experience
  • πŸͺΆ Lightweight: Minimal dependencies to keep your app fast and lean
  • πŸ”Œ Rich Integrations: Works with Compose Multiplatform, Coroutines, kotlinx-io, Coil, and more
  • πŸ“‚ Comprehensive File Operations: Pick files, save documents, access photos, manage directories
  • 🎨 Image Utilities: Built-in image compression and gallery integration

πŸš€ Who's Using FileKit

FileKit is trusted by developers building amazing cross-platform applications:

  • Heron - KMP Bluesky client using FileKit for image preview when uploading images or videos
  • Rush - Lyrics search app like Spotify
  • Composables SVG to Compose - Web tool to convert SVG to Compose code in seconds
  • Twine - A multiplatform RSS reader built using Kotlin and Compose
  • Butler - AI Chat App supporting image uploads across iOS, Android, Desktop, and WasmJS
  • PixelSafe - Free steganography tool for PNG images
  • AndroidToolKit - Desktop tools applicable to Android development, supporting Windows, Mac and Linux
  • Splital - Easily track and manage your shared expenses, quickly, simply, and hassle-free on Android and iOS
  • Tracker - Manager for Bluesky - Track and manage your Bluesky followers, unfollowers, blockers, and post analytics β€” all in real time! On Android and iOS.
  • Parrot Workout Tracker - The ultimate fitness log and exercise tracker to crush your goals on Android and iOS.
  • Ashampoo Photo Organizer - Photo management software for organizing and searching large photo collections
  • AB Download Manager - A Download Manager that speeds up your downloads
  • Edconv - A user-friendly interface that simplifies the power of FFmpeg. It's designed for fast and efficient conversion of video and audio files.

Using FileKit in your project? Let us know!

πŸ“š Documentation

Visit our documentation to learn more: https://filekit.mintlify.app

Migrate from FileKit 0.8 to 0.10 by following the migration guide.

πŸš€ Quick Start

Installation

// build.gradle.kts
dependencies {
    implementation("io.github.vinceglb:filekit-core:$version")
    implementation("io.github.vinceglb:filekit-dialogs:$version")
    implementation("io.github.vinceglb:filekit-dialogs-compose:$version")
    implementation("io.github.vinceglb:filekit-coil:$version")
}

Follow the installation guide to learn how to install and setup FileKit in your project.

Usage Examples

// Pick a file
val file = FileKit.openFilePicker()

// Pick multiple files
val files = FileKit.openFilePicker(mode = FileKitMode.Multiple())

// Pick only images
val imageFile = FileKit.openFilePicker(type = FileKitType.Image)

// Pick a directory
val directory = FileKit.openDirectoryPicker()

// Save a file
val contentToSave = "Hello FileKit!"
val file = FileKit.openFileSaver(suggestedName = "document", extension = "txt")
file?.writeString(contentToSave)

// Work with files
val myFile = FileKit.filesDir / "document.pdf"
println(myFile.name)
println(myFile.size())
myFile.writeString("Hello, World!")

// Image operations
val compressedBytes = FileKit.compressImage(
    bytes = imageFile.readBytes(),
    quality = 80,
    maxWidth = 1024,
    maxHeight = 1024
)

See the quickstart guide to learn more about the different file operations and utilities available in FileKit.

πŸ“¦ Modular Structure

FileKit is designed to be modular, allowing you to include only what you need:

  • FileKit Core: Basic file operations and the PlatformFile abstraction
  • FileKit Dialogs: File pickers and save dialogs
  • FileKit Dialogs Compose: Compose Multiplatform integration
  • FileKit Coil: Integration with Coil for image loading

FileKit Preview

πŸ™ Credits

FileKit stands on the shoulders of giants. Special thanks to:


Made with ❀️ by Vince

About

Pick and save Files, Medias and Folder for Kotlin Multiplatform / KMP and Compose Multiplatform / CMP

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Contributors 31

Languages