{"id":13659264,"url":"https://github.com/vinceglb/FileKit","last_synced_at":"2025-04-24T12:31:17.167Z","repository":{"id":231611896,"uuid":"782211616","full_name":"vinceglb/FileKit","owner":"vinceglb","description":"Pick and save Files, Medias and Folder for Kotlin Multiplatform / KMP and Compose Multiplatform / CMP","archived":false,"fork":false,"pushed_at":"2025-04-19T21:59:24.000Z","size":2220,"stargazers_count":865,"open_issues_count":24,"forks_count":28,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-19T22:49:34.886Z","etag":null,"topics":["compose","compose-multiplatform","kmp","kotlin","kotlin-android","kotlin-ios","kotlin-js","kotlin-jvm","kotlin-macos","kotlin-multiplatform","kotlin-wasm"],"latest_commit_sha":null,"homepage":"https://filekit.mintlify.app","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vinceglb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-04T21:12:55.000Z","updated_at":"2025-04-19T21:58:59.000Z","dependencies_parsed_at":"2024-04-17T20:40:54.893Z","dependency_job_id":"162ac317-3aa7-4ec7-80b8-a3a41c29f9bb","html_url":"https://github.com/vinceglb/FileKit","commit_stats":null,"previous_names":["vinceglb/pickerkotlin","vinceglb/filekit"],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinceglb%2FFileKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinceglb%2FFileKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinceglb%2FFileKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinceglb%2FFileKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vinceglb","download_url":"https://codeload.github.com/vinceglb/FileKit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250628804,"owners_count":21461690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compose","compose-multiplatform","kmp","kotlin","kotlin-android","kotlin-ios","kotlin-js","kotlin-jvm","kotlin-macos","kotlin-multiplatform","kotlin-wasm"],"created_at":"2024-08-02T05:01:06.849Z","updated_at":"2025-04-24T12:31:17.141Z","avatar_url":"https://github.com/vinceglb.png","language":"Kotlin","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/78fbdb24-6210-4d41-afeb-57d199a743f8\" alt=\"FileKit for Kotlin Multiplatform and Compose Multiplatform\" /\u003e\n\n  \u003cbr\u003e\n\n  \u003ch1\u003eFileKit\u003c/h1\u003e\n  \u003cp\u003e🚀 A powerful cross-platform file operations library for Kotlin Multiplatform\u003c/p\u003e\n\n  \u003cdiv\u003e\n    \u003cimg src=\"https://img.shields.io/maven-central/v/io.github.vinceglb/filekit-core\" alt=\"FileKit Kotlin Maven Version\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Platform-Android-brightgreen.svg?logo=android\" alt=\"Badge Android\" /\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/Platform-iOS%20%2F%20macOS-lightgrey.svg?logo=apple\" alt=\"Badge iOS\" /\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/Platform-JVM-8A2BE2.svg?logo=openjdk\" alt=\"Badge JVM\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Platform-WASM%20%2F%20JS-yellow.svg?logo=javascript\" alt=\"Badge JS\" /\u003e\n  \u003c/div\u003e\n\n  \u003cbr\u003e\n\u003c/div\u003e\n\n## ✨ Features\n\n- 📱 **Cross-Platform Support**: Works seamlessly on Android, iOS, macOS, JVM (Windows, macOS, Linux), JS, and WASM\n- 🎯 **Native Experience**: Uses platform-native file pickers for the best user experience\n- 🪶 **Lightweight**: Minimal dependencies to keep your app fast and lean\n- 🔌 **Rich Integrations**: Works with Compose Multiplatform, Coroutines, kotlinx-io, Coil, and more\n- 📂 **Comprehensive File Operations**: Pick files, save documents, access photos, manage directories\n- 🎨 **Image Utilities**: Built-in image compression and gallery integration\n\n## 📚 Documentation\n\nVisit our [documentation](https://filekit.mintlify.app) to learn more: https://filekit.mintlify.app\n\n- [FileKit Introduction](https://filekit.mintlify.app/introduction)\n- [Getting Started Guide](https://filekit.mintlify.app/quickstart)\n- [Core API Documentation](https://filekit.mintlify.app/core/setup)\n- [Dialogs Documentation](https://filekit.mintlify.app/dialogs/setup)\n\n\u003e Migrate from FileKit 0.8 to 0.10 by following the [migration guide](https://filekit.mintlify.app/migrate-to-v0.10).\n\n## 🚀 Quick Start\n\n### Installation\n\n```kotlin\n// build.gradle.kts\ndependencies {\n    implementation(\"io.github.vinceglb:filekit-core:$version\")\n    implementation(\"io.github.vinceglb:filekit-dialogs:$version\")\n    implementation(\"io.github.vinceglb:filekit-dialogs-compose:$version\")\n    implementation(\"io.github.vinceglb:filekit-coil:$version\")\n}\n```\n\nFollow the [installation guide](https://filekit.mintlify.app/installation) to learn how to install and setup FileKit in your project.\n\n### Usage Examples\n\n```kotlin\n// Pick a file\nval file = FileKit.openFilePicker()\n\n// Pick multiple files\nval files = FileKit.openFilePicker(mode = FileKitMode.Multiple())\n\n// Pick only images\nval imageFile = FileKit.openFilePicker(type = FileKitType.Image)\n\n// Pick a directory\nval directory = FileKit.openDirectoryPicker()\n\n// Save a file\nval contentToSave = \"Hello FileKit!\"\nval file = FileKit.openFileSaver(suggestedName = \"document\", extension = \"txt\")\nfile?.writeString(contentToSave)\n\n// Work with files\nval myFile = FileKit.filesDir / \"document.pdf\"\nprintln(myFile.name)\nprintln(myFile.size())\nmyFile.writeString(\"Hello, World!\")\n\n// Image operations\nval compressedBytes = FileKit.compressImage(\n    bytes = imageFile.readBytes(),\n    quality = 80,\n    maxWidth = 1024,\n    maxHeight = 1024\n)\n```\n\nSee the [quickstart guide](https://filekit.mintlify.app/quickstart) to learn more about the different file operations and utilities available in FileKit.\n\n## 📦 Modular Structure\n\nFileKit is designed to be modular, allowing you to include only what you need:\n\n- **FileKit Core**: Basic file operations and the `PlatformFile` abstraction\n- **FileKit Dialogs**: File pickers and save dialogs\n- **FileKit Dialogs Compose**: Compose Multiplatform integration\n- **FileKit Coil**: Integration with Coil for image loading\n\n![FileKit Preview](https://github.com/vinceglb/FileKit/assets/24540801/e8a7bc49-41cc-4632-84c4-1013fd23dd76)\n\n## 🙏 Credits\n\nFileKit stands on the shoulders of giants. Special thanks to:\n- [compose-multiplatform-file-picker](https://github.com/Wavesonics/compose-multiplatform-file-picker)\n- [peekaboo](https://github.com/onseok/peekaboo)\n- [Calf](https://github.com/MohamedRejeb/Calf)\n- [jnafilechooser](https://github.com/steos/jnafilechooser)\n- [swing-jnafilechooser](https://github.com/DJ-Raven/swing-jnafilechooser)\n- [nativefiledialog](https://github.com/mlabbe/nativefiledialog)\n- [IFileDialogImp](https://github.com/dbwiddis/IFileDialogImp)\n- [IntelliJ Community Foundation](https://github.com/JetBrains/intellij-community/blob/master/platform/util/ui/src/com/intellij/ui/mac/foundation/Foundation.java)\n- [file_picker (flutter)](https://pub.dev/packages/file_picker)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003eMade with ❤️ by \u003ca href=\"https://github.com/vinceglb\"\u003eVince\u003c/a\u003e\u003c/p\u003e\n  \u003c!-- \u003cp\u003eIf you find FileKit helpful, please consider giving it a ⭐️\u003c/p\u003e --\u003e\n\u003c/div\u003e\n","funding_links":[],"categories":["Libraries","Multiplatform"],"sub_categories":["📁 File","Android samples"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinceglb%2FFileKit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvinceglb%2FFileKit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinceglb%2FFileKit/lists"}