diff --git a/README.md b/README.md
index 037945f5..5e971dc4 100644
--- a/README.md
+++ b/README.md
@@ -115,9 +115,9 @@ JVM desktop runs on Windows, macOS, and Linux. The Linux and Windows columns are
## Who's using FileKit
-FileKit ships in production apps on mobile, desktop, and the web, including [Ashampoo Photo Organizer](https://www.ashampoo.com/en-us/photo-organizer), [Keyguard](https://github.com/AChep/keyguard-app), [AB Download Manager](https://github.com/amir1376/ab-download-manager/), [Twine](https://github.com/msasikanth/twine), [Heron](https://github.com/tunjid/heron), and [Composables SVG to Compose](https://composables.com/svg-to-compose).
+FileKit is used by [Thunderbird](https://github.com/thunderbird/thunderbird-android), [Leboncoin's Spark design system](https://github.com/leboncoin/spark-android), [Gradle Client](https://github.com/gradle/gradle-client), [Blockstream Green](https://github.com/Blockstream/green_android), [Square's Workflow trace viewer](https://github.com/square/workflow-kotlin), the [Android FHIR SDK](https://github.com/ohs-foundation/android-fhir), [Animeko](https://github.com/open-ani/animeko), and [StreetComplete](https://github.com/streetcomplete/StreetComplete).
-See every project in the [showcase](https://filekit.mintlify.app/showcase), or [add your project](https://github.com/vinceglb/FileKit/discussions/343).
+See how each project uses it in the [showcase](https://filekit.mintlify.app/showcase), read what developers say on the [wall of love](https://filekit.mintlify.app/wall-of-love), or [add your project](https://github.com/vinceglb/FileKit/discussions/343).
## Contributing
diff --git a/docs/docs.json b/docs/docs.json
index 01e26370..3bde7b35 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -70,11 +70,17 @@
"cookbook/zip-archives"
]
},
+ {
+ "group": "Community",
+ "pages": [
+ "showcase",
+ "wall-of-love"
+ ]
+ },
{
"group": "Resources",
"pages": [
- "roadmap",
- "showcase"
+ "roadmap"
]
}
]
diff --git a/docs/introduction.mdx b/docs/introduction.mdx
index 68a7b8b8..dab095a9 100644
--- a/docs/introduction.mdx
+++ b/docs/introduction.mdx
@@ -5,6 +5,9 @@ description: Pick, save, read, and write files with one Kotlin Multiplatform API
og:title: FileKit
---
+import { QuoteGrid, QuoteCard } from '/snippets/quote-card.jsx'
+import { UsedBy } from '/snippets/used-by.jsx'
+
-## Used in production
-
- | Music streaming app. Its Kotlin Multiplatform rewrite picks the download and cache folders, playlist covers, and plugin files | [Source](https://github.com/team-spotube/spotube/blob/master/composeApp/build.gradle.kts) |
+| [Animeko](https://github.com/open-ani/animeko) |
| Anime tracking and streaming app: image attachments in comments, avatar upload, saving images, desktop cache folder | [Source](https://github.com/open-ani/animeko/blob/main/app/shared/application/build.gradle.kts) |
+| [AB Download Manager](https://github.com/amir1376/ab-download-manager) |
| Desktop download manager: download location folder picker and custom sound files | [Source](https://github.com/amir1376/ab-download-manager/blob/master/desktop/app/build.gradle.kts) |
+| [StreetComplete](https://github.com/streetcomplete/StreetComplete) |
| OpenStreetMap editor for Android and iOS: note photos, image compression, sharing log files | [Source](https://github.com/streetcomplete/StreetComplete/blob/master/app/build.gradle.kts) |
+| [MuJing](https://github.com/tangshimin/MuJing) |
| Desktop app to learn English words from movies and documents: opens subtitle, video, and vocabulary files | [Source](https://github.com/tangshimin/MuJing/blob/master/build.gradle.kts) |
+| [AutoDev Xiuper](https://github.com/phodal/auto-dev) |
| AI coding app for desktop, mobile, and web: file and directory pickers, web downloads | [Source](https://github.com/phodal/auto-dev/blob/master/mpp-ui/build.gradle.kts) |
+| [Keyguard](https://github.com/AChep/keyguard-app) |
| Bitwarden and KeePass client: open and save dialogs for vaults and attachments on desktop | [Source](https://github.com/AChep/keyguard-app/blob/master/common/build.gradle.kts) |
+| [CrossPaste](https://github.com/CrossPaste/crosspaste-desktop) |
| Cross-device clipboard sync: storage path, import, and export dialogs | [Source](https://github.com/CrossPaste/crosspaste-desktop/blob/main/app/build.gradle.kts) |
+| [Twine](https://github.com/msasikanth/twine) |
| Multiplatform RSS reader: OPML feed import and export | [Source](https://github.com/msasikanth/twine/blob/main/core/data/build.gradle.kts) |
+| [Husi](https://github.com/xchacha20-poly1305/husi) |
| Multiplatform proxy tool: backup import and export, saving QR codes | [Source](https://github.com/xchacha20-poly1305/husi/blob/dev/composeApp/build.gradle.kts) |
+| [Bifrost](https://github.com/zacharee/Bifrost) |
| Samsung firmware downloader: file and folder pickers, save dialog | [Source](https://github.com/zacharee/Bifrost/blob/master/common/build.gradle.kts) |
+| [Tomato](https://github.com/nsh07/Tomato) |
| Pomodoro timer: backup and restore files | [Source](https://github.com/nsh07/Tomato/blob/dev/shared/build.gradle.kts) |
+| [qBitController](https://github.com/Bartuzen/qBitController) |
| qBittorrent remote control: adds torrent files and exports data | [Source](https://github.com/Bartuzen/qBitController/blob/master/composeApp/build.gradle.kts) |
+| [Kai](https://github.com/SimonSchubert/Kai) |
| AI assistant on Android, iOS, desktop, and web: chat attachments, file export, sandbox file browser | [Source](https://github.com/SimonSchubert/Kai/blob/main/composeApp/build.gradle.kts) |
+| [PodAura](https://github.com/SkyD666/PodAura) |
| Podcast and RSS app: OPML import and export, media folders, sharing | [Source](https://github.com/SkyD666/PodAura/blob/master/shared/build.gradle.kts) |
+| [Grit](https://github.com/shub39/Grit) |
| Habit tracker: backup export and restore | [Source](https://github.com/shub39/Grit/blob/master/shared/logic/build.gradle.kts) |
+| [Bangumi for CMP](https://github.com/xiaoyvyv/bangumi) |
| Unofficial bangumi.tv client: image pickers and Coil loading | [Source](https://github.com/xiaoyvyv/bangumi/blob/main/buildSrc/src/main/kotlin/bgm.library.gradle.kts) |
+| [Rush](https://github.com/shub39/Rush) |
| Lyrics search app: backups, background images, saving lyrics cards | [Source](https://github.com/shub39/Rush/blob/master/shared/ui/build.gradle.kts) |
+| [IReader](https://github.com/IReaderorg/IReader) |
| Novel reader: storage folder picker on desktop and iOS | [Source](https://github.com/IReaderorg/IReader/blob/master/presentation/build.gradle.kts) |
+| [Hammer Editor](https://github.com/Darkrock-Studios/hammer-editor) |
| Story and novel writing tool: imports, exports, project images | [Source](https://github.com/Darkrock-Studios/hammer-editor/blob/develop/composeUi/build.gradle.kts) |
+| [Edconv](https://github.com/edneyosf/Edconv) |
| FFmpeg interface for video and audio conversion: picks input media files | [Source](https://github.com/edneyosf/Edconv/blob/main/composeApp/build.gradle.kts) |
+| [kitshn](https://github.com/kitshn-app/kitshn) |
| Tandoor recipes client for Android, iOS, and desktop: recipe photo picker | [Source](https://github.com/kitshn-app/kitshn/blob/main/shared/build.gradle.kts) |
+| [Morphe Desktop](https://github.com/MorpheApp/morphe-desktop) |
| Desktop APK patching tool: file and directory pickers | [Source](https://github.com/MorpheApp/morphe-desktop/blob/main/build.gradle.kts) |
+| [Heron](https://github.com/tunjid/heron) |
| Bluesky client: media picker for posts and profiles, Coil previews, saving images to the gallery | [Source](https://github.com/tunjid/heron/blob/main/ui/media/build.gradle.kts) |
+| [Askimo](https://github.com/askimo-ai/askimo) |
| AI desktop app: file and folder pickers, file saver | [Source](https://github.com/askimo-ai/askimo/blob/main/desktop-shared/build.gradle.kts) |
+| [Komelia](https://github.com/Snd-R/Komelia) |
| Komga media client: poster uploads, fonts, offline downloads, drag and drop | [Source](https://github.com/Snd-R/Komelia/blob/main/komelia-ui/build.gradle.kts) |
+| [Flocon](https://github.com/openflocon/Flocon) |
| Desktop debugging companion for Android and KMP apps: CSV, Markdown, and image exports | [Source](https://github.com/openflocon/Flocon/blob/main/FloconDesktop/composeApp/build.gradle.kts) |
+| [Pixelix](https://github.com/ghostbyte-dev/pixelix) |
| Pixelfed client: image and video picker in the post editor | [Source](https://github.com/ghostbyte-dev/pixelix/blob/dev/sharedUI/build.gradle.kts) |
+| [AndroidToolKit](https://github.com/LazyIonEs/AndroidToolKit) |
| Desktop tools for Android developers: file and directory pickers | [Source](https://github.com/LazyIonEs/AndroidToolKit/blob/main/shared/build.gradle.kts) |
+| [DevAnalyzer](https://github.com/Coding-Meet/DevAnalyzer) |
| Project analysis tool for developers: picks the project directory to analyze | [Source](https://github.com/Coding-Meet/DevAnalyzer/blob/main/composeApp/build.gradle.kts) |
+| [PixelSafe](https://github.com/StefanOltmann/pixelsafe) |
| Steganography tool for PNG images: picks the image and saves the result | [Source](https://github.com/StefanOltmann/pixelsafe/blob/main/app/build.gradle.kts) |
+| [Butler](https://github.com/HLCaptain/butler) |
| AI chat app: picks chat attachments | [Source](https://github.com/HLCaptain/butler/blob/master/composeApp/feature/chat/build.gradle.kts) |
+| [Gluky](https://github.com/N7ghtm4r3/Gluky-Clients), [Refy](https://github.com/N7ghtm4r3/Refy-Clients), [Pandoro](https://github.com/N7ghtm4r3/Pandoro-Clients), [Neutron](https://github.com/N7ghtm4r3/Neutron-Clients) | | Self-hosted apps: profile pictures and image uploads | [Gluky](https://github.com/N7ghtm4r3/Gluky-Clients/blob/main/composeApp/build.gradle.kts), [Refy](https://github.com/N7ghtm4r3/Refy-Clients/blob/main/composeApp/build.gradle.kts), [Pandoro](https://github.com/N7ghtm4r3/Pandoro-Clients/blob/main/composeApp/build.gradle.kts), [Neutron](https://github.com/N7ghtm4r3/Neutron-Clients/blob/main/composeApp/build.gradle.kts) |
+
+### Libraries
+
+| Library | Stars | How it uses FileKit | Source |
+| --- | --- | --- | --- |
+| [ComposeMediaPlayer](https://github.com/kdroidFilter/ComposeMediaPlayer) |
| Media player for Compose Multiplatform: opens a `PlatformFile` in the player | [Source](https://github.com/kdroidFilter/ComposeMediaPlayer/blob/master/mediaplayer/build.gradle.kts) |
+| [kmpalette](https://github.com/jordond/kmpalette) |
| Color palettes from images: builds a palette from a `PlatformFile` | [Source](https://github.com/jordond/kmpalette/blob/main/extensions-file/build.gradle.kts) |
+
+## Commercial and closed-source apps
+
+The developers of these apps shared how they use FileKit in the [showcase discussion](https://github.com/vinceglb/FileKit/discussions/343).
+
+| App | How it uses FileKit | Source |
+| --- | --- | --- |
+| [Ashampoo Photo Organizer](https://www.ashampoo.com/en-us/photo-organizer-free) | Photo management for large collections | [Discussion post](https://github.com/vinceglb/FileKit/discussions/343#discussioncomment-13911389) |
+| [Splital](https://splital.com/) | Shared expenses app on [Android](https://play.google.com/store/apps/details?id=com.splital.project) and [iOS](https://apps.apple.com/us/app/splital-settle-up-easily/id6501984581): receipt and profile photos, image compression, PDF and CSV export | [Discussion post](https://github.com/vinceglb/FileKit/discussions/343#discussioncomment-13923299) |
+| [Tracker for Bluesky](https://play.google.com/store/apps/details?id=com.bluesky.followers.analyzer) | Bluesky follower analytics on [Android](https://play.google.com/store/apps/details?id=com.bluesky.followers.analyzer) and [iOS](https://apps.apple.com/us/app/tracker-manager-for-bluesky/id6740998282): JSON export and import to move data between phones | [Discussion post](https://github.com/vinceglb/FileKit/discussions/343#discussioncomment-13936833) |
+| [Parrot Workout Tracker](https://parrotworkouttracker.com/) | Fitness log on [Android](https://play.google.com/store/apps/details?id=de.kreiniker.parrotworkouttracker) and [iOS](https://apps.apple.com/us/app/workout-tracker-log-parrot/id6741729053): data and routine import and export, sharing workout images | [Discussion post](https://github.com/vinceglb/FileKit/discussions/343#discussioncomment-13960874) |
+| [Authmeister](https://monoroh.com/authmeister) | OTP authenticator on [Android](https://play.google.com/store/apps/details?id=com.kopylovis.authmeister) and [iOS](https://apps.apple.com/us/app/authmeister/id6742833866) | [Discussion post](https://github.com/vinceglb/FileKit/discussions/343#discussioncomment-15861152) |
+| [Dancing Decibels](https://www.dancingdecibels.com) | Music festival app: artist image imports, schedule import and export | [Discussion post](https://github.com/vinceglb/FileKit/discussions/343#discussioncomment-15865180) |
+| [Composables SVG to Compose](https://composables.com/svg-to-compose) | Web tool to convert SVG to Compose code. Its Compose version used FileKit to pick files | [Discussion post](https://github.com/vinceglb/FileKit/discussions/343#discussioncomment-13905300) |
## Add your project
-Using FileKit in your project? Share it in the [showcase discussion](https://github.com/vinceglb/FileKit/discussions/343) and it can be added to this page.
+Using FileKit in your project? Share it in the [showcase discussion](https://github.com/vinceglb/FileKit/discussions/343) with a link to the code or a short note on how you use FileKit, and it can be added to this page. See what developers say on the [wall of love](/wall-of-love).
diff --git a/docs/snippets/quote-card.jsx b/docs/snippets/quote-card.jsx
new file mode 100644
index 00000000..fc40cde7
--- /dev/null
+++ b/docs/snippets/quote-card.jsx
@@ -0,0 +1,37 @@
+// Quote cards for the wall of love and the introduction page. Styles live in /style.css (`.fk-quote*`).
+// Usage:
+// import { QuoteGrid, QuoteCard } from '/snippets/quote-card.jsx'
+//
{quote}+
+ ) : (
+
+ )}
+
+ {name}
+ {role ? {role} : null}
+
+
+
+ {handle ? `${handle} on ` : ''}{platform}, {date}
+
+