Skip to content

vinceglb/FileKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,097 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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.
  • Gluky, Refy, Pandoro, Neutron, and Brownie - Self-hosted applications using FileKit for profile pictures and file uploads
  • Keyguard - Alternative client for the Bitwarden platform and KeePass (KDBX)
  • HowMarket - Cross-platform Point of Sale (PoS) software for small and growing businesses, using FileKit to upload and manage product and user images
  • Authmeister - Multiplatform OTP authenticator supporting TOTP and HOTP, available on Android and iOS
  • Dancing Decibels - Multi-platform app for music festivals and live entertainment experiences, using FileKit for image imports and schedule import/export
  • Kai - OpenClaw alternative in your pocket, using FileKit in production across Android, iOS, desktop, and web

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

Languages