Building KV Files: A Blazing-Fast Web File Manager with macOS Miller Columns in Rust & React
Self-hosting a private file manager should be effortless. Yet most homelab users find themselves trapped in an awkward dilemma:
- Monolithic Cloud Suites (e.g. Nextcloud): Incredible feature breadth, but notoriously heavy—demanding 500MB+ idle RAM, PHP runtimes, Redis caches, background cron workers, and database containers.
- Minimalist Directory Viewers: Extremely lightweight, but lacking keyboard ergonomics, responsive media handling, and intuitive multi-depth navigation.
I wanted something that felt as fast and refined as macOS Finder's Miller Columns and as functional as Windows Explorer dual-pane Commander, while consuming virtually zero resources on my home server.
That is why I created KV Files (kv-file).
⚡ What Makes KV Files Different?
1. Cascading macOS Miller Columns
Instead of clicking back and forth through nested directories, KV Files renders cascading folder columns side-by-side with smooth horizontal scrolling.
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ [≡] 🔍 Quick Search (Ctrl+K) [ /storage/photos/2026/vacation ] [⟳] [Columns ▾] [⚙]│
├───────────────┬──────────────────┬──────────────────┬──────────────────┬───────────────┤
│ 📂 STORAGE │ 📁 2024 │ 📁 Summer │ 🖼️ beach.jpg │ 🖼️ beach.jpg │
│ ├─ photos │ 📁 2025 │ 📁 Roadtrip │ 🖼️ sunset.png │ 3.2 MB • JPEG │
│ ├─ documents │ 📁 2026 ──▶ │ 📁 Mountain │ 🎥 vlog.mp4 │ 4032 x 3024 │
│ └─ backups │ │ 📁 Vacation ──▶ │ 📄 notes.txt │ [Open] [Share]│
│ │ │ │ │ [Download] │
└───────────────┴──────────────────┴──────────────────┴──────────────────┴───────────────┘
You can navigate your entire disk using just arrow keys:
-
↑/↓: Move selection up and down. -
→: Expand folder into a fresh column. -
←: Back out to the parent column. - Space: Instant Quick Look preview for photos, 4K videos, markdown notes, code syntax highlighting, and PDFs.
2. Dual-Pane Commander Mode (Alt + S)
Need to organize and transfer files across different directories or drives? Press Alt + S to split the viewport into two synchronized panes. You can compare directories and copy (F5) or move (F6) files instantly.
3. Pure Rust (Axum + Tokio) Backend (~15 MB RAM)
The backend is written in Rust using the asynchronous Axum framework. It embeds the entire compiled React PWA frontend and an embedded SQLite database configured in WAL mode:
- Idles at roughly 15 MB of RAM.
- Saturates 10Gbps Ethernet links with non-blocking async I/O.
- Deploys as a single, standalone binary or Docker container.
4. Sub-Millisecond Real-Time Kernel Sync (inotify + WebSockets)
If files are added, modified, or removed on the host filesystem—whether via an SSH terminal session, an rsync script, or automated torrent downloaders—the Linux kernel's inotify subsystem fires an event. KV Files broadcasts this change over WebSockets to all connected browser tabs in milliseconds. No polling, no manual page refreshes.
5. Native Lockscreen Media Streaming (W3C Media Session)
When streaming music or video from your server, KV Files interfaces directly with the browser's W3C Media Session API:
- Full lockscreen controls on iOS (including the Dynamic Island).
- Rich notifications with album artwork and scrubbers on Android.
- Hardware media keys support on macOS and Windows keyboards.
6. Intelligent NAS Detection
KV Files automatically inspects filesystem mounting points and applies contextual badging for common homelab environments:
-
Synology DSM: Automatically hides
@eaDirindexing artifacts and highlights shared folders. - TrueNAS: Badges ZFS dataset pools.
- Unraid: Flags user shares and cache disks.
- "Simple Mode": A toggle switch designed for non-technical family members that hides internal system directories and dotfiles.
🚀 Quick Start with Docker
Deploy KV Files in under 30 seconds using Docker:
docker run -d \
--name kv-file \
-p 8080:8080 \
-v /your/storage/path:/data \
-v ./kv-file-data:/config \
vndangkhoa/kv-file:latest
Open http://localhost:8080 and start exploring your storage at lightning speed.
🔗 Check it Out on GitHub
KV Files is completely open source under the MIT license:
⭐ GitHub Repository: https://github.com/vndangkhoa/kv-file
🐳 Docker Hub: vndangkhoa/kv-file
Give it a spin on your server or NAS and let me know your thoughts!
Top comments (0)